LAMP stack je populární platforma pro vývoj webových aplikací s otevřeným zdrojovým kódem, kterou lze použít ke spouštění a nasazování dynamických webových stránek a webových aplikací. Zásobník LAMP se obvykle skládá z webového serveru Apache, databází MariaDB/MySQL, programovacích jazyků PHP/Python/Perl. LAMP je zkratka pro Linux, Apache, MariaDB/MYSQL, PHP/Python/Perl. Tento tutoriál krok za krokem popisuje, jak nainstalovat Apache, MySQL, PHP (zásobník LAMP) na serverové edici Ubuntu 20.04 LTS.
Nainstalujte Apache, MySQL, PHP (LAMP Stack) na Ubuntu 20.04 LTS
Pro účely tohoto tutoriálu budeme používat následující systém Ubuntu.
- Operační systém :Ubuntu 20.04 LTS Server Edition
- IP adresa :192.168.225.52/24
Nejprve nainstalujme server Apache.
1. Nainstalujte webový server Apache v Ubuntu
Nejprve aktualizujte server Ubuntu pomocí příkazů:
$ sudo apt update
$ sudo apt upgrade
Dále nainstalujte webový server Apache:
$ sudo apt install apache2
Zkontrolujte, zda webový server Apache běží nebo ne, pomocí příkazu:
$ sudo systemctl status apache2
Ukázkový výstup by byl:
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl> Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 23996 (apache2) Tasks: 55 (limit: 2283) Memory: 5.1M CGroup: /system.slice/apache2.service ├─23996 /usr/sbin/apache2 -k start ├─23998 /usr/sbin/apache2 -k start └─23999 /usr/sbin/apache2 -k start May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server... May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det> May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.
Gratulujeme! Služba Apache je v provozu!!
1.1. Povolit webový server Apache 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č Apache 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 pomocí příkazu:
vypište profily aplikací dostupné ve vašem systému Ubuntu$ sudo ufw app list
Ukázkový výstup:
Available applications: Apache Apache Full Apache Secure OpenSSH
Jak můžete vidět, aplikace Apache a OpenSSH mají nainstalované profily UFW. Informace o každém profilu a jeho zahrnutých pravidlech můžete vypsat pomocí ufw app info "Profile Name"
příkaz.
Podívejme se na “Apache Full”
profil pomocí příkazu:
$ sudo ufw app info "Apache Full"
Ukázkový výstup:
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp
Jak vidíte, "Apache Full"
profil obsahuje pravidla umožňující provoz na portech 80
a 443
.
Nyní spusťte následující příkaz, abyste povolili příchozí HTTP
a HTTPS
provoz pro tento profil:
$ sudo ufw allow in "Apache Full"
Uvidíte výstup jako níže:
Rules updated Rules updated (v6)
Pokud nechcete povolit https
provoz, ale pouze http
(80) provoz, běh:
$ sudo ufw app info "Apache"
1.2. Otestujte webový server Apache
Nyní otevřete webový prohlížeč a přejděte na stránku http://localhost/
a přejděte na testovací stránku Apache nebo http://IP-Address/
.
Pokud vidíte „Výchozí stránku Apache 2 Ubuntu“, jak je uvedeno níže, můžete začít. Server Apache funguje!

