Takip et

Nginx Nedir ve Neden Kullanılır?

Nginx (Engine-x olarak telaffuz edilir), yüksek performanslı, açık kaynaklı bir web sunucusu, ters proxy sunucusu, yük dengeleyici ve HTTP ön

Nginx (Engine-x olarak telaffuz edilir), yüksek performanslı, açık kaynaklı bir web sunucusu, ters proxy sunucusu, yük dengeleyici ve HTTP önbelleğidir. Özellikle yüksek trafikli web siteleri için tasarlanmış olup, düşük bellek kullanımı ve eşzamanlı bağlantıları olağanüstü bir şekilde işleme yeteneği ile bilinir. CentOS 7 ise kurumsal düzeyde kararlılığı ve güvenliği ile tanınan popüler bir Linux dağıtımıdır. Nginx’i CentOS 7 üzerine kurmak, web uygulamalarınız için güçlü ve verimli bir altyapı oluşturmanın ilk adımıdır.

Bu rehberde, Nginx’i CentOS 7 sunucunuza adım adım nasıl kuracağınızı, temel yapılandırmaları nasıl yapacağınızı ve web sitelerinizi nasıl yayınlayacağınızı detaylı bir şekilde anlatacağız.

Nginx Nedir ve Neden Kullanılır?

Nginx, modern web altyapısının temel taşlarından biridir. Orijinal olarak Igor Sysoev tarafından tasarlanan Nginx, Apache HTTP Sunucusu’na alternatif olarak ortaya çıkmıştır ve özellikle “C10k problemi” olarak bilinen, aynı anda on binlerce bağlantıyı işleme sorununu çözmek için optimize edilmiştir.

Nginx’in Temel Özellikleri ve Avantajları:

  • Yüksek Performans: Asenkron, olay tabanlı mimarisi sayesinde, özellikle statik içerik sunumu ve eşzamanlı bağlantıların yönetimi konusunda Apache gibi geleneksel sunuculardan çok daha hızlıdır.
  • Düşük Kaynak Tüketimi: Bellek ve CPU kullanımı açısından oldukça verimlidir, bu da daha az donanım kaynağıyla daha fazla trafiği yönetebilmesini sağlar.
  • Ters Proxy ve Yük Dengeleyici: Gelen istekleri birden fazla arka uç sunucusuna (uygulama sunucuları gibi) yönlendirebilir ve sunucular arasındaki yükü dağıtarak uygulamanın performansını ve kullanılabilirliğini artırabilir.
  • HTTP Önbellekleme: Sık erişilen içeriği önbelleğe alarak yanıt sürelerini kısaltır ve arka uç sunucularının yükünü azaltır.
  • Güvenlik: Modüler yapısı ve sürekli güncellemeleri ile güvenli bir web sunucusu ortamı sunar. DDoS saldırılarına karşı koruma mekanizmalarına sahiptir.
  • Kolay Yapılandırma: Yapılandırma dosyaları nispeten basittir ve anlaşılması kolaydır, bu da hızlı kurulum ve özelleştirme imkanı sunar.

Bu avantajlar sayesinde Nginx, küçük kişisel bloglardan devasa kurumsal web sitelerine kadar geniş bir yelpazede tercih edilmektedir. Özellikle WordPress, Drupal gibi popüler içerik yönetim sistemleri ve Node.js, Python, Ruby gibi uygulama geliştirme ortamlarıyla birlikte sıklıkla kullanılır.

CentOS 7 Sistemini Güncelleme ve Ön Gereksinimleri Hazırlama

Nginx kurulumuna başlamadan önce, CentOS 7 sunucunuzun güncel olduğundan ve gerekli ön gereksinimlerin karşılandığından emin olmalıyız. Bu adımlar, sistem kararlılığını artırır ve olası bağımlılık sorunlarını önler.

Sistemi Güncelleme

İlk olarak, sunucunuzdaki tüm paketleri en son sürümlerine güncelleyelim. Bu, güvenlik yamalarını ve performans iyileştirmelerini almanızı sağlar.

sudo yum update -y

Bu komut, sistemdeki tüm kurulu paketleri günceller. -y parametresi, tüm sorulara otomatik olarak “evet” yanıtı vermeyi sağlar.

EPEL Deposunu Ekleme

Nginx, CentOS 7’nin varsayılan depolarında bulunmayabilir veya güncel sürümü olmayabilir. Bu nedenle, Extra Packages for Enterprise Linux (EPEL) deposunu eklememiz gerekmektedir. EPEL, Fedora projesi tarafından Enterprise Linux dağıtımları için ek paketler sağlayan bir topluluk deposudur.

