Ubuntu 20.04 Sunucusuna / Masaüstüne LEMP Yığını Nasıl Kurulur

Merhabalar,

Bu eğitim size LEMP yığınının (Nginx, MariaDB ve PHP7.4) Ubuntu 20.04’e nasıl kurulacağını gösterecektir. Yazılım yığını, birlikte paketlenmiş bir dizi yazılım aracıdır. LEMP, tümü açık kaynaklı ve kullanımı ücretsiz olan Linux, Nginx (Engine-X), MariaDB / MySQL ve PHP’nin kısaltmasıdır. Dinamik web sitelerine ve web uygulamalarına güç veren en yaygın yazılım yığınıdır. Linux işletim sistemidir; Nginx web sunucusudur; MariaDB / MySQL, veritabanı sunucusudur ve PHP, dinamik web sayfaları oluşturmaktan sorumlu sunucu tarafı kodlama dilidir.

Önkoşullar:
Bu makaleyi takip etmek için, yerel bilgisayarınızda veya uzak bir sunucuda çalışan bir Ubuntu 20.04 İşletim Sistemine ihtiyacınız vardır.
Bir VPS (Sanal Özel Sunucu)  üzerine de bu kurulumu yapabilirsiniz,  piyasada bununla bir çok site bulabilirsiniz.Ve tabii bu kurulum için bir alan kullanacaksanız onun satın almasını yapıyor olmanız gerekiyor.Şimdi artık yavaş yavaş kurulum adımlarına başlayalım.
1.Yazılım Paketlerini Güncelleme:
LEMP yığınını yüklemeden önce, Ubuntu 20.04 işletim sisteminizde aşağıdaki komutları çalıştırarak yazılım paketlerini güncelleyelim.
sudo apt update
sudo apt upgrade

2.Nginx Web Sunucusunu Kurulumu:

Nginx, yüksek performanslı bir web sunucusudur ve bu günlerde çok popülerdir. Ayrıca ters proxy ve önbellek sunucusu olarak da kullanılabilir. Nginx Web sunucusunu kurmak için aşağıdaki komutu giriyorum.

 

 

 

Yüklendikten sonra, aşağıdaki komutu çalıştırarak Nginx’in makine boot ettiğinde otomatik olarak başlamasını sağlayabiliriz.Bunu yapmazsak servisi manuel çalıştırmamız gerekir.

sudo systemctl enable nginx

 

 

Ardından Nginx’i şu komutla başlatıyorum

sudo systemctl start nginx

 

 

Şimdi durumunu kontrol ediyorum

sudo systemctl status nginx

 

 

Aldığım çıkış görüntüsü:

 

 

“Enable”, önyükleme sırasında otomatik başlatmanın etkinleştirildiğini ve Nginx’in çalıştığını görebiliriz. Ayrıca çıktıdan Nginx’in ne kadar RAM kullandığını da görebilirsiniz. Yukarıdaki komut çalıştırıldıktan hemen sonra kapanmazsa. Çıkmak için “q” tuşuna basmamız gerekebilir.

 

Nginx sürümünü kontrol ediyorum

nginx -vı

 

 

Komutun verdiği çıkış:

 

 

 

 

 

 

 

 

 

Şimdi tarayıcı adres çubuğuna Ubuntu 20.04 sunucunuzun genel IP adresini yazın. Nginx Web sunucusunun düzgün çalıştığı anlamına gelen “Nginx’e Hoş Geldiniz” Web sayfasını görmeliyiz.

 

Bağlantı reddedilirse veya tamamlanamazsa, TCP bağlantı noktası 80’e gelen istekleri engelleyen bir güvenlik duvarı olabilir. İptables güvenlik duvarı kullanıyorsanız, 80 numaralı TCP bağlantı noktasını açmak için aşağıdaki komutu çalıştırmanız gerekir.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

 

 

UFW güvenlik duvarı kullanıyorsanız, 80 numaralı TCP bağlantı noktasını açmak için bu komutu çalıştırın.

sudo ufw allow http

 

 

