Doküman

Debian 10’a Nginx Nasıl Kurulur

Nginx , her boyuttaki web sitelerini ve uygulamaları barındırmak için kullanılan ücretsiz ve açık kaynaklı bir web sunucusudur. Yazılım, bellek kaynakları üzerindeki düşük etkisi, yüksek ölçeklenebilirliği ve güvenli, öngörülebilir performans sunabilen modüler, olaya dayalı mimarisi ile bilinir. Bir web sunucusundan daha fazlası olan Nginx, aynı zamanda bir yük dengeleyici, bir HTTP önbelleği ve bir ters proxy olarak da çalışır.

Adım 1 – Nginx’i Kurma

Nginx, Debian’ın varsayılan yazılım havuzlarında bulunur ve bu da onu geleneksel paket yönetim araçlarından kurmayı mümkün kılar.

Önce yerel paket dizininizi en son yukarı akış değişikliklerini yansıtacak şekilde güncelleyin:

sudo apt update 

Ardından nginxpaketi kurun:

sudo apt install nginx        

Girerek kurulumu onaylayın Y, ardından Enterdevam etmek için tuşuna basın. aptdaha sonra Nginx’i ve gerekli tüm bağımlılıkları sunucunuza yükleyecektir.

Adım 2 – Güvenlik Duvarını Ayarlama

Nginx’i test etmeden önce, varsayılan web bağlantı noktalarına dışarıdan erişime izin vermek için güvenlik duvarı ayarlarını değiştirmek gerekir. Önkoşullardaki talimatları uyguladığınızı varsayarsak, sunucunuza erişimi kısıtlamak için yapılandırılmış bir UFW güvenlik duvarınız olmalıdır.

Yükleme sırasında Nginx, güvenlik duvarı aracılığıyla Nginx’e erişimi etkinleştirmek veya devre dışı bırakmak için kullanılabilecek birkaç uygulama profili sağlamak için kendisini UFW’ye kaydeder.

ufwAşağıdakileri yazarak uygulama profillerini listeleyin :

sudo ufw app list 

Uygulama profillerinin bir listesini almalısınız:

Output
         Available applications:
...
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
...

Gördüğünüz gibi, Nginx için kullanılabilen üç profil var:

  • Nginx Full : Bu profil, hem 80 numaralı bağlantı noktasını (normal, şifrelenmemiş web trafiği) hem de 443 numaralı bağlantı noktasını (TLS/SSL şifreli trafik) açar
  • Nginx HTTP : Bu profil yalnızca 80 numaralı bağlantı noktasını açar (normal, şifrelenmemiş web trafiği)
  • Nginx HTTPS : Bu profil yalnızca 443 numaralı bağlantı noktasını açar (TLS/SSL şifreli trafik)

Yapılandırdığınız trafiğe yine de izin verecek en kısıtlayıcı profili etkinleştirmeniz önerilir. Bu kılavuzda sunucunuz için TLS/SSL’yi henüz yapılandırmadığınız için, yalnızca 80 numaralı bağlantı noktasında HTTP trafiğine izin vermeniz gerekir.

Bu komutu yazarak etkinleştirebilirsiniz:

sudo ufw allow 'Nginx HTTP' 

Değişikliği aşağıdaki komutu yazarak doğrulayabilirsiniz:

sudo ufw status 

Çıktıda izin verilen HTTP trafiği görünür:

 Output
         Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Adım 3 – Web Sunucunuzu Kontrol Etme

Kurulum işleminin sonunda Debian 10, Nginx’i başlatır. Web sunucusu zaten çalışır durumda olmalıdır.

Hizmetin çalıştığından emin olmak için systemd init sistemiyle şunu yazarak kontrol edebilirsiniz:

systemctl status nginx 

Sunucunuzun IP adresine giderek yazılımın düzgün çalıştığını doğrulamak için varsayılan Nginx açılış sayfasına erişebilirsiniz. Sunucunuzun IP adresini bilmiyorsanız, bunu sunucunuzun komut istemine yazabilirsiniz:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' 

Sunucunuzun IP adresine sahip olduğunuzda, bunu tarayıcınızın adres çubuğuna girin:

http://your_server_ip

Varsayılan Nginx açılış sayfası web tarayıcınızda görünmelidir:

