Debian 10 Üzerinde Nginx, MariaDB, PHP (LEMP) Kurulumu

LEMP, dinamik web sayfaları ve web uygulamaları (WordPress, Joomla! gibi…) sunmak için kullanılabilen bir yazılım grubudur. “LEMP” adı, (E) Nginx web sunucusuna sahip bir Linux işletim sistemini tanımlayan bir kısaltmadır. Veriler bir MariaDB veritabanında saklanır ve dinamik işlemler PHP tarafından işlenir.

Bu yazılım grubu tipik olarak veritabanı yönetim sistemi olarak MySQL içermesine rağmen, Debian dahil olmak üzere bazı Linux dağıtımları MariaDB’i MySQL’in yerini alan bir yedek yazılım olarak kullanır.

Bu kılavuzda, veritabanı yönetim sistemi olarak MariaDB’i kullanarak, Debian 10 sunucunuza bir LEMP yazılım grubu yükleyeceksiniz.

Ön gereksinimler
Bu kılavuzu tamamlamak için bir Debian 10 sunucusuna (DigitalOcean ve Vultr tavsiyemdir) root ya da sudo kullanıcısı olarak SSH erişiminiz olmalıdır.

Adım 1 - Nginx Web Sunucusunu Yükleme

Web sitenizi ziyaretçilerinize sunmak için biz, genel performansı ve kararlılığıyla tanınan popüler bir web sunucusu olan Nginx’i kullanacağız .

Bu yöntem için kullanacağınız tüm yazılımlar doğrudan Debian’ın varsayılan paket depolarından gelir. Bu, yüklemeyi tamamlamak için apt paket yönetimini kullanabileceğiniz anlamına gelir .

apt komutunu bu oturum için ilk kez kullanacağınızdan, yerel paket dizininizi güncelleyerek başlamalısınız. Daha sonra kuruluma devam edebilirsiniz;

sudo apt update
sudo apt upgrade -y
sudo apt install nginx -y

Debian 10’da, Nginx kurulumdan sonra zaten direkt çalışmaya başlayacak şekilde yapılandırılmıştır.

Eğer çalışan bir ufw güvenlik duvarı varsa, Nginx için bağlantılara izin vermeniz gerekecektir. Yine de sadece sizin istediğiniz trafiğe izin verecek en kısıtlayıcı profili etkinleştirmelisiniz. Yoksa zaten alttaki komutlardan birincisi ile yine kurmuş olacağız.

Bunu aşağıdaki komutları sırasıyla yazarak etkinleştirebilirsiniz:

sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

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

sudo ufw status

Çıktıda HTTP, HTTP(S), OpenSSH trafiğine izin verildiğini görmelisiniz.

Eğer Nginx HTTP gibi önceden kurallar tanımladıysanız şu komutla kaldırın (Nginx Full parametresi hem HTTP hem HTTP(S) trafiğine izin verecektir);

sudo ufw delete allow 'Nginx HTTP'
sudo ufw delete allow 'Nginx HTTPS'

Şimdi, favori web tarayıcınızdan sunucunuzun etki alan adına veya genel IP adresine erişerek sunucunun çalışıp çalışmadığını test edin. Sunucunuza işaret eden bir alan adınız yoksa ve sunucunuzun genel IP adresini bilmiyorsanız, terminalinizde aşağıdaki komutu yazarak bulabilirsiniz:

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

Bu komut çıktı olarak birkaç IP adresi yazdıracaktır. Birincisini web tarayıcınızda deneyebilirsiniz. Web tarayıcınıza terminalden aldığınız adreslerden birincisini yazın.

Sizi Nginx’in varsayılan açılış sayfasına götürmelidir:

http://sizinalanadiniz.com
http://ipadresiniz

Debian Nginx'in varsayılan açılış sayfası

Adım 2 - MariaDB’i Yükleme

Artık web sunucunuz çalışıyor ve siteniz için veri depolamak ve yönetmek için veritabanı sistemini yüklemelisiniz.

Debian 10’da mysql-server geleneksel olarak MySQL sunucusunu kurmak için kullanılan meta paketin default-mysql-server yerini almıştır.

