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, apt
paketleme sistemini kullanarak bu depolardan kurmak mümkündür .
Bu, apt
bu 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 apt
Nginx'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.
ufw
Nasıl çalışacağını bilen uygulama yapılandırmalarını yazarak listeleyin :
- sudo ufw app list
Uygulama profillerinin bir listesini almalısınız:
OutputAvailable 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:
OutputStatus: 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.
systemd
Hizmetin ç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:
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
Adım 5 - Sunucu Bloklarını Ayarlama (Önerilir)
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/html
bir 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 -p
oluşturun:
- sudo mkdir -p /var/www/example.com/html
Ardından, $USER
ortam değişkeniyle dizinin sahipliğini atayın :
- sudo chown -R $USER:$USER /var/www/example.com/html
umask
Değ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.html
kullanarak bir örnek sayfa oluşturun nano
:
- nano /var/www/example.com/html/index.html
İçine aşağıdaki örnek HTML'yi ekleyin:
<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:
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;
}
}
root
Yapılandırmayı yeni dizinimize ve alan adımız için güncellediğimize dikkat server_name
edin.
Ardından, dosyayı sites-enabled
baş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 listen
ve server_name
yö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 verecekexample.com
vewww.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.conf
dosyada tek bir değerin ayarlanması gerekir . Dosyayı aç:
- sudo nano /etc/nginx/nginx.conf
server_names_hash_bucket_size
Yönerge bulun ve #
satırı kaldırmak için sembolü 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 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
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/html
dizinin 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ı kullanmazsites-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, bunlarsites-available
dizinde 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.