Adım 4 – Nginx Sürecini Yönetme

Artık web sunucunuz hazır ve çalışır durumda olduğuna göre, bazı temel yönetim komutlarını inceleyebilirsiniz.

Web sunucunuzu durdurmak için şunu yazın:

 sudo systemctl stop nginx 

Web sunucusunu durdurulduğunda başlatmak için şunu yazın:

sudo systemctl start nginx 

Hizmeti durdurmak ve ardından yeniden başlatmak için şunu yazın:

sudo systemctl restart nginx 

Yapılandırma değişiklikleri yapıyorsanız, Nginx genellikle bağlantıları kesmeden yeniden yükleyebilir. Bunu yapmak için şunu yazın:

sudo systemctl reload nginx 

Varsayılan olarak, Nginx, sunucu önyüklendiğinde otomatik olarak başlayacak şekilde yapılandırılmıştır. İstediğiniz bu değilse, şunu yazarak bu davranışı devre dışı bırakabilirsiniz:

sudo systemctl disable nginx 

Hizmetin önyüklemede başlamasını yeniden etkinleştirmek için şunu yazabilirsiniz:

sudo systemctl enable nginx 

Adım 5 – Sunucu Bloklarını Ayarlama (Opsiyonel)

Nginx web sunucusunu kullanırken, yapılandırma ayrıntılarını kapsüllemek ve tek bir sunucuda birden fazla etki alanını barındırmak için sunucu blokları (Apache’deki sanal ana bilgisayarlara benzer) kullanılabilir. Aşağıdaki komutlarda alan_adiniz’i kendi alan adınızla değiştirin. DigitalOcean ile bir alan adı ayarlama hakkında daha fazla bilgi edinmek için DigitalOcean DNS’ye girişimize bakın.

Debian 10’daki Nginx, /var/www/html dizinindeki belgeleri sunmak üzere yapılandırılmış, varsayılan olarak etkinleştirilmiş bir sunucu bloğuna sahiptir. Bu, tek bir site için iyi sonuç verse de, birden fazla site barındırıyorsanız yönetilemez hale gelebilir. /var/www/html’yi değiştirmek yerine, etki alanınız web sitesi için /var/www içinde bir dizin yapısı oluşturun ve bir istemci isteği başka herhangi bir istekle eşleşmezse sunulacak varsayılan dizin olarak /var/www/html’yi yerinde bırakın Siteler.

Gerekli üst dizinleri oluşturmak için -p bayrağını kullanarak etki alanınız için dizini aşağıdaki gibi oluşturun:

 sudo mkdir -p /var/www/your_domain/html 

Ardından, mevcut sistem kullanıcınıza başvurması gereken $USER ortam değişkeniyle dizinin sahipliğini atayın:

sudo chown -R $USER:$USER /var/www/your_domain/html 

Umask değerinizi değiştirmediyseniz, web kökünüzün izinleri doğru olmalıdır, ancak şunu yazarak emin olabilirsiniz:

 sudo chmod -R 755 /var/www/your_domain 

Ardından, nano veya tercih ettiğiniz metin düzenleyiciyi kullanarak örnek bir index.html sayfası oluşturun:

nano /var/www/your_domain/html/index.html 

İçeride, aşağıdaki örnek HTML’yi ekleyin:

<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

İşiniz bittiğinde dosyayı kaydedin ve kapatın. Nano’da bunu CTRL + X, ardından Y ve ardından ENTER tuşlarına basarak yapabilirsiniz.

Nginx’in bu içeriği sunabilmesi için, özel web kökünüze işaret eden doğru yönergelere sahip bir sunucu bloğu oluşturmanız gerekir. Varsayılan yapılandırma dosyasını doğrudan değiştirmek yerine, /etc/nginx/sites-available/your_domain adresinde yeni bir tane oluşturun:

sudo nano /etc/nginx/sites-available/your_domain 

Varsayılana benzer, ancak yeni dizininiz ve alan adınız için güncellenen aşağıdaki yapılandırma bloğunu ekleyin:

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

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

Yeni dizininizin güncellenmiş kök yapılandırmasına ve etki alanı adınızın sunucu_adı olduğuna dikkat edin. alan_adiniz’i gerçek alan adınızla değiştirmeyi unutmayın.