sudo yum install epel-release -y

EPEL deposunu ekledikten sonra, paket listesini yeniden güncellemek iyi bir fikirdir:

sudo yum repolist

Bu komut, aktif depoları ve içerdikleri paket sayılarını listeler. EPEL’in listede olduğunu görmelisiniz.

Firewall Ayarlarını Yapılandırma

CentOS 7, varsayılan olarak firewalld hizmetini kullanır. Web sunucunuzun dışarıdan erişilebilir olması için HTTP (80) ve HTTPS (443) portlarını güvenlik duvarında açmanız gerekir. Aksi takdirde, Nginx çalışsa bile web sitenize erişilemez.

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
  • --permanent: Bu kuralın kalıcı olmasını, yani sunucu yeniden başlatıldığında da geçerli olmasını sağlar.
  • --add-service=http: HTTP trafiği için varsayılan port olan 80’i açar.
  • --add-service=https: HTTPS trafiği için varsayılan port olan 443’ü açar.
  • --reload: Güvenlik duvarı ayarlarını yeniden yükler ve değişiklikleri anında aktif hale getirir.

Güvenlik duvarı kurallarının doğru bir şekilde eklendiğini kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

sudo firewall-cmd --list-all

Çıktıda services: http https satırını görmelisiniz.

Nginx Kurulumu

Ön gereksinimleri tamamladığımıza göre, artık Nginx’i kurmaya hazırız.

Nginx Paketini Yükleme

EPEL deposu etkinleştirildiğinde, Nginx’i standart yum komutu ile kolayca kurabiliriz:

sudo yum install nginx -y

Bu komut Nginx paketini ve bağımlılıklarını kuracaktır.

Nginx Servisini Başlatma ve Etkinleştirme

Kurulum tamamlandıktan sonra, Nginx servisini başlatmamız ve sunucu yeniden başlatıldığında otomatik olarak başlaması için etkinleştirmemiz gerekir.

sudo systemctl start nginx
sudo systemctl enable nginx
  • systemctl start nginx: Nginx servisini başlatır.
  • systemctl enable nginx: Nginx servisini sistem açılışında otomatik olarak başlayacak şekilde ayarlar. Bu, sunucunuz yeniden başlatıldığında Nginx’in manuel olarak başlatılmasına gerek kalmamasını sağlar.

Nginx servisinin durumunu kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

sudo systemctl status nginx

Çıktıda Active: active (running) ifadesini görmelisiniz. Bu, Nginx’in başarıyla çalıştığı anlamına gelir.

Kurulumu Doğrulama

Nginx’in doğru şekilde kurulup çalışmadığını test etmek için web tarayıcınızı açın ve sunucunuzun IP adresini veya alan adını girin. Örneğin, http://your_server_ip veya http://your_domain.com.

Eğer her şey doğru kurulduysa, Nginx’in varsayılan hoş geldiniz sayfasını görmelisiniz. Bu sayfa genellikle “Welcome to Nginx on CentOS!” veya benzeri bir mesaj içerir.

Nginx Yapılandırması ve Yönetimi

Nginx’i kurduktan sonra, onu web sitelerinizi barındırmak için yapılandırmanız gerekir. Nginx’in yapılandırma dosyaları oldukça esnek ve güçlüdür.

Temel Yapılandırma Dosyaları ve Dizinleri

Nginx’in ana yapılandırma dosyası ve önemli dizinleri şunlardır:

  • /etc/nginx/nginx.conf: Nginx’in ana yapılandırma dosyasıdır. Genel Nginx ayarlarını (worker süreçleri, olay modülleri vb.) ve diğer yapılandırma dosyalarını (conf.d dizini altındaki dosyalar gibi) içerir.
  • /etc/nginx/conf.d/: Bu dizin, genellikle her bir web sitesi veya uygulama için ayrı yapılandırma dosyalarını (sanal hostlar) tutmak için kullanılır. Nginx, nginx.conf dosyasında bu dizin altındaki .conf uzantılı tüm dosyaları otomatik olarak okuyacak şekilde yapılandırılmıştır.
  • /usr/share/nginx/html: Nginx’in varsayılan web kök dizinidir. Tarayıcınızda sunucunuzun IP adresini girdiğinizde gördüğünüz “Welcome to Nginx” sayfası bu dizinde bulunur.
  • /var/log/nginx/: Nginx erişim (access.log) ve hata (error.log) günlüklerinin tutulduğu dizindir. Sorun giderme için bu günlükler oldukça önemlidir.

