Stos technologiczny LEMP jest powszechnie używany 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 na CentOS 8.
Zainstalujemy Nginx, MariaDB oraz PHP z oficjalnych repozytoriów CentOS. Jeśli potrzebujemy najnowszych wersji tych pakietów można skorzystać z dodatkowych repozytoriów dla CentOS 8
Jak zawsze najpierw zaktualizujemy system.
dnf update
Instalacja Nginx
Nginx jest dostępny w domyślnym repozytorium (AppStream) CentOS 8.
Instalujemy poleceniem:
dnf install nginx
======================================================================================================================= Package Arch Version Repository Size ======================================================================================================================= Installing: nginx x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 570 k Installing dependencies: ... nginx-all-modules noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 23 k nginx-filesystem noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 24 k nginx-mod-http-image-filter x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 35 k nginx-mod-http-perl x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 45 k nginx-mod-http-xslt-filter x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 33 k nginx-mod-mail x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 64 k nginx-mod-stream x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 AppStream 85 k ... Enabling module streams: nginx 1.14 Transaction Summary ======================================================================================================================= Install 23 Packages Total download size: 4.8 M Installed size: 15 M Is this ok [y/N]:
Po instalacji startujemy Nginx oraz upewniemy się, że będzie się on uruchamiał podczas startu systemu.
systemctl enable --now nginx
Sprawdzamy status:
systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-10-30 13:33:31 UTC; 7s ago Process: 7484 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 7430 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 7423 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 7508 (nginx) Tasks: 3 (limit: 11524) Memory: 7.4M CGroup: /system.slice/nginx.service ├─7508 nginx: master process /usr/sbin/nginx ├─7510 nginx: worker process └─7511 nginx: worker process ...
Zezwalamy na dostęp do portów 80 i 443
W firewalld odblokowujemy porty: 80 (HTTP) oraz 443 (HTTPS)
firewall-cmd --add-port=80/tcp --permanent firewall-cmd --add-port=443/tcp --permanent firewall-cmd --reload
Możemy sprawdzić czy Nginx działa odwiedzając adres http://IP_SERWERA/.
Instalacja MariaDB
Aby zainstalować MariaDB w CentOS 8 wydajemy polecenie:
dnf install mariadb-server
Po instalacji uruchamiamy oraz upewniamy się, że MariaDB będzie startować wraz z uruchamianiem systemu.
systemctl enable --now mariadb
Następnie 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:
[root@centos8 ~]# mysql -u root -p -e "show databases;" Enter password: +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+
Teraz już możemy zalogować się do serwera MariaDB, tworzyć użytkowników i bazy.
Instalacja PHP
Instalujemy PHP oraz moduł do obsługi MySQL(MariaDB) poleceniem:
dnf install php php-fpm php-mysqlnd
Uruchamiamy PHP-FPM oraz ustawiamy tak, aby usługa startowała wraz z systemem:
systemctl enable --now php-fpm
Aby sprawdzić działanie PHP wraz z serwerem Nginx utworzymy plik /usr/share/nginx/html/info.php
z zawartością:
<?php phpinfo(); ?>
… poniższym poleceniem:
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
Restartujemy Nginx:
systemctl restart nginx
… 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 CentOS 8.
Warto jeszcze usunąć plik z informacjami o PHP.
rm /usr/share/nginx/html/info.php