Giriş

Nginx, dünyanın en popüler web sunucularından biridir ve internetteki en büyük ve en yüksek trafikli sitelerin bazılarını barındırmaktan sorumludur. Çoğu durumda Apache'den daha kaynak dostudur ve bir web sunucusu veya ters proxy olarak kullanılabilir.

Ön şartlar

Bu kılavuza başlamadan önce, sunucunuzda yapılandırılmış sudo ayrıcalıklarına sahip normal, kök olmayan bir kullanıcınız olmalıdır. .

Kullanılabilir bir hesabınız olduğunda, başlamak için root olmayan kullanıcınız olarak oturum açın.

Adım 1 - Nginx'i Yükleme

Nginx, Ubuntu'nun varsayılan depolarında bulunduğundan, aptpaketleme sistemini kullanarak bu depolardan kurmak mümkündür .

Bu, aptbu oturumdaki paketleme sistemiyle ilk etkileşimimiz olduğundan, en son paket listelerine erişebilmemiz için yerel paket dizinimizi güncelleyeceğiz. Daha sonra yükleyebiliriz nginx:

  • sudo apt update
  • sudo apt install nginx

Yordamı kabul ettikten sonra aptNginx'i ve sunucunuza gereken bağımlılıkları yükler.

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

Nginx'i test etmeden önce, güvenlik duvarı yazılımının hizmete erişime izin verecek şekilde ayarlanması gerekir. Nginx ufw, kurulum sonrasında kendini bir hizmet olarak kaydederek Nginx erişimine izin vermeyi kolaylaştırır.

