Ubuntu 20.04 Sunucu / Masaüstü Üzerinde LEMP Yığını Kurulumu

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 :slight_smile::+1:

1 Beğeni

Merhaba

Bu kadar net ve temiz bir anlatım yakın zamanda denk gelmemişti elinize sağlık

keşke phpmyadmin de kursaydın lazım olacağı kanaatindeyim

Teşekkür ederim

Selamlar ve hoş geldiniz,

Teşekkür ederim :slight_smile: phpMyAdmin için aslında Perfect Server konularında yazmak istedim. Ama YouTube’dan da talep geldi bir çok. Bu gün gece LEMP ve LAMP için iki makale yayınlayacağım phpMyAdmin kurulumuna yönelik :+1:

merhaba makaleler yayınlanmadı herhalde yayınlandıysa linkini paylaşmanız mümkün mü

naçizane bir fikir olarak ta yazılım yüklemesi yaparken tar -xf veya dpkg -i xf ve i nin ne işe yaradığı da kısaca yazılırsa çok daha iyi ve anlaşılabilir olacağı kanaatindeyim

elinde limux kodları ile ilgili bir kaynak varsa linki rica ediyorum

Selam,

Makaleler sırada yazılmayı bekliyorlar ama zaten bir değişiklik yok yazılım ve kurulum tarafında sizin beklemenize gerek yok :slight_smile:

Ben sadece Perfect Server içinde yazacağım dedim çünkü phpMyAdmin makaleninin küçük bir kısmı.

Şu makaledeki işlemleri uygulayabilirsiniz:

Bu arada son kullanıcıya her komutu açıklayamam mazur görünüz çünkü mevcutta sadece kullanıcının komutlarımıza güveni kısmında çok fazla detay veriyorum :handshake: Fikrinize saygı duyuyorum ve zamanım oldukça öğreticilerde daha fazla açıklama yazacağım :+1:

teşekkür ederim ilgin için kurulumda açıklamaların çok iyi ben sadece fikir olması açısından söylemiştim

1 Beğeni