Ancak biz uzun süreli uyumluluk ve açık kaynağın devamlılığı için mysql-server yerine, yazılımın mariadb-server paketini kullanarak MariaDB yüklemenizi öneriyoruz.

Bu yazılımı yüklemek için şunu çalıştırın:

sudo apt install mariadb-server -y

Yükleme tamamlandığında, MariaDB ile önceden yüklenmiş olarak gelen bir güvenlik komut dosyasını çalıştırmanızı önermekteyiz. Bu komut dosyası güvenli olmayan bazı varsayılan ayarları kaldıracak ve veritabanı sisteminize erişimi makul ölçüde kilitleyecektir. Şimdi etkileşimli komut dosyasını şunları yazarak başlatın:

sudo mysql_secure_installation

Bu komut dosyası sizi MariaDB kurulumunuzda bazı değişiklikler yapabileceğiniz bir dizi bilgi istemine götürür. İlk bilgi istemi, geçerli veritabanı kök parolasını girmenizi ister. Bu sistem köküyle karıştırılmamalıdır. Veritabanı kök kullanıcı veritabanı sistemi üzerinde tam ayrıcalıkları olan bir idari kullanıcıdır. MariaDB’i yeni yüklediğiniz ve henüz herhangi bir yapılandırma değişikliği yapmadığınız için bu şifre boş kalmalıdır, bu yüzden sadece ENTER tuşuna basın .

Sonraki istemde bir veritabanı kök parolası ayarlamak isteyip istemediğiniz sorulur. MariaDB, kök kullanıcı için genellikle bir parola kullanmaktan daha güvenli olan özel bir kimlik doğrulama yöntemi kullandığından, şimdi bunu ayarlamanıza gerek yoktur. N yazın ve ENTER tuşuna basın.

Sonraki soruların varsayılanlarını kabul etmek için Y ve Enter tuşlarına basabilirsiniz. Bu takip eden istemler, anonim kullanıcıları ve test veritabanını kaldıracak, uzaktan kök oturum açmayı devre dışı bırakacak ve MariaDB’nin yaptığınız değişikliklere hemen uyması için bu yeni kuralları yazılıma yükleyecektir.

İşlem bittiğinde, alttaki komutu yazarak MariaDB konsoluna giriş yapın:

sudo mariadb

Bu komut ile, MariaDB sunucusuna yönetimsel veritabanı kullanıcı kökü olarak bağlanırsınız.
Aşağıdaki gibi bir çıktı görmelisiniz:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 53
Server version: 10.3.22-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Kök kullanıcı olarak bağlanmak için bir parola girmeniz gerekmediğine dikkat edin . Bu unix_socket yerine, yönetimsel MariaDB kullanıcısı için varsayılan kimlik doğrulama yöntemi olan şifreniz yerine kullanılır. Bu ilk başta bir güvenlik sorunu gibi görünse de, veritabanı sunucusunu aslında daha güvenli bir hale getirir, çünkü kök MariaDB kullanıcısı olarak oturum açmasına izin verilen kullanıcılar zaten sudo ayrıcalıklarına sahip sistem kullanıcılarıdır. Kısacası aynı ayrıcalıklardır :slight_smile: Pratik olarak ise, PHP uygulamanızdan bağlanmak için yönetici veritabanı kök kullanıcısını kullanamayacağınız anlamına gelir.

Daha fazla güvenlik için, özellikle sunucunuzda birden çok veritabanı barındırmayı planlıyorsanız, her veritabanı için daha az geniş ayrıcalıklara sahip özel kullanıcı hesaplarına sahip olmak en iyisidir. Böyle bir durumda yeni bir veritabanı olan ornek_veritabani ve yeni bir kullanıcı olan ornek_kullanici oluşturmamız gerekir. Yeni bir veritabanı oluşturmak için MariaDB konsolunuzdan aşağıdaki komutu çalıştırın:

CREATE DATABASE ornek_veritabani;

Artık yeni bir kullanıcı oluşturabilir ve yeni oluşturduğunuz özel veritabanında tam ayrıcalık tanıyabilirsiniz. Aşağıdaki komut bu oluşturulan kullanıcının parolasını şu şekilde ayarlar şifreniz, ancak bu değeri kendi seçtiğiniz güvenli bir parola ile değiştirmeniz gerekir.