ufwNasıl çalışacağını bilen uygulama yapılandırmalarını yazarak listeleyin :

  • sudo ufw app list

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

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

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

  • Nginx Full : Bu profil hem bağlantı noktası 80'i (normal, şifrelenmemiş web trafiği) hem de bağlantı noktası 443'ü (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 izin verecek en kısıtlayıcı profili etkinleştirmeniz önerilir. Sunucumuz için henüz bu kılavuzda SSL yapılandırmadığımızdan, yalnızca 80 numaralı bağlantı noktasında trafiğe izin vermemiz gerekecek.

Bunu aşağıdakileri yazarak etkinleştirebilirsiniz:

  • sudo ufw allow 'Nginx HTTP'

Değişikliği aşağıdakileri yazarak doğrulayabilirsiniz:

  • sudo ufw status

Görüntülenen çıktıda HTTP trafiğine izin verildiğini görmelisiniz:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

3. Adım - Web Sunucunuzu Kontrol Etme

Yükleme işleminin sonunda Ubuntu 18.04, Nginx'i başlatır. Web sunucusu zaten çalışır durumda olmalıdır.

systemdHizmetin çalıştığından emin olmak için init sistemi ile şunları yazabiliriz:

  • systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

Yukarıda görebileceğiniz gibi, hizmet başarıyla başlatıldı. Ancak, bunu test etmenin en iyi yolu aslında Nginx'ten bir sayfa istemektir.

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, birkaç farklı yolla alabilirsiniz.

Bunu sunucunuzun komut istemine yazmayı deneyin:

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

Birkaç satır geri döneceksiniz. Çalışıp çalışmadığını görmek için web tarayıcınızda her birini deneyebilirsiniz.

Alternatif olarak, internetteki başka bir konumdan görüldüğü gibi genel IP adresinizi vermeniz gereken bir şey yazmanız gerekir:

  • curl -4 icanhazip.com

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

http://your_server_ip

Varsayılan Nginx açılış sayfasını görmelisiniz:

Nginx varsayılan sayfası

Bu sayfa, sunucunun düzgün çalıştığını göstermek için Nginx ile birlikte gelir.

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

Artık web sunucunuzu çalıştırdığınıza göre, bazı temel yönetim komutlarını inceleyelim.

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 durdurup yeniden başlatmak için şunu yazın:

  • sudo systemctl restart nginx

Yalnızca 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, sunucu önyüklendiğinde Nginx 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ükleme sırasında başlamasını yeniden etkinleştirmek için aşağıdakileri yazabilirsiniz:

  • sudo systemctl enable nginx

Nginx web sunucusunu kullanırken, yapılandırma bloklarını yapılandırmak ve tek bir sunucudan birden fazla etki alanını barındırmak için sunucu blokları (Apache'deki sanal ana bilgisayarlara benzer) kullanılabilir. Example.com adında bir alan adı ayarlayacağız , ancak bunu kendi alan adınızla değiştirmeniz gerekir . DigitalOcean ile bir alan adı ayarlama hakkında daha fazla bilgi için DigitalOcean DNS'ye Giriş bölümümüze bakın .

Ubuntu 18.04'teki Nginx, varsayılan olarak etkin olan ve bir dizinin dışındaki dokümanları sunmak üzere yapılandırılmış bir sunucu bloğuna sahiptir /var/www/html. Bu tek bir site için iyi çalışıyor olsa da, birden fazla siteye ev sahipliği yapıyorsanız hantal olabilir. Değiştirmek yerine, example.com sitemiz için bir istemci yapısı başka bir siteyle eşleşmezse sunulacak varsayılan dizin olarak bırakarak /var/www/htmlbir dizin yapısı oluşturalım ./var/www/var/www/html

Gerekli üst dizinleri oluşturmak için bayrağı kullanarak example.com dizinini aşağıdaki gibi -poluşturun:

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

Ardından, $USERortam değişkeniyle dizinin sahipliğini atayın :

  • sudo chown -R $USER:$USER /var/www/example.com/html

umaskDeğerinizi değiştirmediyseniz, web köklerinizin izinleri doğru olmalıdır , ancak şunu yazarak emin olabilirsiniz:

  • sudo chmod -R 755 /var/www/example.com

Ardından, veya en sevdiğiniz düzenleyiciyi index.htmlkullanarak bir örnek sayfa oluşturun nano:

  • nano /var/www/example.com/html/index.html

İçine aşağıdaki örnek HTML'yi ekleyin:

/var/www/example.com/html/index.html
<html>
    <head>
        <title>Welcome to Example.com!</title>
    </head>
    <body>
        <h1>Success!  The example.com server block is working!</h1>
    </body>
</html>

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

Nginx'in bu içeriği sunması için doğru yönergeleri içeren bir sunucu bloğu oluşturmak gerekir. Varsayılan yapılandırma dosyasını doğrudan değiştirmek yerine şu adresten yeni bir dosya oluşturalım :/etc/nginx/sites-available/example.com

  • sudo nano /etc/nginx/sites-available/example.com

Varsayılana benzer, ancak yeni dizinimiz ve alan adımız için güncellenen aşağıdaki yapılandırma bloğuna yapıştırın:

/etc/nginx/sites-available/example.com
server {
        listen 80;
        listen [::]:80;

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

        server_name example.com www.example.com;

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

rootYapılandırmayı yeni dizinimize ve alan adımız için güncellediğimize dikkat server_nameedin.

Ardından, dosyayı sites-enabledbaşlangıç ​​sırasında Nginx'in okuduğu dizine bir bağlantı oluşturarak etkinleştirelim :

  • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

İki sunucu bloğu artık isteklerine listenve server_nameyönergelerine göre yanıt vermek üzere etkinleştirildi ve yapılandırıldı (Nginx'in bu yönergeleri nasıl işlediği hakkında daha fazla bilgiyi buradan edinebilirsiniz ):

  • example.com: İsteklerine yanıt verecek example.comve www.example.com.
  • default: 80 numaralı bağlantı noktasındaki diğer iki blokla eşleşmeyen tüm isteklere yanıt verir.

Ek sunucu adları eklemekten kaynaklanabilecek olası bir karma bellek sorununu önlemek için, /etc/nginx/nginx.confdosyada tek bir değerin ayarlanması gerekir . Dosyayı aç:

  • sudo nano /etc/nginx/nginx.conf

server_names_hash_bucket_sizeYönerge bulun ve #satırı kaldırmak için sembolü kaldırın :

/etc/nginx/nginx.conf
...
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 hatalarının olmadığından emin olun:

  • sudo nginx -t

Herhangi bir sorun yoksa, değişikliklerinizi etkinleştirmek için Nginx'i yeniden başlatın:

  • sudo systemctl restart nginx

Nginx şimdi alan adınızı kullanıyor olmalıdır. Bunu, şuna benzer bir şey görmeniz gereken yere giderek test edebilirsiniz :http://example.com

Nginx ilk sunucu bloğu

Adım 6 - Önemli Nginx Dosyaları ve Dizinlerini Tanıma

Artık Nginx hizmetinin kendisini nasıl yöneteceğinizi bildiğinize göre, birkaç önemli dizin ve dosyayı tanımak için birkaç dakikanızı ayırın.

iç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/htmldizinin dışında sunulur . Bu, Nginx yapılandırma dosyaları değiştirilerek 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, dizine bağlı olmadıkça bu dizinde bulunan yapılandırma dosyalarını kullanmaz sites-enabled. Genellikle, tüm sunucu bloğu yapılandırması bu dizinde yapılır ve sonra diğer dizine bağlanarak etkinleştirilir.
  • /etc/nginx/sites-enabled/: Etkin site başına sunucu bloklarının depolandığı dizin. Genellikle, bunlar sites-availabledizinde bulunan yapılandırma dosyalarına bağlanarak oluşturulur .
  • /etc/nginx/snippets: Bu dizin, Nginx yapılandırmasının başka yerlerine eklenebilecek yapılandırma parçaları içerir. Potansiyel olarak tekrarlanabilir konfigürasyon segmentleri, snippet'lere 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: Tüm Nginx hataları bu günlüğe kaydedilir.

Sonuç

Artık web sunucunuz yüklendiğine göre, sunulacak içerik türü ve daha zengin bir deneyim oluşturmak için kullanmak istediğiniz teknolojiler için birçok seçeneğiniz var.

İş Ortaklarımız

Birlikte harikalar yaratıyoruz!

: