VDS Sunucuya SSH ile Bağlanma Rehberi (PuTTY & Terminal)
Linux VDS sunucunuza SSH ile bağlanma adımları: PuTTY, Terminal, anahtar tabanlı kimlik doğrulama, Path Panel firewall kuralı ve güvenlik ipuçları.
Nginx ve Apache web sunucusu kurulumu, karşılaştırma, sanal host (virtual host) yapılandırma, SSL/TLS temelleri ve Linux sunucuda web servisi yönetimi rehberi.
Nginx ve Apache, dünya genelinde en yaygın kullanılan iki web sunucusudur. Her ikisi de Linux sunucularda web uygulamaları, statik dosyalar ve reverse proxy olarak kullanılabilir. Bu rehberde her iki sunucunun kurulumunu, temel yapılandırmasını ve sanal host oluşturmayı ele alacağız.
| Özellik | Nginx | Apache |
|---|---|---|
| Mimari | Asenkron, event-driven | Process/thread tabanlı |
| Statik dosya | Çok hızlı | Daha yavaş |
| Dinamik içerik | Reverse proxy gerektirir | Yerleşik modüller |
| Bellek kullanımı | Düşük | Daha yüksek |
| Yapılandırma | Daha basit | .htaccess desteği |
| Kullanım alanı | Yüksek trafikli siteler | PHP uygulamaları |
Yüksek trafikli statik içerik veya reverse proxy için Nginx; PHP tabanlı uygulamalar (WordPress, Laravel) için Apache tercih edilir. İkisi birlikte de kullanılabilir: Nginx önde reverse proxy, Apache arkada uygulama sunucusu olarak.
# Paket listesini güncelle
sudo apt update
# Nginx kur
sudo apt install nginx -y
# Servisi başlat ve etkinleştir
sudo systemctl start nginx
sudo systemctl enable nginx
# Durumu kontrol et
sudo systemctl status nginx
# EPEL deposunu ekle
sudo dnf install epel-release -y
# Nginx kur
sudo dnf install nginx -y
# Servisi başlat ve etkinleştir
sudo systemctl start nginx
sudo systemctl enable nginx
# Yapılandırmayı test et
sudo nginx -t
# Yapılandırmayı yeniden yükle (downtime yok)
sudo systemctl reload nginx
# Servisi yeniden başlat
sudo systemctl restart nginx
# Nginx sürümünü göster
nginx -v
Nginx'te her site için /etc/nginx/sites-available/ altında ayrı bir yapılandırma dosyası oluşturulur.
# Yapılandırma dosyası oluştur
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
# PHP-FPM için
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
# Gizli dosyalara erişimi engelle
location ~ /\.ht {
deny all;
}
# Log dosyaları
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
# Siteyi etkinleştir
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
# Web dizinini oluştur
sudo mkdir -p /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com
# Yapılandırmayı test et ve yeniden yükle
sudo nginx -t && sudo systemctl reload nginx
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
# Apache kur
sudo apt update
sudo apt install apache2 -y
# Servisi başlat ve etkinleştir
sudo systemctl start apache2
sudo systemctl enable apache2
# Durumu kontrol et
sudo systemctl status apache2
# Apache (httpd) kur
sudo dnf install httpd -y
# Servisi başlat ve etkinleştir
sudo systemctl start httpd
sudo systemctl enable httpd
# Yapılandırmayı test et
sudo apachectl configtest
# Yapılandırmayı yeniden yükle
sudo systemctl reload apache2
# Modül etkinleştir
sudo a2enmod rewrite
sudo a2enmod ssl
# Site etkinleştir/devre dışı bırak
sudo a2ensite example.com
sudo a2dissite 000-default
# Yapılandırma dosyası oluştur
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/html
<Directory /var/www/example.com/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
# Web dizinini oluştur
sudo mkdir -p /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com
# Siteyi etkinleştir
sudo a2ensite example.com.conf
# Yapılandırmayı test et ve yeniden yükle
sudo apachectl configtest && sudo systemctl reload apache2
Ücretsiz SSL sertifikası için Certbot kullanın:
# Certbot kur
sudo apt install certbot -y
# Nginx için
sudo apt install python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
# Apache için
sudo apt install python3-certbot-apache -y
sudo certbot --apache -d example.com -d www.example.com
# Otomatik yenilemeyi test et
sudo certbot renew --dry-run
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/example.com/html;
index index.html;
}
# HTTP'yi HTTPS'e yönlendir
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
# ufw ile HTTP ve HTTPS'e izin ver
sudo ufw allow 'Nginx Full'
# veya
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Apache için
sudo ufw allow 'Apache Full'
REXE sunucularında Path Panel firewall'undan da HTTP (80) ve HTTPS (443) portlarını açmayı unutmayın.
Nginx ve Apache, farklı kullanım senaryoları için güçlü web sunucularıdır. Nginx yüksek performanslı statik içerik ve reverse proxy için idealken, Apache PHP uygulamaları ve .htaccess tabanlı yapılandırmalar için tercih edilir. Her iki sunucuda da sanal host yapılandırması ile birden fazla domain aynı sunucuda barındırılabilir.
Yüksek trafikli siteler, statik içerik veya reverse proxy için Nginx daha iyi performans sunar. WordPress, Laravel gibi PHP uygulamaları için Apache daha kolay yapılandırılır (.htaccess desteği). İkisini birlikte kullanmak da mümkündür: Nginx önde, Apache arkada.
Sanal host (virtual host) yapılandırması ile mümkündür. Nginx'te /etc/nginx/sites-available/ altında her domain için ayrı dosya oluşturun ve sites-enabled'a sembolik link ekleyin. Apache'de /etc/apache2/sites-available/ altında .conf dosyası oluşturun ve a2ensite ile etkinleştirin.
Let's Encrypt ile ücretsiz SSL sertifikası alabilirsiniz. Certbot aracını kurun: 'sudo apt install certbot python3-certbot-nginx -y'. Ardından 'sudo certbot --nginx -d example.com' komutuyla sertifikayı otomatik olarak kurun ve yapılandırın. Sertifikalar 90 günde bir otomatik yenilenir.
'sudo nginx -t' komutu yapılandırma dosyalarını test eder ve hataları gösterir. Hata mesajını dikkatlice okuyun; genellikle dosya adı ve satır numarası belirtilir. 'sudo journalctl -u nginx' ile de servis loglarını inceleyebilirsiniz.
Linux VDS sunucunuza SSH ile bağlanma adımları: PuTTY, Terminal, anahtar tabanlı kimlik doğrulama, Path Panel firewall kuralı ve güvenlik ipuçları.
Windows Server VDS sunucunuza Uzak Masaüstü (RDP) ile bağlanma adımları, NLA güvenlik ayarları, Path Panel firewall kuralı ve sorun giderme rehberi.
REXE panel üzerinden VDS sunucunuzun işletim sistemini değiştirme adımları, yedekleme önerileri, desteklenen Linux ve Windows Server sürümleri.