Základní instalace LAMP - Apache 2.4, MySQL-MariaDB, PHP 7.0 + phpMyAdmin - Debian "Stretch"

Instalace LAMPu je taková klasika. Ale jak se věci mění a vyvíjejí, je třeba postup lehce jiný, než třeba byl pro Debian 8.

Pro klasický web development je LAMP taková klasika. Sice existují jiné webservery, databázové systémy i programovací jazyky, ale LAMP pořád ještě má svoje místo.

Apache HTTP Server Project

Apache

Mezi starší verzí Apache 2.2 a Apache 2.4 se odehrálo dost změn (https://httpd.apache.org/docs/2.4/new_features_2_4.html), pro mě je nejdůležitější stabilní podpora protokolu HTTP/2 - viz. https://httpd.apache.org/docs/2.4/howto/http2.html nebo https://http2.pro/doc/Apache.

Instalace

apt-get install -y apache2
a2enmod ssl rewrite expires
a2ensite default-ssl

Důležitá změna od verze Apache 2.4.27 – červenec 2018

V této aktualizaci se skrývá zrada, protože běžně se Apache instaloval v mpm_preforku, kde právě http2 podpora byla odstraněná. Takže třeba při nastavených aktualizacích Apache jste mohli skrytě právě o http2 přijít.

https://tracker.debian.org/news/969425/accepted-apache2-2425-3deb9u5-so…
Unfortunately, this also removes support for http2 when running on mpm_prefork.

Naštěstí je na výše uvedených stránkách https://http2.pro/doc/Apache napsán jednoduchý návod, jak se přepnout na event worker.

Let’s Encrypt a CertBot

Ještě poznámka - http2 funguje jen přes HTTP s platným certifikátem, který se dá naštěstí jednoduše a zdarma (díky Let’s Encrypt https://letsencrypt.org/) vygenerovat pomocí návodu https://certbot.eff.org/lets-encrypt/debianstretch-apache.html. A automaticky obnovovat pomocí CertBot https://certbot.eff.org/.

MariaDB Server

MySQL/MariaDB

Instalace je jednoduchá:

apt-get -y install mysql-server mysql-client mysql-utilities
mysql_secure_installation

Tady došlo k jedné, docela zásadní změně. Uživatel root je teď autorizován pomocí unix socketů. To znamená, když jste přihlášení v terminálu jako root, tak můžete přistupovat k MySQL bez zadávání hesla.

Jenže to taky znamená, že se třeba jako root nepřihlásíte do phpmyadmina. Jak z toho?

Uživatel phpmyadmin

Vytvoříme si nového MySQL uživatele, který bude mít stejná práva, jako root.

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'heslo';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
RESET QUERY CACHE;

Následná instalace phpMyAdmin je pak popsaná níže, až budeme mít nainstalované i PHP.

PHP

PHP

Instalace PHP je také snadná

apt-get -y install php-mysqli php-gd php-mcrypt php-curl php-mbstring php-imagick php-xml php-zip

Jak bylo ale výše uvedené, je nyní třeba použít php-fpm pro podporu http2

apachectl stop
apt-get -y install php-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.0-fpm
a2dismod php7.0
a2dismod mpm_prefork
a2enmod mpm_event
apachectl start

S tím také souvisí změna cesty ke konfiguračnímu souboru /etc/php/7.0/fpm/php.ini
Funkční https (h2) se nám pak zobrazí například v Chrome Developer Toolu (možná bude třeba povolit zobrazení sloupečku Protocol).

h2 protocol

Ještě jedna věc, hned si nastavím podporu češtiny cs_CZ.UTF-8 pomocí dpkg-reconfigure locales. Hodí se pro lokalizované výpisy, např. strftime().

dpkg-reconfigure locales

Konfigurace PHP

Je třeba si uvědomit, že nyní nám neběží PHP jako modul apache. Takže se používají i jiné konfigurační soubory (s úplně stejnou syntaxí), konktrétně na cestě /etc/php/7.0/fpm/. A také po jejich změně není třeba restartovat apache, ale je nutné provést

service php7.0-fpm restart

500 Internal server error - protože php_value

Pokud naše aplikace používala např. .htaccess s nastavením PHP hodnot pomocí php_value, přestane nám náš web přes php-fpm fungovat. 

Místo toho je třeba vytvořit soubor .user.ini, kde je syntaxe následující

upload_max_filesize = 5M

A ještě pozor, u mě to nefungovalo bez mezer kolem rovnítka.

phpMyAdmin

phpMyAdmin

Když už máme připraveného uživatele, tak si můžeme nainstalovat i phpMyAdmin. Jedna možnost je si ho instalovat ručně (= problémy s udržováním aktualizované verze) stažením přímo z webu https://www.phpmyadmin.net/. Elegantnější je použít balíček z debianu (apt-get -y install phpmyadmin), který se o instalaci, konfiguraci i aktualizace bude starat sám. Jediný problém je, že bude stárnout, takže v nějakém okamžiku nám tam můžou chybět nějaké nové vlastnosti. Je to něco za něco. Aktuálně (2017/07) je v Debianu verze 4.6.6-4, poslední vydaná verze je 4.8.2.

Ideálně ještě po instalaci upravit /etc/apache2/conf-enabled/phpmyadmin.conf a zabezpečit si přístup.