Ubuntu 19.10 Nginx, PHP-FPM ile Optimize LEMP Server Kurulumu

Tutorial Özeti:
• Nginx Kurulumu (Brotli, ngx_pagespeed ve Naxsi WAF ile)
• MySQL Kurulumu ve Güvenliği
• PHP-FPM Kurulumu (PHP-FPM 7.3 Son versiyon)
• Nginx için PHP-FPM konfigrasyonu
• Nginx Sites PHP-FPM Ayarı

Nginx kurulum

Nginx kurulumu için Ngnix-EE den yardım alıyoruz bu sayede brotli, ngx_pagespeed ve Naxsi gibi bir çok eklentiyi de içerecek şekilde kurulumu tamamlıyoruz. (Eğer kurulum hata verirse aynı komutla tekrar deneyin)
https://virtubox.github.io/nginx-ee/

Kurulumu full olarak başlatmak için tek yapanız gereken aşaıdaki komutu çalıştırmak.
bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --full


Mysql Kurulum

apt-get install mysql-server -y
systemctl enable mysql.service
systemctl start mysql.service

Mysql Güvenliği:

Mysql güvenliğini sağlamak için mysql_secure_installation scriptini çalıştırıyoruz.

mysql_secure_installation

(y)es ile mysql parolasını değiştiriyoruz ve sonra bütün hepsine yes diyoruz.

PHP-FPM Kurulum

PHP 7.3-FPM versiyonunun kurulumunu gerçekleştireceğiz;

software-properties-common package i yüklüyoruz.

apt-get install software-properties-common

ondrej’in PPA sını sources e ekliyoruz ve update yapıyoruz

add-apt-repository -y ppa:ondrej/php
apt-get update

Eklentileri ile birlikte PHP-FPM’i kuruyoruz:

apt install php7.3-fpm php7.3-common php7.3-zip php7.3-curl php7.3-xml php7.3-xmlrpc php7.3-json php7.3-mysql php7.3-pdo php7.3-gd php7.3-imagick php7.3-ldap php7.3-imap php7.3-mbstring php7.3-intl php7.3-cli php7.3-recode php7.3-tidy php7.3-bcmath php7.3-opcache

Kurulum tamamlandıktan sonra php -v komutu ile php versiyonunu kontrol edebiliriz. apt policy php7.3-cli ile de kurulu versiyonun kontrolü sağlanabilir.

Nginx için PHP-FPM konfigrasyonu

php.ini dosyasını düzenliyoruz
nano /etc/php/7.3/fpm/php.ini

Ayarlar aşağıdaki şekilde olmalı eğer ne yaptığınızı biliyorsanız kendinize göre modifiye edebilirsiniz.

max_execution_time = 180
max_input_time = 360
max_input_vars = 5000
memory_limit = 256M
cgi.fix_pathinfo = 0
file_uploads = On
upload_max_filesize = 100M
allow_url_fopen = On

Nginx i ve PHP-FPM i yeniden başlatıyoruz.

systemctl restart nginx.service
systemctl restart php7.3-fpm

Nginx Sites PHP-FPM Ayarı

.php ile biten istekleri PHP-FPM ile işlemek için her bir sitede;

location ~* .php$ {….} ayarlamak gerekmekte ayarlar aşağıdaki gibi gözükmeli.

server {
    listen         80 default_server;
    listen         [::]:80 default_server;
    server_name    _;
    root           /var/www/html;
    index          index.html;

  location ~* \.php$ {
    fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
  }
}

Ayarlar yapıldıktan sonra nginx -s reload ile nginx’i reload ediyoruz.

Şuan PHP destekli bir LEMP sunucunun kurulumunu gerçekleştirdik. Bir PHP dosyası hazırlayarak bunu test edebilirsiniz.

Pagespeed Eklentisini etkinleştirmek için aşağıdaki yönergeleri takip edebilirsiniz:
https://github.com/VirtuBox/nginx-ee/wiki/PageSpeed

Webp Desteği için aşağıdaki yönergeleri takip edebilirsiniz
https://github.com/VirtuBox/nginx-ee/wiki/Webp-Support
Nginx-ee nin paylaştığı ayarın wordpress için olduğunu göreceksiniz normal bir sitenin herhangi bir dizininde çalışması için aşağıdaki yazıda paylaşılan ayarı uygulayabilir ayrıca webp ye dönüştürme kodunu kullanabilirsiniz
https://itchy.nl/webp-support-for-nginx