Nginx, performansı ve kullanım kolaylığı nedeniyle çok popüler bir web sunucusudur. Bu eğitimde, CentOS 7 üzerinde Nginx'in kurulumu ve temel yapılandırması boyunca size yol göstereceğiz.
Serverspace içinde önceden yüklenmiş "Nginx" uygulaması ile bir sunucu oluşturabilirsiniz.
Nginx Kurulumu
Eğer root olmayan bir kullanıcı kullanıyorsanız, sudo haklarına sahip olmanız ve tüm komutların önüne sudo eklemeniz gerekir.
- Nginx'i yüklemek için EPEL deposunu ekleyin:
- Şimdi Nginx'i ve kolaylık sağlaması için nano metin düzenleyicisini kuracağız:
- Nginx varsayılan olarak hem IPv4 hem de IPv6 adresleriyle çalışacak şekilde yapılandırılmıştır. Eğer sonuncusu sunucuda yapılandırılmamışsa, benim durumumda olduğu gibi, web sunucusu basitçe başlamayacaktır. Bu nedenle, hemen yapılandırmaya gidiyoruz:
- Bir sonraki satırı bulun ve yorum yapın, yani başına bir # işareti koyun:
- Sonuç:
- Dosyayı kaydedelim ve yapılandırmada hata olup olmadığını kontrol edelim:
- Çıktı:
- Çıktınız farklı görünüyorsa, yapılandırmada hangi hataların düzeltilmesi gerektiğini söyler;
- Şimdi Nginx'i başlatalım ve otomatik çalıştırmaya ekleyelim:
- Güvenlik Duvarı kullanıyorsanız, web sunucusu için bir izin verme kuralı eklemeniz gerekir. Aşağıda Firewalld için bir örnek verilmiştir, komutları sırayla girin:
yum install epel-release -y
yum install nginx nano -y
nano /etc/nginx/nginx.conf
listen [::]:80 default_server;
# listen [::]:80 default_server;
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl enable --now nginx
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
Site dosyalarının konumunu yapılandırma
- Varsayılan olarak, nginx sitede bir bilgi sayfası görüntüler. Site dosyaları için farklı bir konum ayarlayalım ve kendi sayfamızı ekleyelim. Öncelikle gerekli dizinleri oluşturalım:
- Şimdi sayfanın kendisini yeni bir klasörde oluşturalım:
- Ve ona içerik ekleyin, bu herhangi bir şey olabilir. Örneğin:
- Dizinin ve içindeki dosyanın sahibini nginx kullanıcısı olarak ayarlayalım:
- Halihazırda nginx yapılandırmasında bulunan sanal ana bilgisayarı kullanacağız ve site dosyalarının konumu için yapılandırmayı değiştireceğiz. Bunu yapmak için nginx yapılandırmasını açın:
- Listen 80 default_server; ile başlayan server bölümünü ve içinde site dosyalarının yolunu belirleyen root parametresini bulmanız gerekir. Bunu az önce oluşturduğumuz /var/www/default/ yolu ile değiştirelim:
- Dosyayı kaydedin ve nginx'i yeniden başlatın;
- Şimdi, tarayıcı penceresinden sunucu adresine erişirken, yeni oluşturulan sayfanın içeriğini göreceksiniz.
mkdir -p /var/www/default
nano /var/www/default/index.html
<h1>My first web page</h1>
chown -R nginx:nginx /var/www/default/
nano /etc/nginx/nginx.conf
server {
listen 80 default_server;
# listen [::]:80 default_server;
server_name _;
root /var/www/default/;
...
listen 80 default_server;
# listen [::]:80 default_server;
server_name _;
root /var/www/default/;
...
systemctl restart nginx
PHP işleme kurulumu
- PHP ile çalışmak için php-fpm yükleyin:
- Şimdi onu çalıştıralım ve başlangıca ekleyelim:
- Daha önce olduğu gibi aynı server(sunucu) bölümünün sonundaki nginx yapılandırmasına php-fpm ile çalışma ayarlarını ekleyin:
- Nginx'i yeniden başlatın:
- php-fpm işlevselliğini test etmek için bir dosya oluşturalım:
- Tarayıcının adres çubuğunda http://server-IP/info.php adresini açalım ve PHP hakkındaki bilgileri görelim:
- Bu çıktı nginx + php-fpm'in çalıştığını doğrulamaktadır. Sunucunun çalışmasını test ettikten sonra, bu sayfayı sildiğinizden emin olun, çünkü sunucu güvenliği için bir tehdit oluşturmaktadır.
yum install php-fpm
systemctl enable --now php-fpm
nano /etc/nginx/nginx.conf
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
}
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
}
systemctl restart nginx
echo "" > /var/www/default/info.php