Son olarak, web dizininin sahibi olarak www-data (Nginx kullanıcısı) yapmamız gerekiyor. Varsayılan olarak, kök kullanıcıya aittir.

sudo chown www-data:www-data /usr/share/nginx/html -R

 

 

3. MariaDB Veritabanı Sunucusu Kurulumu:

MariaDB, MySQL için açılan bir alternatiftir. Oracle’ın MySQL’i kapalı kaynaklı bir ürüne dönüştürebileceğinden endişe eden eski MySQL ekibi üyeleri tarafından geliştirilmiştir. MariaDB’yi Ubuntu 20.04’e kurmak için aşağıdaki komutu girin.

sudo apt install mariadb-server mariadb-client

 

 

Kurulduktan sonra, durumunu kontrol etmek için systemctl kullanıyorum.

 

 

Eğer Servis çalışmıyor olarak gözüküyorsa aşağıdaki komut dizini ile servisi çalıştırabilirim.

sudo systemctl start mariadb

 

 

Makine her reboot ettiğinde MariaDB servisininin otomatik olarak başlayabilmesi için

sudo systemctl enable mariadb

 

 

Şimdi kurulum sonrası güvenlik komut dosyasını çalıştırıyorum.

sudo mysql_secure_installation

 

 

 

Ardından, anonim kullanıcıyı kaldıracak, uzaktan kök oturum açmayı devre dışı bırakacak ve test veritabanını kaldıracak tüm soruları yanıtlamak için Enter tuşuna basabilirsiniz. Bu adım, MariaDB veritabanı güvenliği için temel bir gerekliliktir. (Y’nin büyük harfle yazıldığına dikkat edin, bu, varsayılan yanıt olduğu anlamına gelir.)

 

 

 

Varsayılan olarak, Ubuntu’daki MaraiDB paketi kullanıcı girişini doğrulamak için unix_socket kullanır, bu da temelde MariaDB konsolunda oturum açmak için işletim sisteminin kullanıcı adını ve şifresini kullanabileceğiniz anlamına gelir. Böylece, MariaDB root şifresini sağlamadan oturum açmak için aşağıdaki komutu çalıştırabilirsiniz.

sudo mariadb -u root
exit;

 

 

MariaDB sunucu sürüm bilgilerini kontrol ediyorum.

mariadb --version

 

Komutun Çıkışı:

 

 

 

4.PHP7.4 Kurulumu:

 

PHP7.4, Ubuntu 20.04 deposuna dahildir ve PHP7.3’e göre küçük bir performans iyileştirmesine sahiptir. PHP7.4’ü ve bazı yaygın uzantıları yüklemek için aşağıdaki komutu giriyoum.

sudo apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml 
php7.4-gd php7.4-curla

 

 

Tüm paketler başarılı şekilde kurulduktan sonra,  Şimdi php7.4-fpm’yi başlatalım.

sudo systemctl start php7.4-fpm

 

 

Önyükleme sırasında otomatik başlatmayı etkinleştiriyorum.

sudo systemctl enable php7.4-fpm

 

 

Şimdi servisin durumunu kontrol edelim.

 

 

5.Bir Nginx Sunucu Bloğu Oluşturma:

Bir Nginx sunucu bloğu, Apache’deki sanal bir ana bilgisayar gibidir. PHP kodu için yetersiz olduğu için sunucu bloğunu kullanmayacağız ve onu değiştirirsek, bu bir karmaşa hale gelir. Bu başlık altında çalıştırarak sitelerin etkin olduğu dizindeki sembolik dersinde. (Hala / etc / nginx / sites-available / default olarak mevcuttur.)

sudo rm /etc/nginx/sites-enabled/default

 

 

Ardından, /etc/nginx/conf.d/ dizini altında yepyeni bir sunucu blok dosyası oluşturmak için Nano gibi bir komut satırı metin düzenleyicisi kullanalım.

sudo nano /etc/nginx/conf.d/default.conf

 

Aşağıdaki metni dosyaya yapıştırın. Aşağıdaki kod parçası, Nginx’in tümünü yakalama sunucu adıyla IPv4 bağlantı noktası 80 ve IPv6 bağlantı noktası 80’de dinlemesini sağlayacaktır.