GRANT ALL ON ornek_veritabani.* TO 'ornek_kullanici'@'localhost' IDENTIFIED BY 'şifreniz' WITH GRANT OPTION;

Bu, ornek_kullanici kullanıcısına ornek_veritabani veritabanı üzerinde tam ayrıcalıklar verirken, bu kullanıcının sunucunuzda başka veritabanları oluşturmasını veya değiştirmesini engeller.

Geçerli oturumda kaydedildiklerinden ve kullanılabilir olduklarından emin olmak için ayrıcalıkları temizleyin:

FLUSH PRIVILEGES;

Bu komutu takiben, MariaDB kabuğundan şu komutla çıkın:

exit

MariaDB konsolunda tekrar bu özel kullanıcının kimlik bilgilerini kullanarak oturum açın ve yeni kullanıcının uygun izinlere sahip olup olmadığını test edin;

mariadb -u ornek_kullanici -p

-p komutu ornek_kullanici kullanıcısını oluştururken kullanılan şifreyi isteyecektir. MariaDB konsolunda oturum açtıktan sonra, ornek_veritabani veritabanına erişiminiz olduğunu doğrulayın:

SHOW DATABASES;

Bu size aşağıdaki çıktıyı verecektir:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ornek_veritabani   |
| performance_schema |
+--------------------+
4 rows in set (0.002 sec)

MariaDB [(none)]>

MariaDB kabuğundan yine çıkmak için şunu komutu yazın:

exit

Bu noktada, veritabanı sisteminiz kuruldu ve LEMP grubunun son bileşeni olan PHP’yi kurmaya devam edebilirsiniz.

Adım 3 - Dinamik Veri İşleme için PHP Yükleme

İçeriğinize hizmet vermek için Nginx, verilerinizi depolamak ve yönetmek için MySQL kurduk. Artık web sunucusunda dinamik içerikler oluşturmak için PHP’yi yükleyebilirsiniz.

Apache, PHP tercümanını her talebe gömerken, Nginx, PHP işlemesi için harici bir yazılım gerektirir ve PHP tercümanı ile web sunucusu arasında köprü görevi görür. Bu, çoğu PHP tabanlı web sitesinde daha iyi bir performans sağlar, ancak ek yapılandırma gerektirir. php-fpm yani “PHP fastCGI işlem yöneticisi” anlamına gelen yüklemeniz ve Nginx’e PHP isteklerini işlenmek üzere bu yazılıma aktarmasını söylemeniz gerekir. Ayrıca, php-mysql yani PHP’nin MySQL tabanlı veritabanlarıyla iletişim kurmasını sağlayan bir PHP modülüne ihtiyacınız olacak. Çekirdek PHP paketleri otomatik olarak yan bağımlılıklar şeklinde kurulacaktır.

php-fpm ve php-mysql paketlerini kurmak için şu komutu çalıştırın:

sudo apt install php-fpm php-mysql -y

Artık PHP bileşenlerinizi yüklediniz. Ardından, Nginx’i bunları kullanacak şekilde yapılandırmalısınız.

Adım 4 - Nginx’i PHP İşlemciyi Kullanacak Şekilde Yapılandırma

Nginx web sunucusunu kullanırken, blokları yapılandırmak ve tek bir sunucuda birden fazla etki alanını barındırmak için sunucu blokları (Apache’deki sanal ana bilgisayarlara benzer) kullanılabilir. Bu kılavuzda biz, sizinalanadiniz.com örnek alan adı olarak kullanacağız.

Debian 10’da, Nginx’te varsayılan olarak etkin bir sunucu bloğu vardır ve dökümanları /var/www/html adresindeki bir dizinden sunmak üzere yapılandırılmıştır. Bu, tek bir site için iyi çalışıyor görünüyor olsa da, sunucunuzda birden fazla site barındırıyorsanız yönetilmesi zor bir hal alacaktır. Şimdi sizlerle beraber yeni bir alan adı için kayıt açacağız.

sizinalanadiniz.com için kök web dizinini aşağıdaki gibi oluşturun:

sudo mkdir /var/www/sizinalanadiniz.com

Ardından, dizinin sahipliğini $USER ortam değişkeni ile alan adınıza atayın;
Burada $USER, geçerli sistem kullanıcısıdır.