Ardından, Nginx’in başlatma sırasında okuduğu sitelerin etkin olduğu dizindeki özel yapılandırma dosyanıza sembolik bir bağlantı oluşturarak bu sunucu bloğunu etkinleştirin:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/ 

Sunucunuz artık dinleme ve sunucu_adı yönergelerine dayalı olarak isteklere yanıt vermek üzere etkinleştirilen ve yapılandırılan iki sunucu bloğuna sahiptir (Nginx’in bu yönergeleri nasıl işlediği hakkında daha fazla bilgiyi burada bulabilirsiniz):

 your_domain: your_domain ve www.your_domain isteklerine yanıt verir.
 varsayılan: 80 numaralı bağlantı noktasındaki diğer iki blokla eşleşmeyen tüm isteklere yanıt verir.

Yapılandırmanıza ek sunucu adları eklemekten kaynaklanabilecek olası bir karma kova bellek sorununu önlemek için /etc/nginx/nginx.conf dosyasında tek bir değer ayarlamanız gerekir. Dosyayı aç:

sudo nano /etc/nginx/nginx.conf 

server_names_hash_bucket_size yönergesini bulun ve satırın yorumunu kaldırmak için # sembolünü kaldırın:

...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Ardından, Nginx dosyalarınızın hiçbirinde sözdizimi hatası olmadığından emin olmak için test edin:

sudo nginx -t 

Herhangi bir sorun yoksa çıktısı aşağıdaki gibidir.

Output
         nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Yapılandırma testiniz geçtikten sonra, değişikliklerinizi etkinleştirmek için Nginx’i yeniden başlatın:

sudo systemctl restart nginx 

Nginx şimdi alan adınıza hizmet ediyor olmalıdır. http://alan_adiniz’e giderek bunu test edebilirsiniz. /var/www/alan_adiniz/html/index.html klasöründe oluşturduğunuz özel HTML burada oluşturulmalıdır:l

Adım 6 – Önemli Nginx Dosyalarını ve Dizinlerini Tanımak

Artık Nginx hizmetinin kendisini nasıl yöneteceğinizi bildiğinize göre, birkaç önemli dizini ve dosyayı tanımak için biraz zaman ayırabilirsiniz.

İçerik

  • /var/www/html: Varsayılan olarak yalnızca daha önce gördüğünüz varsayılan Nginx sayfasından oluşan gerçek web içeriği /var/www/html dizininden sunulur. Bu, Nginx yapılandırma dosyalarını düzenleyerek değiştirilebilir.

Sunucu Yapılandırması

  • /etc/nginx: Nginx yapılandırma dizini. Tüm Nginx yapılandırma dosyaları burada bulunur.
  • /etc/nginx/nginx.conf: Ana Nginx yapılandırma dosyası. Bu, Nginx genel yapılandırmasında değişiklik yapmak için değiştirilebilir.
  • /etc/nginx/sites-available/: Site başına sunucu bloklarının depolanabileceği dizin. Nginx, sitelerin etkin olduğu dizine bağlanmadıkça bu dizinde bulunan yapılandırma dosyalarını kullanmaz. Tipik olarak, tüm sunucu bloğu yapılandırması bu dizinde yapılır ve ardından diğer dizine bağlanarak etkinleştirilir.
  • /etc/nginx/sites-enabled/: Etkinleştirilen site başına sunucu bloklarının depolandığı dizin. Genellikle bunlar, sitelerde kullanılabilir dizinde bulunan yapılandırma dosyalarına bağlanarak oluşturulur.
  • /etc/nginx/snippets: Bu dizin, Nginx yapılandırmasında başka bir yere eklenebilecek yapılandırma parçalarını içerir. Potansiyel olarak tekrarlanabilir yapılandırma segmentleri, snippet’lerde yeniden düzenleme için iyi adaylardır.

Sunucu Günlükleri

  • /var/log/nginx/access.log: Nginx aksini yapacak şekilde yapılandırılmadığı sürece, web sunucunuza yapılan her istek bu günlük dosyasına kaydedilir.
  • /var/log/nginx/error.log: Herhangi bir Nginx hatası bu günlüğe kaydedilecektir.

Yazının orijinalini buradan okuyabilirsiniz.