Sanal Host (Server Block) Oluşturma

Birden fazla web sitesini aynı Nginx sunucusu üzerinde barındırmak için “sanal host” veya Nginx terminolojisinde “server block” adı verilen yapılandırmaları kullanırız. Her bir server block, belirli bir alan adı veya IP adresi için Nginx’in nasıl davranacağını tanımlar.

Örnek olarak, example.com adında bir web sitesi için bir server block oluşturalım:

1. Web Sitesi Kök Dizinini Oluşturma:
Web sitenizin dosyalarını barındıracağı bir dizin oluşturalım. Genellikle /var/www/ altında sitelerinizi tutmak iyi bir uygulamadır.

sudo mkdir -p /var/www/example.com/html

2. Örnek Bir HTML Dosyası Oluşturma:
Web sitesinin çalıştığını doğrulamak için basit bir index.html dosyası oluşturalım.

echo "

Merhaba Nginx! Bu example.com sitesidir.

" | sudo tee /var/www/example.com/html/index.html

3. Dizin İzinlerini Ayarlama:
Nginx’in bu dosyalara erişebilmesi için doğru izinleri ayarlamamız gerekir. Nginx genellikle nginx kullanıcısı ve grubu altında çalışır.

sudo chown -R nginx:nginx /var/www/example.com
sudo chmod -R 755 /var/www/example.com

4. Nginx Server Block Dosyasını Oluşturma:
/etc/nginx/conf.d/ dizininde yeni bir yapılandırma dosyası oluşturalım. Dosya adı, genellikle alan adınızla eşleşir ve .conf uzantısına sahip olur.

sudo nano /etc/nginx/conf.d/example.com.conf

Aşağıdaki içeriği dosyaya yapıştırın:

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; # php kullanacaksanız ekleyin

    location / {
        try_files $uri $uri/ =404;
    }

    # Hata sayfaları için
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    # PHP İşleme (isteğe bağlı, PHP-FPM kuruluysa)
    # location ~ \.php$ {
    #     fastcgi_pass unix:/run/php-fpm/www.sock; # PHP-FPM soket yolu
    #     fastcgi_index index.php;
    #     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #     include fastcgi_params;
    # }
}

Açıklamalar:

  • listen 80;: Nginx’in HTTP isteklerini 80 numaralı porttan dinlemesini sağlar.
  • server_name example.com www.example.com;: Bu server block’un hangi alan adları için geçerli olduğunu belirtir. Kendi alan adınızı buraya yazmalısınız.
  • root /var/www/example.com/html;: Web sitesi dosyalarının bulunduğu kök dizini belirtir.
  • index index.html index.htm index.php;: Bir dizine erişildiğinde Nginx’in hangi dosyaları otomatik olarak arayacağını belirtir.
  • location / { ... }: Gelen isteklerin nasıl işleneceğini tanımlar. try_files yönergesi, istenen dosyanın veya dizinin var olup olmadığını kontrol eder.
  • PHP İşleme bloğu, eğer PHP tabanlı bir uygulama kullanıyorsanız ve PHP-FPM kurduysanız, yorum satırlarını kaldırarak etkinleştirmeniz gereken bir örnektir.

5. Nginx Yapılandırmasını Test Etme:
Değişiklikleri uygulamadan önce, yeni yapılandırma dosyasında sözdizimi hatası olup olmadığını kontrol etmek çok önemlidir.

sudo nginx -t

Eğer çıktı test is successful benzeri bir mesaj içeriyorsa, yapılandırmanızda bir hata yok demektir.

6. Nginx’i Yeniden Yükleme:
Yapılandırma dosyalarındaki değişiklikleri uygulamak için Nginx servisini yeniden yüklememiz gerekir.

sudo systemctl reload nginx

reload komutu, mevcut bağlantıları kesmeden yapılandırmayı yeniden yükler. Bu, web sitenizde kesintisiz hizmet sağlamak için önemlidir. restart komutu ise servisi tamamen durdurup yeniden başlatır ve bu sırada kısa süreli bir kesintiye neden olabilir.

Şimdi tarayıcınızdan http://example.com (veya sunucunuzun IP adresi, eğer DNS ayarlarını yapmadıysanız) adresine giderek yeni web sitenizi kontrol edebilirsiniz.

SSL/TLS Yapılandırmasına Giriş (HTTPS)

Günümüzde, web sitelerinin HTTPS kullanması bir standart haline gelmiştir. HTTPS, verilerin şifrelenmesini sağlayarak güvenliği artırır. Nginx, SSL/TLS sertifikalarını yapılandırmak için mükemmel destek sunar.