sudo chown -R $USER:$USER /var/www/sizinalanadiniz.com

Ardından, tercih ettiğiniz komut satırı düzenleyicisini kullanarak Nginx sites-available dizininde yeni bir yapılandırma dosyası açın . Burada biz nano editörünü kullanacağız;

sudo nano /etc/nginx/sites-available/sizinalanadiniz.com

Bu komut yeni bir boş dosya oluşturacak ve düzenlemek için açacaktır.
Aşağıdaki komutları yapıştırın (sizinalanadiniz.com kısımlarını düzenlemeyi unutmayın):

server {
    listen 80;
    listen [::]:80;

    root /var/www/sizinalanadiniz.com;
    index index.php index.html index.htm;

    server_name sizinalanadiniz.com www.sizinalanadiniz.com;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }
}

Bu, 80 bağlantı noktasını dinleyen ve yeni oluşturduğunuz web dizininden dosyalar sunan temel bir yapılandırmadır. Yalnızca sağlanan ana bilgisayara veya IP adresine yapılan isteklere yanıt verir ve Nginx sonuçları kullanıcıya göndermeden önce işler.

Düzenlemeyi bitirdiğinizde dosyayı kaydedin ve kapatın. Bunun için eğer nano kullandıysanız CTRL+X sonra y ve ENTER ile onaylayın.

Nginx sites-enabled dizinindeki yapılandırmanızı bağlayın ve etkinleştirin :

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

Bu komut, Nginx’e bir sonraki yükleme işleminde yapılandırmayı kullanmasını söyleyecektir. Yapılandırmanızı söz dizimi hataları için aşağıdaki komutla test edebilirsiniz:

sudo nginx -t

Herhangi bir hata bildirilirse, devam etmeden önce içeriğini gözden geçirmek için Nginx yapılandırma dosyanıza geri dönmelisiniz.

Hazır olduğunuzda, değişiklikleri uygulamak ve devam etmek için Nginx’i yeniden başlatın:

sudo systemctl reload nginx

Adım 5 - Yapılandırmayı Test Etmek için Bir PHP Dosyası Oluşturma

LEMP yığınınız artık tamamen ayarlanmış oldu. Nginx’in .php dosyaları PHP işlemcinize doğru bir şekilde teslim edebileceğini doğrulamak için test edeceğiz.

Bunu, belge kökünde bir test PHP dosyası oluşturarak yapabilirsiniz.

nano /var/www/sizinalanadiniz.com/test.php

Aşağıdaki satırları yeni dosyaya yazın veya yapıştırın.
Bu kod, sunucunuz hakkında detaylı bilgi döndüren geçerli bir PHP kodudur.

<?php
phpinfo();
?>

İşlem bittiğinde, uygulamak ve onaylamak için CTRL+X sonra y ve ENTER tuşlarına basarak dosyayı kaydedip, kapatın.

Artık Nginx yapılandırma dosyasında ayarladığınız alan adını veya genel IP adresini ziyaret ederek web tarayıcınızda http://sizinalanadiniz.com/test.php sayfasına erişebilirsiniz.

Sunucunuz hakkında ayrıntılı bilgi içeren bir web sayfası görmelisiniz.

Bu sayfada PHP sunucunuzla ilgili bilgileri kontrol ettikten sonra, sunucunuz hakkında hassas bilgiler içerdiğinden, oluşturduğunuz dosyayı kaldırmalısınız.

rm -r /var/www/sizinalanadiniz.com/test.php

Daha sonra ihtiyaç duyarsanız bu dosyayı her zaman yeniden oluşturabileceksiniz.

Adım 6 - PHP’den Veritabanı Bağlantısının Test Edilmesi (İsteğe bağlı)

PHP’nin MariaDB’ye bağlanıp bağlanamayacağını test etmek ve veritabanı sorgularını yürütmek için test etmek istiyorsanız, bir PHP komut dosyasından kukla verilerle bir test tablosu oluşturabilir ve içeriği için sorgulayabilirsiniz.

Bunun için ilk olarak, oluşturduğunuz veritabanı kullanıcısıyla MariaDB konsoluna bağlanın:

