Web sitelerini ve web uygulamalarını barındırmak söz konusu olduğunda, Apache ve Nginx dünyada en yaygın kullanılan web sunucusu platformlarından ikisidir. Her ikisi de güçlü, esnek ve açık kaynaklıdır, bu da onları web içeriği sunmak için tercih edilen seçenek haline getirir. İster basit bir web sitesi ister karmaşık bir web uygulaması hazırlıyor olun, Linux'ta Apache ya da Nginx 'i nasıl yapılandıracağınızı bilmek önemli bir yetkinliktir.
Web Sunucusu Nedir?
Web sunucusu, web içeriğini (HTML dosyaları, resimler ve JavaScript gibi) HTTP veya HTTPS protokolü üzerinden istemcilere (genellikle web tarayıcıları) sunan bir yazılımdır. Web sunucuları tarayıcılardan gelen istekleri işler ve istenen içeriği geri göndererek kullanıcıların web sitelerine ve web uygulamalarına erişmesini sağlar.- Apache: En eski ve en yaygın kullanılan web sunucularından biri olan Apache, kapsamlı özellikler ve esneklik sunar. Karmaşık yapılandırmalar, modüller ve özelleştirmeler için mükemmeldir.
- Nginx: Yüksek performansı, düşük kaynak kullanımı ve çok sayıda eşzamanlı bağlantıyı idare etme yeteneği ile bilinen Nginx, yüksek trafikli sitelerin idaresi için sıklıkla tercih edilir.
1. Linux'ta Apache veya Nginx Kurulumu
Gereksinimlerinize bağlı olarak Apache ya da Nginx kurabilirsiniz. Her ikisi de çoğu Linux dağıtımının varsayılan depolarında mevcuttur.Apache'yi Yükleme
Debian/Ubuntu üzerinde Apache yüklemek için :sudo apt update
sudo apt install apache2
CentOS/RHEL üzerinde kullanın:
sudo yum install httpd
Nginx Kurulumu
Debian/Ubuntu üzerinde Nginx yüklemek için :sudo apt update
sudo apt install nginx
CentOS/RHEL üzerinde kullanın:
sudo yum install nginx
Kurulduktan sonra web sunucusu yapılandırılmaya ve web sayfalarını sunmaya hazır olacaktır.
2. Web Sunucusunun Başlatılması ve Etkinleştirilmesi
Apache veya Nginx'i kurduktan sonra, web sunucusunu başlatmanız ve sistem açılışında otomatik olarak çalışmasını sağlamanız gerekir.Apache'yi Başlatma
Debian/Ubuntu üzerinde Apache 'yi başlatmak için :sudo systemctl start apache2
CentOS/RHEL üzerinde :
sudo systemctl start httpd
Apache'nin açılışta başlamasını etkinleştirin:
sudo systemctl enable apache2 # Debian/Ubuntu
sudo systemctl enable httpd # CentOS/RHEL
Nginx'i Başlatma
Nginx 'i herhangi bir sistemde başlatmak için:sudo systemctl start nginx
Nginx'in açılışta başlamasını etkinleştirin:
sudo systemctl enable nginx
3. Temel HTML Sayfası Sunma
Web sunucusu çalıştıktan sonra, sunucunun doğru çalıştığını doğrulamak için temel bir HTML sayfası sunmanın zamanı gelmiştir.Apache Varsayılan Web Sayfası Konumu
Apache için öntanımlı web sayfası /var/www/html dizininde saklanır. Varsayılan index.html dosyasını kendi içeriğinizle değiştirebilirsiniz.Apache için temel bir HTML sayfası oluşturmak için:
echo “<h1>Apache Web Sunucusuna Hoş Geldiniz. Salonumuz Klimalıdır</h1>” | sudo tee /var/www/html/index.html
Ardından, değişiklikleri uygulamak için Apache'yi yeniden başlatın:
sudo systemctl restart apache2
Nginx Varsayılan Web Sayfası Konumu
Nginx için varsayılan web sayfası /usr/share/nginx/html dizininde bulunur.Nginx için temel bir HTML sayfası oluşturmak için:
echo “<h1>Apache Web Sunucusuna Hoş Geldiniz. Salonumuz Klimalıdır</h1>” | sudo tee /usr/share/nginx/html/index.html
Değişiklikleri uygulamak için Nginx'i yeniden başlatın:
sudo systemctl restart nginx
Şimdi, sunucunuzun IP adresini bir tarayıcıda ziyaret edin (örneğin, http://your_server_ip) ve özel mesajınızı görmelisiniz.
4. Sanal Ana Bilgisayarları (Apache) veya Sunucu Bloklarını (Nginx) Yapılandırma
Sanal barındırma (Apache) ve sunucu blokları (Nginx), her biri kendi alan adına sahip birden fazla web sitesini tek bir sunucuda barındırmanıza olanak tanır.Apache: Sanal Sunucuları Kurma
Apache'de bir sanal ana bilgisayar yapılandırmak için /etc/apache2/sites-available/ içinde siteniz için yeni bir yapılandırma dosyası oluşturun.- Web sitenizin dosyaları için dizin oluşturun:
sudo mkdir -p /var/www/pwnlab.me/html
2. Uygun izinleri ayarlayın:
sudo chown -R $USER:$USER /var/www/pwnlab.me/html
3. Site için temel bir HTML dosyası oluşturun:
echo “<h1>Welcome to pwnlab.me</h1>” | sudo tee /var/www/pwnlab.me/html/index.html
4. Yeni bir sanal sunucu dosyası oluşturun:
sudo nano /etc/apache2/sites-available/pwnlab.me.conf
5. Aşağıdaki yapılandırmayı ekleyin:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName pwnlab.me
ServerAlias www.pwnlab.me
DocumentRoot /var/www/pwnlab.me/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
6. Yeni siteyi etkinleştirin ve Apache'yi yeniden başlatın:
sudo a2ensite pwnlab.me.conf
sudo systemctl restart apache2
Nginx: Sunucu Bloklarını Ayarlama
Nginx'te sunucu blokları Apache sanal konaklarına benzer şekilde çalışır. etc/nginx/sites-available/ içinde yeni bir yapılandırma dosyası oluşturun.- Siteniz için dizin oluşturun:
sudo mkdir -p /var/www/pwnlab.me/html
2. Doğru izinleri ayarlayın:
sudo chown -R $USER:$USER /var/www/pwnlab.me/html
3. Temel bir HTML dosyası oluşturun:
echo “<h1>Welcome to pwnlab.me</h1>” | sudo tee /var/www/pwnlab.me/html/index.html
4. Yeni bir sunucu blok dosyası oluşturun:
sudo nano /etc/nginx/sites-available/pwnlab.me
5. Aşağıdaki yapılandırmayı ekleyin:
server {
listen 80;
server_name pwnlab.me www.pwnlab.me;
root /var/www/pwnlab.me/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
6. Sembolik bir bağlantı oluşturarak siteyi etkinleştirin:
sudo ln -s /etc/nginx/sites-available/pwnlab.me /etc/nginx/sites-enabled/
7. Yapılandırmayı test edin ve Nginx'i yeniden başlatın:
sudo nginx -t
sudo systemctl restart nginx
Artık sitenizi görüntülemek için tarayıcınızda http:// pwnlab. me adresini ziyaret edebilirsiniz.
5. SSL ile Web Sunucunuzun Güvenliğini Sağlama
Web sunucunuzu SSL/TLS ile güvence altına almak, kullanıcı verilerini korumak ve güvenli bağlantılar sağlamak için kritik öneme sahiptir. Ücretsiz bir SSL sertifika yetkilisi olan Let's Encrypt'i kullanarak HTTPS'yi etkinleştirebilirsiniz.SSL Sertifikaları için Certbot'u yükleyin
SSL sertifikalarını yönetmek için Certbot 'u yüklemek için:- Debian/Ubuntu (Apache):
sudo apt install certbot python3-certbot-apache
- Debian/Ubuntu (Nginx):
sudo apt install certbot python3-certbot-nginx
- CentOS/RHEL:
sudo yum install certbot python3-certbot-apache # Apache için
sudo yum install certbot python3-certbot-nginx # Nginx için
Bir SSL Sertifikası Alın
Alan adınız için ücretsiz bir SSL sertifikası almak için:Apache için :
sudo certbot --apache -d pwnlab.me -d www.pwnlab.me
Nginx için :
sudo certbot --nginx -d pwnlab.me -d www.pwnlab.me
Certbot, web sunucunuzu HTTPS kullanacak şekilde otomatik olarak yapılandıracaktır. Ayrıca sertifika yenilemelerini de gerçekleştirecektir.
SSL Yapılandırmasını Doğrulama
Certbot SSL sertifikasını yükledikten sonra, tarayıcınızda https:// pwnlab. me adresini ziyaret edebilirsiniz. Bağlantı güvenli olmalı ve adres çubuğunda bir asma kilit sembolü ile gösterilmelidir.
6. Web Sunucusu Performansını Optimize Etme
Hem Apache hem de Nginx yüksek trafik yüklerini kaldırabilir, ancak performansı optimize etmenin birkaç yolu vardır:Apache'yi Optimize Etme
- Önbelleğe Almayı Etkinleştir: Sıkça istenen içeriği önbelleğe almak için Apache'nin mod_cache 'sini kullanın.
sudo a2enmod cache
sudo a2enmod cache_disk
sudo systemctl restart apache2
- Sıkıştırma Kullan: İstemciye göndermeden önce içeriği sıkıştırmak için mod_deflate 'i etkinleştirin.
sudo a2enmod deflate
sudo systemctl restart apache2
Nginx'i Optimize Etme
- Gzip Sıkıştırmayı Etkinleştirin: Gzip sıkıştırmayı etkinleştirmek için aşağıdaki satırları Nginx yapılandırmasına ekleyin:
gzip on;
gzip_types text/css application/javascript text/html application/json;
- Use FastCGI Caching: PHP veya diğer sunucu tarafı dilleri tarafından oluşturulan dinamik içeriği FastCGI önbellekleme kullanarak önbelleğe alın. Örnek FastCGI önbellek yapılandırması:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=MYCACHE:10m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";