Kısa cevap: CentOS'ta NGINX kurmak için önce resmî NGINX deposunu ekleyin, sonra sudo dnf -y install nginx komutuyla kurun (CentOS 7'de yum). Servisi sudo systemctl enable --now nginx ile başlatın ve firewalld'da http ile https servislerine izin verin. Her yapılandırma değişikliğinden sonra sudo nginx -t ile doğrulayıp servisi yeniden yükleyin.

NGINX; yüksek eşzamanlı bağlantı kapasitesi, düşük bellek kullanımı ve esnek ters vekil (reverse proxy) yetenekleriyle tercih edilen bir web sunucusudur. Aşağıdaki adımlar CentOS 7 ile CentOS Stream 8/9 (RHEL tabanlı dağıtımlar) üzerinde kurulumu, servis yönetimini, güvenlik duvarı ayarını ve temel site ile yönlendirme yapılandırmalarını kapsar.

Önemli: CentOS Linux 7'nin desteği 30 Haziran 2024'te, CentOS Stream 8'in desteği 31 Mayıs 2024'te sona erdi. nginx.org'un resmî paket listesinde RHEL ve uyumlu dağıtımlar için yalnızca 8, 9 ve 10 sürümleri yer alıyor, CentOS 7 listede yok. Yeni kurulumlarda desteklenen bir sürümü (CentOS Stream 9'un desteğinin 2027'de bitmesi bekleniyor) ya da AlmaLinux, Rocky Linux gibi RHEL 8/9 uyumlu bir dağıtımı tercih etmeniz daha güvenli olur.

Ön koşullar

  • Root veya sudo yetkisi.
  • Alan adıyla HTTPS kullanacaksanız A/AAAA kaydının sunucu IP adresine yönlenmiş olması.
  • firewalld kullanıyorsanız HTTP/HTTPS için kuralların açılması.

Bu rehber HTTPS sertifikası kurulumunu kapsamaz.

1. Sistemi güncelleyin

# CentOS 7
sudo yum -y update

# CentOS Stream 8/9
sudo dnf -y upgrade

2. Resmî NGINX deposunu ekleyin (önerilir)

Dağıtım depolarındaki sürümler eski olabilir. Güncel ve kararlı paketler için NGINX'in resmî deposunu ekleyin. /etc/yum.repos.d/nginx.repo dosyasını oluşturup şu içeriği kaydedin:

[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Bu tek dosya CentOS Stream 8/9 ve diğer RHEL uyumlu dağıtımlar için de geçerlidir. $releasever ve $basearch değerlerini yum ya da dnf kendisi doldurur. Kurulum sırasında GPG anahtarını onaylamanız istenirse, parmak izinin nginx.org'da yayımlanan değerle eşleştiğini doğrulayın.

Alternatif olarak EPEL üzerinden de kurabilirsiniz (sürüm eski olabilir):

sudo yum -y install epel-release && sudo yum -y install nginx

3. NGINX'i kurun

# CentOS 7
sudo yum -y install nginx

# CentOS Stream 8/9
sudo dnf -y install nginx

4. Servisi başlatın ve durumu kontrol edin

sudo systemctl enable --now nginx
systemctl status nginx
journalctl -u nginx -n 100 --no-pager

5. Güvenlik duvarını (firewalld) açın

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Bu kurallar 80 ve 443 portlarını açar.

6. Yapılandırma dosyaları

Varsayılan ana dosya /etc/nginx/nginx.conf'tur ve genellikle /etc/nginx/conf.d/*.conf dosyalarını içeri alır. Değişiklikten sonra yapılandırmayı doğrulayıp servisi yeniden yükleyin:

sudo nginx -t
sudo systemctl reload nginx

nginx -t hata verirse servisi yeniden yüklemeyin, önce hatayı düzeltin.

7. Basit bir site yayına alma

Örnek bir alan adıyla statik bir site yayına alın. Önce dizini ve örnek index dosyasını oluşturun:

sudo mkdir -p /var/www/example
echo "<h1>Merhaba NGINX</h1>" | sudo tee /var/www/example/index.html

Sonra /etc/nginx/conf.d/example.conf dosyasına şu sunucu bloğunu yazın:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example;
    index index.html;

    access_log /var/log/nginx/example.access.log;
    error_log  /var/log/nginx/example.error.log;

    # Basit sıkıştırma
    gzip on;
    gzip_types text/plain text/css application/javascript application/json;
}

Son olarak yapılandırmayı doğrulayıp yeniden yükleyin:

sudo nginx -t
sudo systemctl reload nginx

8. Ters vekil (reverse proxy) örneği

Uygulamanız 127.0.0.1:3000 üzerinde çalışıyorsa /etc/nginx/conf.d/app.conf dosyasına şunu yazın:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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_set_header X-Forwarded-Proto $scheme;
    }
}

Yapılandırmayı yine nginx -t ile doğrulayıp yeniden yükleyin. SELinux açıksa bir sonraki adımdaki httpd_can_network_connect ayarı da gerekir.

9. SELinux notları (RHEL/CentOS)

Statik içerik için dizin bağlamını ayarlayın:

sudo chcon -R -t httpd_sys_content_t /var/www/example

Uygulamaya proxy yapacaksanız ağ bağlantısına izin verin:

sudo setsebool -P httpd_can_network_connect 1

Mevcut bağlamları geri yüklemek gerekirse:

sudo restorecon -RFv /var/www

chcon ile verilen bağlam, dosya sistemi yeniden etiketlenirse kaybolur. /var/www altında oluşturduğunuz dizinler bağlamı genellikle zaten devralır. Başka bir dizin kullanıyorsanız kalıcı kural için semanage fcontext kullanın.

10. Loglar ve log döndürme

  • Erişim günlüğü: /var/log/nginx/access.log
  • Hata günlüğü: /var/log/nginx/error.log
  • Sanal host günlükleri: özel günlükler için access_log ve error_log yollarını tanımlayın (örneğin example.conf içinde gösterildiği gibi).
  • Döndürme: logrotate varsayılan kuralları NGINX paketiyle birlikte gelir, günlükler otomatik döndürülür.

11. Güncelleme ve kaldırma

# Güncelleme (CentOS 7)
sudo yum -y update nginx

# Güncelleme (CentOS Stream 8/9)
sudo dnf -y upgrade nginx
# Kaldırma
sudo systemctl disable --now nginx

# CentOS 7
sudo yum -y remove nginx

# CentOS Stream 8/9
sudo dnf -y remove nginx

Paketi kaldırmak yapılandırma ve web dizinlerini genellikle silmez. /etc/nginx, /var/www ve /var/log/nginx dizinlerini isterseniz elle temizleyebilirsiniz. Silmeden önce yedek alın.

Cette réponse était-elle pertinente? 0 Utilisateurs l'ont trouvée utile (0 Votes)