mariadb -u ornek_kullanici -p

yapilacaklar_listesi adlı bir tablo oluşturun. MariaDB konsolundan aşağıdaki ifadeyi çalıştırın:

CREATE TABLE ornek_veritabani.yapilacaklar_listesi (
    item_id INT AUTO_INCREMENT,
    content VARCHAR(255),
    PRIMARY KEY(item_id)
);

Şimdi, “yapilacaklar_listesi” tablosuna birkaç satır içerik ekleyin.
Farklı değerleri kullanarak bir sonraki komutu birkaç kez tekrarlamak isteyebilirsiniz:

INSERT INTO ornek_veritabani.yapilacaklar_listesi (content) VALUES ("ilk yapilacak sey");

Verilerin tablonuza başarıyla kaydedildiğini onaylamak için ise şu komutu çalıştırın:

SELECT * FROM ornek_veritabani.yapilacaklar_listesi;

Aşağıdaki çıktıyı göreceksiniz:

MariaDB [(none)]> SELECT * FROM ornek_veritabani.yapilacaklar_listesi;
+---------+-------------------+
| item_id | content           |
+---------+-------------------+
|       1 | ilk yapilacak sey |
+---------+-------------------+
1 row in set (0.001 sec)

MariaDB [(none)]>


Test tablonuzda geçerli verilerinizin bulunduğunu onayladıktan sonra MariaDB konsolundan çıkabilirsiniz:

exit

Artık MariaDB’ye bağlanacak ve içeriğinizi sorgulayacak PHP betiğini oluşturabilirsiniz.
Tercih ettiğiniz terminal editörünü kullanarak web kök dizininizde yeni bir PHP dosyası oluşturun.

nano /var/www/sizinalanadiniz.com/yapilacaklar_listesi.php

PHP betiğinize aşağıdaki içeriği ekleyin:

<?php
$user = "ornek_kullanici";
$password = "şifreniz";
$database = "ornek_veritabani";
$table = "yapilacaklar_listesi";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>Yapilacaklar listesi</h2><ol>";
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Hata!: " . $e->getMessage() . "<br/>";
    die();
}

Düzenlemeyi bitirdiğinizde dosyayı kaydedin ve kapatın.

Artık Nginx yapılandırma dosyasında ayarladığınız alan adını http://sizinalanadiniz.com/yapilacaklar_listesi.php veya genel IP adresini ziyaret ederek web tarayıcınızda bu sayfaya erişebilirsiniz. Test tablonuza eklediğiniz içeriği gösteren bir sayfa görmelisiniz.

Oluşturduğunuz dosyayı daha sonra alttaki komut ile silebilirsiniz;

rm -r /var/www/sizinalanadiniz.com/yapilacaklar_listesi.php

Sonuç

Bu kılavuzda, Nginx’i web sunucusu olarak kullanarak ziyaretçilerinize PHP web sitelerini ve uygulamalarını sunmak için esnek bir temel oluşturdunuz. Nginx’i PHP isteklerini ele alacak php-fpm olarak ayarladınız, ayrıca web sitenizin verilerini depolamak için bir MariaDB veritabanı kurdunuz.

Son olarak şuradan devam etmenizi öneriyoruz :wink:

Herhangi bir sorunla karşı karşıyaysanız, bu makaleyi yanıtlamaktan çekinmeyin :point_down:

Sevgili hocam size birkaç sorum olacak cevaplarsanız çok ama çok sevinirim.

  1. Nginx, mariadb, php ve php-fpm yükledik beki sunucuyu yeniden başlattığımızda bunları tekrar çalıştırmak yerine her için;

    sudo systemctl enable nginx
    sudo systemctl enable mariadb
    sudo systemctl enable php-fpm

Komutlarını kullanmalı mıyız?

  1. En önemli sorum:
    Nginx FastCache yapılandırması yapmak istiyorum.
    İnternette UBUNTU ile lemp wordpress kuran bir arkadaş buldum.
    Install WordPress with Ubuntu 22.04, NGINX, MariaDB and PHP 8.2 - Gulshan Kumar

Bu blogta fastcgi yapılandırmasını kullanmak istiyorum ama uymayan birkaç şey var!
Öncelikle SSL aldıktan sonra kod zaten sites-available klasörü içindeki dosyaya SSL gerekli kodu işleniyor.