server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files

location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}

 

Dosyayı kaydedin ve kapatın. (Nano metin düzenleyicide bir dosyayı kaydetmek için Ctrl + O tuşlarına basın, ardından onaylamak için Enter tuşuna basın. Çıkmak için Ctrl + X tuşlarına basın.

 

 

Ardından Nginx yapılandırmasını test ediyorum.

sudo nginx -t

 

 

 

Test başarılı olursa, Nginx’i yeniden yükleyin.

sudo systemctl reload nginx

 

 

6.PHP Testi:

PHP-FPM’yi Nginx Web sunucusuyla test etmek için webroot dizininde bir info.php dosyası oluşturmamız gerekir.

sudo nano /usr/share/nginx/html/info.php

 

Aşağıdaki PHP kodunu dosyaya yapıştırın.

 

<?php phpinfo(); ?>

 

Not: dosyayı CTRL + O ile kaydedip  Enter ile onaylayıp CTRL + X dosyadan çıkıyorum.

 

Dosyayı kaydedin ve kapatıyorum. Şimdi tarayıcının adres çubuğuna sunucu-ip-adresi / info.php girin. Sunucu-ip adresini gerçek IP’nizle değiştirin. Bu öğreticiyi yerel bilgisayarınızda çalıştırıyorsanız, 127.0.0.1/info.php  yada localhost/info.php biçimde erişebilirsiniz. (Local bilgisayardan kastım ubuntu serverın üzerinde )

 

 

 

Tebrikler! Ubuntu 20.04 üzerinde Nginx, MariaDB ve PHP7.4’ü başarıyla kurdunuz. Sunucunuzun güvenliği için, bilgisayar korsanlarının görmesini engellemek için info.php dosyasını şimdi silmelisiniz.

sudo rm /usr/share/nginx/html/info.php

 

 

Çıkabilecek kurulum sorunları ile ilgili bazı ip uçları:

 

Hatalarla karşılaşırsanız, neyin yanlış olduğunu bulmak için Nginx hata günlüğünü (/var/log/nginx/error.log) kontrol edebilirsiniz.

 

 

Nginx Otomatik Yeniden Başlatma:

Herhangi bir nedenle Nginx servisi çalışmazsa,  yeniden başlatmak için aşağıdaki komutu çalıştırmamız gerekir.

sudo systemctl restart nginx

 

 

Bu komutu manuel olarak yazmak yerine, nginx.service systemd servis birimini düzenleyerek Nginx’i otomatik olarak yeniden başlatabiliriz. Varsayılan systemd servis yapılandırmasını geçersiz kılmak için ayrı bir dizin oluşturuyoruz.

sudo mkdir -p /etc/systemd/system/nginx.service.d/
sudo mkdir -p /etc/systemd/system/nginx.service.d/

 

 

Ardından bu dizinin altında bir dosya oluşturun.

sudo nano /etc/systemd/system/nginx.service.d/restart.conf

 

Dosyaya aşağıdaki satırları ekleyelim, böylece Nginx bir arıza tespit edildikten 5 saniye sonra otomatik olarak yeniden başlatılacaktır. RetartSec’in varsayılan değeri 100 ms’dir ve bu çok küçüktür. Nginx, RestartSec yeterince büyük değilse “başlatma isteğinin çok hızlı tekrarlandığından” dolayı bir uyarı verebilir.

[Service]
Restart=always
RestartSec=5s


Dosyayı kaydedin ve kapatın. Ardından sistemi yeniden yükleyin
sudo systemctl daemon-reload



Bunun işe yarayıp yaramayacağını kontrol etmek için Nginx'i şu şekilde sonlandıralım
sudo pkill nginx


Ardından Nginx durumunu kontrol edin. Nginx'in otomatik olarak yeniden başlatıldığını görececeğiz.
systemctl status nginx
Umarım bu uzun makale işinize yarar.Okuduğunuz için teşekkür ederim.


Bu eğiticiye oy ver
[Total: 11 Average: 5]
Firat CANOĞLU TAĞ