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