İlgili kodu size atıyorum hocam.

# NGINX Cache path
fastcgi_cache_path /var/www/cache levels=1:2 keys_zone=WORDPRESS:100m inactive=6h;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
    listen         80;
    return 301 https://$host$request_uri;
}
server {
root /var/www/html;
index index.php index.html index.htm;
server_name .example.com;
client_max_body_size 0;

    listen [::]:443 ssl http2 ipv6only=on;
    listen 443 ssl http2;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_prefer_server_ciphers on;
        ssl_session_cache   shared:SSL:20m;
        ssl_session_timeout 20m;
        ssl_ciphers 'TLS13+AESGCM+AES128:EECDH+AES128';

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;


set $skip_cache 0;
    if ($request_method = POST) {set $skip_cache 1;}
    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|/wp-.*.php|index.php|sitemap(_index)?.xml") {set $skip_cache 1;}
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {set $skip_cache 1;}
    if ($query_string = "unapproved*") {set $skip_cache 1;}
    if ($cookie_woocommerce_items_in_cart = "1" ){ set $skip_cache 1;}
    if ($request_uri ~* "/(cart|checkout|my-account)/*$") {set $skip_cache 1;}

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~* \.php$ {

 if ($uri !~ "^/uploads/") {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        }

        try_files                       $uri =404;
        include                         /etc/nginx/fastcgi_params;
        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass                    unix:/run/php/php7.4-fpm.sock;
        fastcgi_index                   index.php;
                fastcgi_cache_bypass $skip_cache;
                fastcgi_no_cache $skip_cache;
                fastcgi_cache WORDPRESS;
                fastcgi_cache_valid 200 301 24h;
                add_header X-Cache $upstream_cache_status;

}

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
log_not_found off;
access_log off;
allow all;
}

location ~* .(css|gif|ico|svg|jpeg|jpg|js|png)$ {
expires 1y;
log_not_found off;
}

# Enable Gzip compression.
gzip on;

# Disable Gzip on IE6.
gzip_disable "msie6";

# Allow proxies to cache both compressed and regular version of file.
# Avoids clients that don't support Gzip outputting gibberish.
gzip_vary on;

# Compress data, even when the client connects through a proxy.
gzip_proxied any;

# The level of compression to apply to files. A higher compression level increases
# CPU usage. Level 5 is a happy medium resulting in roughly 75% compression.
gzip_comp_level 5;

# Compress the following MIME types.
gzip_types
 application/atom+xml
 application/javascript
 application/json
 application/ld+json
 application/manifest+json
 application/rss+xml
 application/vnd.geo+json
 application/vnd.ms-fontobject
 application/x-font-ttf
 application/x-web-app-manifest+json
 application/xhtml+xml
 application/xml
 font/opentype
 image/bmp
 image/svg+xml
 image/x-icon
 text/cache-manifest
 text/css
 text/plain
 text/vcard
 text/vnd.rim.location.xloc
 text/vtt
 text/x-component
 text/x-cross-domain-policy;
}

Şimdi sorunlar nedir?

  1. SSL editlenir sorun yok.

  2. Sizin blokta şunlar var
    location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }

ama o arkadaşın kodunda

try_files                       $uri =404;
include                         /etc/nginx/fastcgi_params;
fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass                    unix:/run/php/php7.4-fpm.sock;
fastcgi_index                   index.php;

Burada fastcgi_pass 7.4 olan linki sizdeki ile fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; değiştirilebilir. Ancak onda ayrıca include /etc/nginx/fastcgi_params; var. Acaba bunu silip sizin include snippets/fastcgi-php.conf; ile değiştisem işlem tamamlanır mı?
Başka bir sorun göremedim. Hatta SSL kodunuda o kişiden alsam hiç değiştirmesem pem key linklerini değiştirsem yeterli olur sanırım.

Tek yapmak istediğim fastcache nginx cache yapılandırması ama bu kodu kullanmak istiyorum.
4 farklı yer var
SSL bloğu,
include satırı
php sürüm fastcgi_pass satırı
ve son anda aklıma gelen
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; satırı.

çok teşekkür ederim.