Instalacja LEMP (Nginx) w Debianie 10

Stack LEMP podobnie jak i LAMP (Linux + Apache + MariaDB + PHP)jest powszechnie stosowany do hostowania aplikacji webowych. LEMP składa się z: systemu operacyjnego Linux, serwera Nginx (Engine-X), bazy danych MySQL/MariaDB oraz interpretera języka skryptowego PHP. W tym wpisie pokazujemy jak zainstalować stack LEMP w Debianie 10.

Nginx, MariaDB oraz PHP zainstalujemy z oficjalnych repozytoriów Debiana. Jeśli potrzebujemy najnowszych wersji tych pakietów można skorzystać z dodatkowych repozytoriów dla Debiana 10

Jak zawsze najpierw zaktualizujemy system.

apt update && apt upgrade -y

Instalacja Nginx

Nginx instalujemy poleceniem:

apt install nginx

Sprawdzamy status:

systemctl status nginx
● 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 Thu 2019-10-31 17:09:48 GMT; 32s ago
     Docs: man:nginx(8)
 Main PID: 17383 (nginx)
    Tasks: 3 (limit: 1150)
   Memory: 6.5M
   CGroup: /system.slice/nginx.service
           ├─17383 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─17384 nginx: worker process
           └─17385 nginx: worker process
...

Jeśli mamy włączony firewall UFW (domyślnie jest wyłączony) musimy odblokować porty HTTP i HTTPS (80,443).

ufw allow 80
ufw allow 443
ufw status

Możemy sprawdzić czy Nginx działa odwiedzając adres http://IP_SERWERA/.

Komendy do zarządzania usługą Nginx (start, stop, restart, reload)

systemctl start nginx
systemctl restart nginx 
systemctl stop nginx
systemctl reload nginx 
systemctl status nginx 

Instalacja MariaDB

W repozytorium Debiana 10 znajduje się MariaDB z serii 10.3, instalujemy poleceniem:

apt install -y mariadb-server mariadb-client

Uruchamiamy skrypt zabezpieczający, który pozwala usunąć anonimowych użytkowników, testową bazę, zabronić zdalnego logowania oraz ustawić hasło roota mysql.

mysql_secure_installation

Sprawdzamy działanie MariaDB – nazwą usługi jest mariadb lub mysql:

systemctl status mysql

Możemy już zalogować się do serwera MariaDB i tworzyć użytkowników oraz bazy.

root@debian:~# mysql -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 55
Server version: 10.3.17-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)

MariaDB [(none)]> 

Komendy do zarządzania usługą MariaDB:

systemctl start mariadb
systemctl restart mariadb
systemctl stop mariadb
systemctl reload mariadb

Instalacja PHP

Instalujemy PHP oraz moduł do obsługi MySQL(MariaDB) poleceniem:

apt install php-fpm php-mysqli
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'php7.3-mysql' instead of 'php-mysqli'
The following additional packages will be installed:
  libsodium23 php-common php7.3-cli php7.3-common php7.3-fpm php7.3-json php7.3-opcache php7.3-readline
Suggested packages:
  php-pear
The following NEW packages will be installed:
  libsodium23 php-common php-fpm php7.3-cli php7.3-common php7.3-fpm php7.3-json php7.3-mysql php7.3-opcache
  php7.3-readline
0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,299 kB of archives.
After this operation, 18.4 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Domyślnie PHP_FPM jest skonfigurowane tak aby nasłuchiwać za pomocą gniazda unixowego /run/php/php7.3-fpm.sock – jest to zdefiniowane w pliku konfiguracyjnym domyślnej puli /etc/php/7.3/fpm/pool.d/www.conf.

Aby przetestować działanie PHP musimy jeszcze wyedytować domyślny plik virtualnego hosta /etc/nginx/sites-available/default, tak by przekazywać odwołania do plików PHP do PHP-FPM

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

Odpowiednie linie znajdują się już w pliku, należy je tylko odkomentować.

Sprawdzamy czy konfiguracja Nginx jest poprawna poleceniem:

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Jeśli wszystko jest w porządku… restartujemy usługi nginx oraz php7.3-fpm.

systemctl restart php7.3-fpm
systemctl restart nginx

Aby sprawdzić działanie PHP wraz z serwerem Nginx utworzymy plik /var/www/html/info.php z zawartością:

<?php phpinfo(); ?>

… poniższym poleceniem:

echo "<?php phpinfo(); ?>" > /var/www/html/info.php

… i odwiedzamy adres http://IP_SERWERA/info.php lub jeśli przeprowadzamy całą operację na lokalnym komputerze klikamy link http://127.0.0.1/info.php.
Wyświetli nam się informacja na temat aktualnej konfiguracji PHP.

Gotowe! Zainstalowaliśmy stack LEMP na serwerze z Debianem 10.
Pozostaje jeszcze usunąć plik z informacjami o PHP.

rm /var/www/html/info.php

Dodaj komentarz