Bu öğretici, Ubuntu 20.04’e LEMP yığınının (Nginx, MariaDB ve PHP 7.4) nasıl kurulacağını gösterecektir. Yazılım yığını demek, birlikte paketlenmiş bir dizi yazılım aracı anlamına gelir. LEMP, hepsi açık kaynak kodlu ve kullanımı ücretsiz olan Linux, Nginx (Engine-X), MariaDB / MySQL ve PHP’yi temsil eder. 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.
Ön gereksinimler
- Bu eğiticiyi takip etmek için, yerel bilgisayarınızda veya uzak bir sunucuda çalışan Ubuntu 20.04 işletim sistemine ihtiyacınız vardır.
- Ubuntu 20.04 LTS kurulu bulut sunucu için DigitalOcean tavsiyemdir.
Adım 1: Yazılım Paketlerini Güncelleyin
LEMP yığınını yüklemeden önce, Ubuntu 20.04 işletim sisteminizde aşağıdaki komutları çalıştırarak depo ve yazılım paketlerini güncelleyin:
sudo apt update
sudo apt upgrade -y
Adım 2: Nginx web sunucusunu yükleyin
Nginx yüksek performanslı bir web sunucusu ve kullanımı çok yaygındır. Aynı zamanda bir ters proxy ve ön belleğe alma sunucusu olarak kullanılabilir. Nginx Web Server’ı yüklemek için aşağıdaki komutu çalıştırın:
sudo apt install nginx -y
Kurulduktan sonra, Nginx’i aşağıdaki komutu çalıştırarak önyükleme de otomatik olarak başlatmayı etkinleştirebilirsiniz:
sudo systemctl enable nginx
Sonra bu komutla Nginx’i başlatın:
sudo systemctl start nginx
Şimdi durumunu kontrol edin:
sudo systemctl status nginx
Çıktı:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-24 07:57:51 CEST; 7min ago
Docs: man:nginx(8)
Main PID: 6507 (nginx)
Tasks: 4 (limit: 4566)
Memory: 5.2M
CGroup: /system.slice/nginx.service
├─6507 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─6508 nginx: worker process
├─6509 nginx: worker process
└─6510 nginx: worker process
Apr 24 07:57:51 sizinalanadiniz systemd[1]: Starting A high performance web server and a reverse proxy server...
Apr 24 07:57:51 sizinalanadiniz systemd[1]: Started A high performance web server and a reverse proxy server.
Nginx versiyonunu kontrol edin:
nginx -v
Çıktı:
nginx version: nginx/1.17.10 (Ubuntu)
Şimdi Ubuntu 20.04 sunucunuzun genel IP adresini tarayıcı adres çubuğuna yazın. Nginx web sunucusunun düzgün çalıştığı anlamına gelen Welcome to Nginx
web sayfasını görmelisiniz. Yerel Ubuntu 20.04 bilgisayarınıza LEMP yüklüyorsanız, tarayıcı adres çubuğuna 127.0.0.1
yazın veya localhost
yazın.
Bağlantı reddedilirse veya tamamlanamazsa, TCP bağlantı noktası 80’e gelen istekleri engelleyen bir güvenlik duvarı olabilir. iptables güvenlik duvarı kullanıyorsanız, TCP bağlantı noktası 80’i 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, TCP bağlantı noktası 80’i açmak için bu komutu çalıştırın.
sudo ufw allow http
Son olarak, web dizininin sahibini 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
Adım 3: MariaDB veritabanı sunucusunu yükleyin
MariaDB, MySQL için bir drop-in yerine geçer. Yani Oracle üzerindeki ticari kaygılar nedeniyle eski MySQL geliştiricileri tarafından geliştirilmiştir. MariaDB’i Ubuntu 20.04’e yüklemek için aşağıdaki komutu girin:
sudo apt install mariadb-server mariadb-client -y
Yüklendikten sonra, MariaDB sunucusu otomatik olarakbaşlatılacaktır. Durumunu kontrol etmek için systemctl komutunu kullanın:
systemctl status mariadb
Çıktı:
● mariadb.service - MariaDB 10.3.22 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-24 08:12:49 CEST; 14s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 7540 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 31 (limit: 4566)
Memory: 66.8M
CGroup: /system.slice/mariadb.service
└─7540 /usr/sbin/mysqld
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: Processing databases
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: information_schema
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: mysql
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: performance_schema
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: Phase 6/7: Checking and upgrading tables
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: Processing databases
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: information_schema
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: performance_schema
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: Phase 7/7: Running 'FLUSH PRIVILEGES'
Apr 24 08:12:49 sizinalanadiniz /etc/mysql/debian-start[7579]: OK
Çalışmıyorsa, şu komutla başlatın:
sudo systemctl start mariadb
MariaDB’in önyükleme sırasında otomatik olarak başlamasını sağlamak için:
sudo systemctl enable mariadb
Şimdi yükleme sonrası güvenlik komut dosyasını çalıştırın:
sudo mysql_secure_installation
MariaDB kök şifresini girmenizi istediğinde, kök şifre henüz ayarlanmadığından ENTER tuşuna basın. Ardından, MariaDB sunucusunun kök şifresini ayarlamak için Y yanıtını girin.
Ardından, anonim kullanıcıyı kaldıracak, uzak kök girişini devre dışı bırakacak ve test veritabanını kaldıracak kalan tüm soruları cevaplamak için Y ve ENTER tuşuna basabilirsiniz. Bu adımlar, MariaDB veritabanı güvenliği için temel bir gerekliliktir. (Y’nin büyük harfle yazıldığına dikkat edin, bu da varsayılan cevap olduğu anlamına gelir.)
Varsayılan olarak, Ubuntu’daki MariaDB paketi, unix_socket
ile kullanıcı girişini doğrular. Bu, temelde MariaDB konsoluna giriş yapmak için işletim sisteminin kullanıcı adını ve şifresini kullanabileceğiniz anlamına gelir. Böylece MariaDB kök şifresi vermeden giriş yapmak için aşağıdaki komutu çalıştırabilirsiniz.
sudo mariadb -u root
Çıkmak için:
exit;
MariaDB sunucu sürüm bilgilerini denetleyin:
mariadb --version
mariadb Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Gördüğünüz gibi, MariaDB 10.3.22 sürümünü kurduk.
Adım 4: PHP 7.4’ü yükleyin
PHP 7.4, Ubuntu 20.04 deposuna dahil edilmiştir ve PHP 7.3 sürümüne göre küçük bir performans iyileştirmesine sahiptir. PHP 7.4 ve bazı gerekli uzantılarını yüklemek için aşağıdaki komutu girin.
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-curl -y
PHP uzantıları genellikle WordPress gibi içerik yönetim sistemleri (CMS) için gereklidir. Bu PHP uzantılarını yüklemek, CMS’NİZİN sorunsuz çalışmasını sağlar.
Şimdi php7.4-fpm’yi başlatın:
sudo systemctl start php7.4-fpm
Açılışta otomatik başlatılmasını sağlayın:
sudo systemctl enable php7.4-fpm
Durumunu kontrol edin:
systemctl status php7.4-fpm
Örnek çıktı:
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-24 08:21:45 CEST; 50s ago
Docs: man:php-fpm7.4(8)
Main PID: 19810 (php-fpm7.4)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 4566)
Memory: 9.5M
CGroup: /system.slice/php7.4-fpm.service
├─19810 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
├─19821 php-fpm: pool www
└─19822 php-fpm: pool www
Apr 24 08:21:45 sizinalanadiniz systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Apr 24 08:21:45 sizinalanadiniz systemd[1]: Started The PHP 7.4 FastCGI Process Manager.
Adım 5: Nginx sunucu blok dosyası oluşturun
Nginx sunucu bloğu, Apache’deki sanal bir ana bilgisayar gibidir. PHP kodunu çalıştırmak için yetersiz kalacağı için varsayılan sunucu bloğunu kullanmayacağız ve değiştirirsek, sorunlar çıkacaktır. Bu nedenle, aşağıdaki komutu çalıştırarak dizin sites-enabled
içindeki sembolik bağlantıyı default
kaldırın. (/etc/nginx/sites-available/default
)
sudo rm /etc/nginx/sites-enabled/default
Daha sonra yeni bir blok dosyası açın:
sudo nano /etc/nginx/conf.d/default.conf
Boş dosya içerisine aşağıdakileri kopyalayın:
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;
}
}
Kaydedin ve dosyayı kapatın.
Sonra Nginx yapılandırmasını test edin:
sudo nginx -t
Şu çıktıyı vermelidir:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Test başarılı olursa, Nginx’i yeniden başlatın:
sudo systemctl reload nginx
Adım 6: PHP 7.4’ü test edin
PHP-FPM’yi Nginx web sunucusu ile test etmek için site ana dizinide bir bilgi.php dosyası oluşturmamız gerekiyor:
sudo nano /usr/share/nginx/html/bilgi.php
Aşağıdaki PHP kodunu dosyaya yapıştırın.
<?php phpinfo(); ?>
Kaydedin ve dosyayı kapatın.
Şimdi tarayıcı adres çubuğuna http://sunucuipadresi/bilgi.php
girin. Bu öğreticiyi yerel bilgisayarınızda izliyorsanız 127.0.0.1/bilgi.php
yazmalısınız.
Şu an sunucunuzun ve PHP’nizin bilgilerini görüyor olmalısınız. Bu sayfa, PHP betiklerinin Nginx web sunucusu ile düzgün çalışabileceği anlamına gelir.
Tebrikler! Ubuntu 20.04’te Nginx, MariaDB ve PHP 7.4’ü başarıyla kurdunuz. Sunucunuzun güvenliği için, bilgi.php
dosyasını şimdi silmelisiniz.
sudo rm /usr/share/nginx/html/bilgi.php
İşte bu! Umarım bu öğretici Ubuntu 20.04 LTS üzerinde LEMP yüklemenize yardımcı olmuştur. Her zaman olduğu gibi, bu yazıyı yararlı bulduysanız beğenebilir, aşağıdan fikirlerinizi bizimle paylaşabilirsiniz