Ubuntu Server - Nginx Kurulumu
Bir önceki yazımda (FTP Kurulumu) üzerinde ubuntu yüklü olan sunucumuzda ftp için gerekli ayarlarımızı yapmıştık. Bu yazımda ise "/var/www/demiremrece" dosya yolunda olan sitemizi en yaygın web sunucularından biri olan nginx ile host edeceğiz.
Bir terminal açıp,
$ ssh kullanıcı_adınız@SERVER_IP_ADRESINIZ
ile sunucumuza bağlandıktan sonra öncelikle nginx kurulumunu yapalım.
$ sudo apt-get update
$ sudo apt-get install nginx
Gerekli prosedürü kabul ettiken sonra nginx için lazım olan tüm paketler kurulacakır.
Güvenlik İzni
Nginx yapılandırmasından önce, servisin çalışabilmesi için güvenlik duvarında (firewall) izin verilmiş olması gerekmektedir.
$ sudo ufw app list
ile nginx profillerini görebiliriz.
-- Çıktı --
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
- Nginx HTTP: Bu profil için 80 portu açılıyor. Dolayısıyla normal ve şifrelenmemiş http protokolüne izin vermiş oluyoruz.
- Nginx HTTPS: Bu profil için 443 portu açılıyor ve SSL/TSL protokollerine izin vermiş oluyoruz.
- Nginx Full: Bu profile izin verirsek ise hem http hem de https protokolleriyle sunucumuz çalışabilmektedir.
Ben herhangi bir SSL ayarı yapılandırması yapmayacağımdan dolayı sadece http trafiğine izin vermem yeterli. Şu an kendi blogumda da durum bu yönde.
$ sudo ufw allow 'Nginx HTTP'
$ sudo ufw status
-- Çıktı --
20/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
990/tcp ALLOW Anywhere
80 ALLOW Anywhere
22 ALLOW Anywhere
20/tcp (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
990/tcp (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
Görüldüğü üzere 80 portu nginx kullanımı için listeye eklenmiş.
Nginx Status
Başarılı bir kurulum yaptıysak, nginx servisinin otomatik olarak başlatılmış olması gerekiyor. Kontrol etmek için;
$ systemctl status nginx.service
--Çıktı--
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
Active: active (running) since Tue 2018-05-08 14:45:41 UTC; 3 weeks 0 days ag
Main PID: 1466 (nginx)
Tasks: 2
Memory: 3.6M
CPU: 15.331s
CGroup: /system.slice/nginx.service
├─1466 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
└─1490 nginx: worker process
Görüldüğü üzere nginx arkaplanda size hizmet etmek için çalışıyor. Bunu nginx kurulumunun oluşturduğu varsayılan nginx sayfasına giderek de anlayabiliriz. Eğer ip adresinizi bilmiyorsanız curl kullanarak öğrenebilirsiniz.
$ curl ipecho.net/plain; echo
-- Çıktı --
SERVER_IP_ADRESINIZ
Tarayıcınızı açıp adrese (http://SERVER_IP_ADRESINIZ) gittiğinizde, aşağıdaki sayfayı görüyor olmanız gerekiyor. Aksi durumda yukarıdaki işlemlerde bir hata yapmışsınız ya da nginx çalışmıyordur.
Server Blokları
Eğer daha önce nginx yerine apache ile çalıştıysanız "Virtual Host" terimine aşinasızdır demektir. Kısacası bize farklı domainlere aynı sunucuda hizmet verebilmemizi sağlar. Apache'deki virtual hostun karşılığı nginx'de "Server Block" tur.
İlk önce FTP ile ilgizi yazımdaki gibi sitemizin dosyalarını barındırmak için bir dizin oluşturalım.
$ sudo mkdir /var/www/demiremrece
Bu klasörün içindekilerin okunabilir ve çalıştırılabilir olması için izin vermeliyiz.
$ sudo chmod -R 755 /var/www/demiremrece
İçine de örnek bir index.html dosyası atalım.
<html>
<head>
<title>demiremrece.com</title>
</head>
<body>
<h1>Harika! Sayfamız çalışıyor.</h1>
</body>
</html>
Artık bu siteyi server blokları kullanarak yayınlayabiliriz.
$ cd /etc/nginx/sites-available/
Default ayarları kopyalayıp örnek sitemiz için bir .conf dosyası oluşturuyoruz.
$ sudo cp /etc/nginx/sites-availabe/default.conf /etc/nginx/sites-availabe/demiremrece.com.conf
Şimdi bu dosyayı açıp ayarlarımızı yapalım.
$ sudo nano /etc/nginx/sites-available/demiremrece.com.conf
Dosya içeriğini aşağıdakiyle değiştirelim:
server {
listen 80;
listen [::]:80;
server_name demiremrece.com;
root /var/www/demiremrece/;
index index.html;
server_name demiremrece.com;
location / {
try_files $uri $uri/ =404;
}
}
Daha sonrasında nginx'in yeniden başladığında okuyacağı /sites-enabled klasörüne .conf dosyamızı linkleyelim.
$ sudo ln -s /etc/nginx/sites-available/demiremrece.com.conf /etc/nginx/sites-enabled/
Bu değişiklikle birlikte sunucumuz demiremrece.com harici gelen isteklere default.conf kullanarak cevap verecek, eğer sitemize erişim isteniyorsa ise demiremrece.conf ayarlarına göre yönlendirme yapılacaktır. Aynı şekilde başka server blokları da tanımlayarak birden fazla domaine hizmet verebilirsiniz.
Değişikliklere göre nginx'i yeniden başlatmak için:
$ sudo systemctl restart nginx
DNS ayarları yapılandırıldıysa oluşturduğunuz domaine herhangi bir tarayıcıdan ya da eğer yerel ortamda çalışıyorsanız sunucudaki tarayıcınızdan örnek sayfamıza erişebileceğinizi göreceksiniz.