Let’s Encrypt gibi ücretsiz sertifika sağlayıcıları ve Certbot gibi araçlar sayesinde HTTPS kurulumu oldukça basitleşmiştir. Bu rehberin kapsamı dışında olsa da, Nginx server block’unuza listen 443 ssl; yönergeleri ekleyerek ve sertifika yollarını belirterek HTTPS’i etkinleştirebilirsiniz.

Örneğin, Certbot ile otomatik kurulum yaptıktan sonra Nginx yapılandırmanız aşağıdaki gibi bir şeye benzeyebilir:

server {
    listen 443 ssl http2;
    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_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    # Diğer SSL ayarları...
    include /etc/nginx/snippets/ssl-params.conf; # Güvenlik için önerilen SSL ayarları

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

    location / {
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri; # HTTP isteklerini HTTPS'e yönlendir
}

Bu, HTTP isteklerini otomatik olarak HTTPS’e yönlendirirken, 443 portunda güvenli bağlantılar sunan bir yapılandırma örneğidir.

Sonuç ve Sıkça Sorulan Sorular

Bu rehberde, Nginx’i CentOS 7 sunucunuza nasıl kuracağınızı ve temel bir web sitesini nasıl yapılandıracağınızı adım adım öğrendiniz. Nginx, yüksek performanslı web sunucuları kurmak için güçlü ve esnek bir araçtır. Temel kurulum ve yapılandırma adımlarını takip ederek, web projeleriniz için sağlam bir temel oluşturabilirsiniz. İleri seviye Nginx yapılandırmaları, ters proxy, yük dengeleme ve gelişmiş güvenlik ayarları gibi konuları keşfetmek, web altyapınızı daha da optimize etmenize olanak tanır.

Sıkça Sorulan Sorular (SSS)

1. Nginx servis durumunu nasıl kontrol ederim?
Nginx servisinin çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

sudo systemctl status nginx

Çıktıda Active: active (running) ifadesi varsa, Nginx sorunsuz çalışıyor demektir.

2. Nginx yapılandırmasını test etmek için ne yapmalıyım?
Yapılandırma dosyalarında herhangi bir değişiklik yaptıktan sonra, Nginx’i yeniden yüklemeden önce sözdizimi hatası olup olmadığını kontrol etmek için aşağıdaki komutu kullanın:

sudo nginx -t

Bu komut, yapılandırmanızın geçerli olup olmadığını kontrol eder ve olası hataları size bildirir.

3. Nginx’i yeniden başlatmak ile yeniden yüklemek arasındaki fark nedir?

  • sudo systemctl restart nginx: Nginx servisini tamamen durdurur ve sonra tekrar başlatır. Bu işlem sırasında kısa süreli bir kesinti yaşanabilir. Genellikle sistem çapında önemli değişiklikler yapıldığında veya bir sorun giderilmeye çalışıldığında kullanılır.
  • sudo systemctl reload nginx: Nginx’i durdurmadan yapılandırma dosyalarını yeniden yüklemesini sağlar. Mevcut bağlantıları kesmez ve hizmette herhangi bir kesinti yaşanmaz. Yapılandırma dosyalarında (sanal host ekleme, SSL ayarları vb.) değişiklikler yapıldığında tercih edilen yöntemdir.

4. Nginx varsayılan web kök dizini neresidir?
CentOS 7 üzerinde Nginx’in varsayılan web kök dizini /usr/share/nginx/html‘dir. Ancak, kendi web siteleriniz için genellikle /var/www/your_domain/html gibi özel dizinler oluşturmanız önerilir.

5. Bir sanal host (virtual host) nasıl eklerim?
Yeni bir sanal host eklemek için aşağıdaki adımları izleyin:

  1. Web sitenizin dosyaları için bir dizin oluşturun (örneğin, /var/www/yenisite.com/html).
  2. Bu dizine web sitenizin dosyalarını (örneğin, index.html) yerleştirin.
  3. /etc/nginx/conf.d/ dizininde yeni bir .conf dosyası oluşturun (örneğin, yenisite.com.conf).
  4. Bu dosyaya alan adınız ve kök dizininizi belirten bir server bloğu ekleyin.
  5. sudo nginx -t ile yapılandırmayı test edin.
  6. sudo systemctl reload nginx ile Nginx’i yeniden yükleyin.

Bu adımlar, CentOS 7 üzerinde Nginx ile web sunucusu deneyiminize başlamanız için sağlam bir temel sağlayacaktır. Başarılar dileriz!

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version