NGINX, MariaDB, PHP (LEMP) Kurulumu

Administrator
Administrator
5 Dakika Okuma Süresi
lemp_cover

Her ne kadar çeşitli paneller kullanarak sunucularımızı oluşturabilsekte, en temiz ve performanslı kurulum sanırım manuel kurulum diyebilirim. Bu yazımda Ubuntu, Centos ve Debian için NGINX, MariaDB ve PHP kurulumu yapacağız.

NGINX, MariaDB, PHP Kurulumu Nasıl Yapılır?

Ubuntu / Debian

NGINX Kurulumu

Sunucumuzdaki tüm bileşenleri güncelliyoruz.

apt-get update && apt-get upgrade

Herşey hazır olduktan sonra NGINX kurulumuna geçiyoruz.

sudo apt install nginx

Yükleme işlemi bittikten sonra NGINX bağlantı noktasına trafik izni vermemiz gerekiyor. Aşağıdaki kodu yazıp NGINX trafiğine izin veriyoruz.

sudo ufw allow 'Nginx Full'
cloudflare

NGINX bağlantı noktasının düzgün çalışıp çalışmadığını kontrol ediyoruz. Herşeyi doğru yaptıysak çıktı yukarıdaki resimdeki gibi olmalıdır.

sudo ufw status

MariaDB Kurulumu

MariaDB kurulum dosyalarını sunucumuza yüklüyoruz.

sudo apt install mariadb-server

MariaDB kurulumunu başlatıyoruz.

sudo mysql_secure_installation

Karşımıza gelicek olan ekranda “Root” şifresi değiştirilsin mi diye soracak “N” diyerek geçiyoruz. Bundan sonra çıkacak tüm sorulara “Y” diyerek geçiyoruz ve kurulumu bitiriyoruz.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): N

MariaDB düzgün çalışıyor mu diye kontrol ediyoruz.

sudo systemctl status mariadb

Örnek çıktı aşağıdaki gibi olmalıdır.

● mariadb.service - MariaDB 10.3.22 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-05-12 13:38:18 UTC; 3min 55s ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 25914 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 31 (limit: 2345)
     Memory: 65.6M
     CGroup: /system.slice/mariadb.service
             └─25914 /usr/sbin/mysqld

PHP Kurulumu

Ondrej deposunu sunucumuza ekliyoruz.

sudo add-apt-repository ppa:ondrej/php

PHP kurulumunu yapıyoruz.

sudo apt install php8.1 php8.1-fpm

NGINX / PHP Konfigürasyon

Alan adımızı çalıştıracağımız klasörü oluşturuyoruz.

sudo mkdir /var/www/alan_adiniz

Klasör izinlerini ayarlarıyoruz.

sudo chown -R $USER:$USER /var/www/alan_adiniz

Alan adımıza ait conf dosyasını oluşturuyoruz.

sudo nano /etc/nginx/sites-available/alan_adiniz

Nano editörde aşağıdaki kodu kendinize uygun şekilde doldurup “ctrl+x” sonra “y” basarak kaydediyorsunuz.

server {
    listen 80;

    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END

    #SSL_START

    listen 443 ssl;
    ssl on;
    ssl_certificate /etc/nginx/ssl/alan_adinizcom(birlesik yazın, nokta koymayın).pem; 
    ssl_certificate_key /etc/nginx/ssl/alan_adinizcom(birlesik yazın, nokta koymayın).key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;

    #SSL_END

    server_name alan_adiniz.com www.alan_adiniz.com;
    root /var/www/alan_adiniz.com;

    index index.html index.htm index.php;

    location / {
	 try_files $uri $uri/ /index.php?$args;
    }
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

    
location = /robots.txt {
    try_files $uri $uri/ /index.php?$args;
    access_log off;
    log_not_found off;
}



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

    location ~ /\.ht {
        deny all;
    }

}

SSL Kurulumu

Ben DNS servisi olarak her zaman CloudFlare DNS kullandığım için SSL işlemlerinide CloudFlare üzerinden göstereceğim. Belki ileride Let’s Encrypt kurulumu ile ilgili bir yazı yazarsam onuda bu rehberle birleştiririm.

CloudFlare kullanıcı panelimizin sidebar menüsünden “SSL /TLS” tıklıyoruz.

cloudflare

“Your SSL/TLS encryption mode” kısmından “Full” seçiyoruz.

Ardından yine sidebar münüsünden “Origin Server” tıklıyoruz.

cloudflare

“Create Certificate” butonuna tıklayıp, sunucumuz için yeni bir SSL sertifikası oluşturuyoruz.

cloudflare

Çıkan sayfada hiçbir şey ellemeden “Create” butonuna tıklıyoruz.

“Create Certificate” butonuna tıklayıp, sunucumuz için yeni bir SSL sertifikası oluşturuyoruz.

cloudflare

Karşımıza gelen bu sayfayı kapatmadan sunucumuzda SSL için düzenlemelere geçiyoruz. Aşağıdaki kod ile sunucumuzda SSL dosyalarını barındıracağımız klasörü oluşturuyoruz.

sudo mkdir /etc/nginx/ssl

“Aşağıdaki kodu yine kendimize göre düzenliyor ve Nano editörü açıyoruz.

sudo nano /etc/nginx/ssl/alan_adiniz.pem

Karşımıza gelen editöre açık bıraktığımız CloudFlare sayfasındaki “Origin Certificate” kısmındaki kodu yapıştırıyor ve ctrl+x – “y” diyerek kayıt ediyoruz.

Yine yukarıdakine benzer işlemleri bu sefer “Private Key” için yapacağız. Aşağıdaki kodu kendimize göre düzenliyor ve Nano editörü açıyoruz.

sudo nano /etc/nginx/ssl/alan_adiniz.key

Karşımıza gelen editöre açık bıraktığımız CloudFlare sayfasındaki “Private Key” kısmındaki kodu yapıştırıyor ve ctrl+x – “y” diyerek kayıt ediyoruz.

SSL kurulumunu böylelikle tamamlamış oluyoruz, aşağıdaki kod ile NGINX servisini yeniden başlatıyoruz ve sisteminiz kullanılabilir hale gelmiş oluyor.

sudo systemctl reload nginx

Site klasörünüzün NGINX kurulumunda oluşturduğumuz /var/www/alan_adiniz alanında olduğunu tekrar hatırlatmak isterim. Herhangi bir sorunuz veya hata ile karşılaşırsanız yorumlara yazabilirsiniz.

Paylaş
Yorum Yap

Notice: ob_end_flush(): Failed to send buffer of zlib output compression (0) in /home/justswah/public_html/wp-includes/functions.php on line 5420