2. Nainstalujte MySQL v 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 07:15:22 UTC; 2min 8s ago Main PID: 25242 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 2283) Memory: 323.7M CGroup: /system.slice/mysql.service └─25242 /usr/sbin/mysqld May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server... May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.
Jak vidíte na výše uvedeném výstupu, MySQL běží!
2.1. Nastavte heslo administrátora databáze (root) pro Mysql
Ve výchozím nastavení 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 PASSWORD"
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á. Je bezpečné jej 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.
Zadejte y
pokud chcete nastavit VALIDATE PASSWORD
komponenta:
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT 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 component? Press y|Y for Yes, any other key for No: y
Pokud je vaše odpověď Ano , budete požádáni o výběr úrovně ověření hesla. 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 MySQL root
uživatel. Mějte prosím na paměti, že musíte použít heslo pro MySQL root
uživatele 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
.
Pro ostatní otázky 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! MySQL jsme nastavili root
uživatelské heslo.
2.2. Změnit metodu 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
. caching_sha2_password
autentizační plugin poskytuje bezpečnější šifrování hesla než mysql_native_password
plugin.
Chcete-li změnit ověřovací plugin, přihlaste se do řádku MySQL pomocí příkazu:
$ sudo mysql
Nebo,
$ mysql -u root -p
Zadejte root
MySQL heslo, které jsme nastavili v předchozím kroku.
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 auth_socket
plugin do caching_sha2_password
, spusťte následující příkaz na příkazovém řádku MySQL. Pokud jste povolili VALIDATE PASSWORD
plugin, 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 Password123#@!
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í root
MySQL uživatel se může autentizovat pomocí hesla pro přístup k prostředí MySQL.
Ukončete výzvu MySQL:
mysql> exit
Poznámka:
I když caching_sha2_password
plugin 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 řá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:
mysql> exit
3. Nainstalujte PHP v Ubuntu
Chcete-li nainstalovat PHP, spusťte:
$ sudo apt install php libapache2-mod-php php-mysql
Po instalaci PHP vytvořte info.php
soubor v kořenové složce dokumentů Apache. Obvykle bude kořenová složka dokumentů Apache /var/www/html/
nebo /var/www/
ve většině distribucí Linuxu založených na Debianu. V Ubuntu 20.04 LTS je to /var/www/html/
.
Vytvořme info.php
soubor v kořenové složce Apache:
$ sudo vi /var/www/html/info.php
Přidejte následující řádky:
<?php phpinfo(); ?>
Stiskněte ESC
a zadejte :wq
pro uložení a ukončení souboru. Restartujte službu apache, aby se změny projevily.
$ sudo systemctl restart apache2
3.1. Otestujte PHP
Otevřete webový prohlížeč a přejděte na http://IP-address/info.php
URL.
Uvidíte informace o php, jako je verze, serverové API a podrobnosti o všech povolených php pluginech.

Obvykle, když uživatel požaduje adresář z webového serveru, Apache nejprve vyhledá soubor s názvem index.html
. Pokud chcete změnit Apache tak, aby poskytoval soubory php namísto jiných, přesuňte index.php
na první pozici v dir.conf
soubor, jak je uvedeno níže
$ sudo vi /etc/apache2/mods-enabled/dir.conf
Zde je obsah výše uvedeného souboru.
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Přesuňte soubor index.php
soubor první . Jakmile provedete změny, váš dir.conf
soubor bude vypadat níže.
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Stiskněte ESC
a zadejte :wq
pro uložení a zavření souboru. Restartujte službu Apache, aby se změny projevily.
$ sudo systemctl restart apache2
3.2. Nainstalujte moduly 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í kláves se šipkami procházejte výsledek. 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 install php-gd
Po instalaci php modulu nezapomeňte restartovat službu Apache. Chcete-li zkontrolovat, zda je modul načten nebo ne, otevřete soubor info.php ve svém prohlížeči a zkontrolujte, zda je přítomen.
Gratulujeme! Jak můžete vidět, je velmi snadné nainstalovat apache, mysql, php (zásobník LAMP) na Ubuntu 20.04 LTS. Nyní můžete začít hostovat své webové stránky pomocí zásobníku LAMP.
Další informace:
- Nainstalujte phpMyAdmin s LAMP Stack na Ubuntu 20.04 LTS
Související čtení:
- Nainstalujte Nginx, MySQL, PHP (LEMP Stack) na Ubuntu 20.04 LTS
- Instalace Apache, MariaDB, PHP (LAMP Stack) v CentOS 8