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.
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.