V našem předchozím tutoriálu jsme diskutovali o tom, jak nainstalovat zásobník LAMP v Ubuntu 20.04 LTS server. V tomto tutoriálu uvidíme, jak nainstalovat Nginx, MySQL, PHP (LEMP stack) na Ubuntu 20.04 LTS server edition. LEMP je zkratka L inux, En gine-x, M ariaDB/M ySQL, P HP/P erl/P ython.
Nainstalujte Nginx, MySQL, PHP (LEMP Stack) na Ubuntu 20.04 LTS
Pro účely tohoto tutoriálu budu používat následující testovací stroj:
- Operační systém :Server Ubuntu 20.04 LTS
- IP adresa :192.168.225.52/24
Pojďme začít.
1. Nainstalujte Nginx na Ubuntu
Spusťte následující příkaz z terminálu a nainstalujte webový server Nginx:
$ sudo apt install nginx
Po instalaci Nginx zkontrolujte, zda je služba Nginx spuštěna nebo ne pomocí příkazu:
$ sudo systemctl status nginx
Ukázkový výstup:
● 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-05-29 10:13:47 UTC; 56s ago Docs: man:nginx(8) Main PID: 1349 (nginx) Tasks: 2 (limit: 2283) Memory: 4.4M CGroup: /system.slice/nginx.service ├─1349 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─1350 nginx: worker process May 29 10:13:46 ubuntuserver systemd[1]: Starting A high performance web server and a reverse proxy server... May 29 10:13:47 ubuntuserver systemd[1]: Started A high performance web server and a reverse proxy server.
Pokud vidíte výstup jako výše, služba Nginx byla spuštěna.
V případě, že služba Nginx ještě není spuštěna, můžete ji spustit příkazem:
$ sudo systemctl enable nginx
$ sudo systemctl start nginx
1.1 Povolení webového serveru Nginx přes firewall UFW
UFW , znamená U nkomplikované F irew all je program pro správu firewallu netfilter navržený tak, aby byl snadno použitelný. UFW je standardně dostupné ve všech verzích Ubuntu.
Ve výchozím nastavení není webový prohlížeč Nginx přístupný ze vzdálených systémů, pokud jste povolili bránu firewall UFW v Ubuntu 20.04 LTS. Musíte povolit http a https porty podle níže uvedených kroků.
Nejprve se podívejme, které aplikace nainstalovaly profil pomocí příkazu:
$ sudo ufw app list
Ukázkový výstup:
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
Jak můžete vidět, aplikace Nginx a OpenSSH nainstalovaly profily UFW.
Pokud se podíváte do „Nginx Full“ profilu, uvidíte, že umožňuje provoz na portech 80 a 443 :
$ sudo ufw app info "Nginx Full"
Ukázkový výstup:
Profile: Nginx Full Title: Web Server (Nginx, HTTP + HTTPS) Description: Small, but very powerful and efficient web server Ports: 80,443/tcp
Nyní spusťte následující příkaz pro povolení příchozího provozu HTTP a HTTPS pro tento profil:
$ sudo ufw allow in "Nginx Full"
Uvidíte výstup něco jako níže:
Rules updated Rules updated (v6)
Pokud chcete povolit provoz https, ale pouze provoz http (80), spusťte:
$ sudo ufw app info "Nginx HTTP"
Pojďme do toho a spusťte testovací stránku Nginx.
Chcete-li tak učinit, otevřete webový prohlížeč a přejděte na http://localhost/ nebo http://IP-Adresa/ .
Uvidíte uvítací stránku Nginx, jak je uvedeno níže.
Gratulujeme! Server Nginx funguje!
2. Nainstalujte MySQL na Ubuntu
Chcete-li nainstalovat MySQL na Ubuntu, spusťte:
$ sudo apt install mysql-server
Ověřte, zda služba MySQL běží nebo ne, pomocí příkazu:
$ sudo systemctl status mysql
Ukázkový výstup:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-05-29 10:31:56 UTC; 51s ago Main PID: 2288 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 2283) Memory: 325.6M CGroup: /system.slice/mysql.service └─2288 /usr/sbin/mysqld May 29 10:31:49 ubuntuserver systemd[1]: Starting MySQL Community Server... May 29 10:31:56 ubuntuserver systemd[1]: Started MySQL Community Server.
Jak vidíte na výše uvedeném výstupu, Mysql běží!
2.1 Nastavení hesla správce databáze (root) pro Mysql
Ve výchozím nastavení je MySQL root uživatelské heslo je prázdné. Nedoporučuje se používat prázdné heslo pro účet správce databáze. Musíte zabezpečit server MySQL spuštěním následujícího skriptu:
$ sudo mysql_secure_installation
Budete dotázáni, zda chcete nastavit „VALIDATE HESLO“ součást nebo ne. Tato součást umožňuje uživatelům konfigurovat silné heslo pro přihlašovací údaje databáze. Pokud je povoleno, automaticky zkontroluje sílu hesla a vynutí uživatele, aby nastavili pouze ta hesla, která jsou dostatečně bezpečná. Toto můžete bezpečně nechat deaktivované . Pro přihlašovací údaje k databázi však musíte použít silné a jedinečné heslo. Pokud tuto komponentu nechcete povolit, jednoduše stiskněte libovolnou klávesu, abyste přeskočili část ověření hesla a pokračujte ve zbývajících krocích.
Pokud je vaše odpověď Ano , budete požádáni o výběr úrovně ověření hesla.
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No y
Dostupná ověření hesla jsou nízká , střední a silný . Stačí zadat příslušné číslo (0 pro nízké, 1 pro střední a 2 pro silné heslo) a stisknout klávesu ENTER.
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Nyní zadejte heslo pro uživatele root MySQL. Mějte prosím na paměti, že musíte použít heslo pro uživatele root mysql v závislosti na zásadách hesel, které jste zvolili v předchozím kroku. Pokud jste plugin nepovolili, použijte jakékoli silné a jedinečné heslo podle svého výběru.
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Jakmile zadáte heslo dvakrát, uvidíte sílu hesla (v našem případě je to 100 ). Pokud je to pro vás v pořádku, stiskněte Y a pokračujte se zadaným heslem. Pokud nejste spokojeni s délkou hesla, stiskněte jakoukoli jinou klávesu a nastavte silné heslo. Se svým aktuálním heslem souhlasím, proto jsem zvolil y .
U ostatních otázek stačí napsat y a stiskněte ENTER. Toto odebere anonymního uživatele, zakáže vzdálené přihlášení uživatele root a odstraní testovací databázi.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
Hotovo! Nastavili jsme heslo uživatele root MySQL.
2.2 Změna metody ověřování pro uživatele root MySQL
Ve výchozím nastavení je uživatel root MySQL nastaven na ověřování pomocí "auth_socket" plugin počínaje MySQL 5.7 a novějšími verzemi na Ubuntu. I když to zvyšuje bezpečnost, bude to také komplikovat věci, když přistupujete k databázovému serveru pomocí externích programů, například phpMyAdmin. Chcete-li tento problém vyřešit, musíte změnit metodu ověřování z auth_socket na "caching_sha2_password" nebo "mysql_native_password" .
Od verze MySQL 8.0 je preferovaný a výchozí ověřovací plugin caching_sha2_password . Ověřovací plugin caching_sha2_password poskytuje bezpečnější šifrování hesel než plugin mysql_native_password.
Chcete-li změnit ověřovací plugin, přihlaste se do řádku MySQL pomocí příkazu:
$ sudo mysql
Spuštěním následujícího příkazu na výzvu mysql vyhledejte aktuální metodu ověřování pro všechny uživatelské účty mysql:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Ukázkový výstup:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$=s%UO"�[email protected]>[email protected] | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | | auth_socket | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
Jak vidíte, uživatel root mysql používá auth_socket plugin pro ověřování.
Chcete-li změnit plugin auth_socket na caching_sha2_password, spusťte následující příkaz na výzvu mysql. Pokud jste povolili plugin VALIDATE PASSWORD, ujistěte se, že jste použili silné heslo na základě aktuálních požadavků zásad. Silné by se mělo skládat alespoň z 8 znaků včetně velkého písmena, malého písmena, čísla a speciálního znaku.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Nahraďte "Heslo123#@!" se silným a jedinečným heslem dle vašeho výběru ve výše uvedeném příkazu.
Aktualizujte změny pomocí příkazu:
mysql> FLUSH PRIVILEGES;
Nyní zkontrolujte, zda je aktuální autentizační plugin změněn nebo není pomocí příkazu:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Ukázkový výstup:
Dobrý! Nyní se uživatel root myql může autentizovat pomocí hesla pro přístup k shellu mysql.
Ukončete výzvu mysql:
mysql> exit
Poznámka:
Přestože plugin caching_sha2_password poskytuje vylepšené bezpečné šifrování, má určité problémy s kompatibilitou se stávajícími instalacemi MySQL. Podrobnosti naleznete na tomto odkazu . Pokud narazíte na nějaké problémy s kompatibilitou, je třeba nastavit "mysql_native_password" plugin jako výchozí ověřovací plugin.
Chcete-li změnit na mysql_native_password plugin, spusťte následující příkaz na příkazovém řádku mysql.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Aktualizujte změny pomocí příkazu:
mysql> FLUSH PRIVILEGES;
Nyní znovu zkontrolujte, zda je metoda ověřování změněna nebo není pomocí příkazu:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Ukázkový výstup:
Ukončete výzvu mysql zadáním následujícího příkazu:
exit
3. Nainstalujte PHP na Ubuntu
Chcete-li nainstalovat PHP, spusťte:
$ sudo apt-get install php-fpm php-mysql
Po instalaci PHP jej musíme zabezpečit provedením jednoduché změny v php.ini soubor.
Chcete-li tak učinit, upravte php.ini soubor pomocí vašeho oblíbeného editoru:
$ sudo vi /etc/php/7.4/fpm/php.ini
Najděte následující řádek:
;cgi.fix_pathinfo=1
Odkomentujte jej a změňte jeho hodnotu z 1 na 0 (nula) .
cgi.fix_pathinfo=0
Uložte a zavřete soubor. Poté restartujte službu PHP-FPM, aby se změny projevily.
$ sudo systemctl restart php7.4-fpm
Zkontrolujte, zda služba PHP-FPM běží nebo nepoužívá příkaz:
$ sudo systemctl status php7.4-fpm
Ukázkový výstup:
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: en> Active: active (running) since Fri 2020-05-29 10:40:45 UTC; 11s ago Docs: man:php-fpm7.4(8) Process: 10711 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/ph> Main PID: 10693 (php-fpm7.4) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 2283) Memory: 7.0M CGroup: /system.slice/php7.4-fpm.service ├─10693 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf) ├─10709 php-fpm: pool www └─10710 php-fpm: pool www May 29 10:40:44 ubuntuserver systemd[1]: Starting The PHP 7.4 FastCGI Process Manager... May 29 10:40:45 ubuntuserver systemd[1]: Started The PHP 7.4 FastCGI Process Manager.
3.1 Nakonfigurujte Nginx pro použití PHP-FPM
Musíme nakonfigurovat Nginx tak, aby používal PHP-FPM.
Chcete-li tak učinit, upravte výchozí vhost Nginx (blok serveru) /etc/nginx/sites-available/default soubor:
$ sudo vi /etc/nginx/sites-available/default
Najděte sekci Server a nastavte FQDN nebo IP adresu svého serveru Ubuntu, jak je znázorněno níže. A také znovu zkontrolujte, zda jste přidali index.php čára. Všechny změny jsou zobrazeny tučně.
[...] server { listen 80 default_server; listen [::]:80 default_server; [...] root /var/www/html; # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html; server_name 192.168.225.52; [...]
Tady,
- poslouchejte 80; -> poslouchat ipv4.
- poslouchejte [::]:80 default_server; -> poslouchat ipv6.
- index.php -> Přidejte toto, pokud používáte PHP.
- root /var/www/html; -> Kořenový adresář dokumentu Nginx.
- název_serveru 192.168.225.52; -> IP adresa našeho serveru Ubuntu.
Poté se posuňte trochu dolů a najděte "#location ~ \.php$" sekce.
Odkomentujte a upravte následující řádky, jak je uvedeno níže.
location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
Podívejte se na následující snímek obrazovky. Změny jsou označeny/podtrženy červenou barvou.
Uložte a ukončete soubor.
Při úpravě fastcgi_pass věnujte zvýšenou pozornost direktiva v umístění ~ \.php$ blok. Musíte uvést správný název souboru s tím, co je skutečně uloženo v /var/run/php adresář na vašem serveru. Chcete-li to ověřit, spusťte:
$ ls /var/run/php/ php-fpm.sock php7.4-fpm.pid php7.4-fpm.sock
Jak vidíte, název souboru je php7.4-fpm.sock . Ujistěte se, že jste v této direktivě uvedli správný název.
Zkontrolujte konfigurační soubor Nginx, zda neobsahuje chyby syntaxe, pomocí příkazu:
$ sudo nginx -t
Ukázkový výstup:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Pokud nevidíte žádné chyby, restartujte službu nginx, aby se změny projevily.
Chcete-li to provést, spusťte:
$ sudo systemctl restart nginx
Nyní vytvoříme ukázkový soubor PHP pro testování konfigurace PHP prostřednictvím prohlížeče.
Chcete-li tak učinit, vytvořte soubor s názvem „info.php“ v kořenové složce dokumentu Nginx.
$ sudo vi /var/www/html/info.php
Přidejte následující řádky:
<?php phpinfo(); ?>
Uložte a ukončete soubor. Restartujte službu nginx, aby se změny projevily.
$ sudo systemctl restart nginx
Poté otevřete webový prohlížeč a přejděte na http://IP-adresa/info.php .
Zobrazí se podrobnosti o PHP.
Gratulujeme! PHP funguje!!
3.2 Instalace modulů PHP
Chcete-li zlepšit funkčnost PHP, můžete nainstalovat některé další moduly PHP.
Chcete-li zobrazit seznam dostupných modulů PHP, spusťte:
$ sudo apt-cache search php- | less
Ukázkový výstup:
Pomocí šipek a se můžete mezi výsledkem pohybovat nahoru a dolů. Pro ukončení zadejte q .
Chcete-li najít podrobnosti o jakémkoli konkrétním modulu php, například php-gd , spustit:
$ sudo apt-cache show php-gd
Chcete-li nainstalovat modul php, spusťte:
$ sudo apt-get install php-gd
Chcete-li nainstalovat všechny moduly (není však nutné), spusťte:
$ sudo apt-get install php*
Po instalaci libovolného php modulu nezapomeňte restartovat službu Nginx.
Gratulujeme! Úspěšně jsme nastavili LEMP stack na serveru Ubuntu 20.04 LTS. Začněte nasazovat webové stránky a webové aplikace ve svém novém webovém zásobníku LEMP.
Další informace:
- Nainstalujte phpMyAdmin s LEMP Stack na Ubuntu 20.04 LTS