V súčasnosti pomaly prechádzam z Debian 9 Stretch na Debian 11 Bullseye. Mám taký pocit, že aktualizácia na Debian 10 a 11 by neveštila nič dobré, tak som sa rozhodol pre čistú inštaláciu. U mňa inštalácia nie je veľký problém, pretože Debian beží v linuxovom kontajnery (LXC). Samotná inštalácia zaberie len niekoľko sekúnd. Viac času zaberie samotná inštalácia balíčkov a konfigurácia systému.
V LXC, ktorý používam výhradne pre weby, beží niekoľko webových projektov, ktoré okrem iného používajú aj skriptovací jazyk PHP (napr. DokuWiki, PHPFusion, WordPress). Keď som inštaloval Debian 11 tak som vedel, že v repozitároch je PHP ver. 7.4, ale ja som išiel surovo po najnovšej ver. PHP 8.0
sudo apt update
sudo apt-get install gnupg2 -y
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
sudo apt update
sudo apt install php8.0 libapache2-mod-php8.0 php8.0-mysql php-common php8.0-cli php8.0-common php8.0-opcache php8.0-readline php8.0-xml php8.0-mbstring php8.0-zip php8.0-gd php8.0-curl php8.0-bz2 php8.0-intl
Samozrejme budeme používať PHP-FPM
sudo a2dismod php8.0
sudo apt install php8.0-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.0-fpm
sudo systemctl restart apache2
Základom je pridať do source.list zdroj od Ondřeja Surého a import kľúča pre overenie dôveryhodnosti zdroja (držať sa môžeme aj tohto skriptu). Následne môžeme inštalovať rôzne ver. PHP. Ako je vidieť ja som inštaloval balíky PHP 8.0. Potom som začal z backupov, ktoré som si spravil na starom servery rozbaľovať webové adresáre na nový server. Začal som prvým adresárom kde hostím dokuwiki. Samozrejme som nakonfiguroval virtualhost za reverzným proxy serverom. Zo začiatku sa zdalo, že všetko funguje. Keď som ale prechádzal jednotlivé stránky v dokuwiki, tak som zistil, že dosť veľa stránok sa nezobrazilo. Tak isto nebolo možné editovať už vytvorené stránky Dôvod som nevedel, tak som začal skúmať prečo to nefunguje. Na oficiálnom webe som zistil, že dokuwiki ešte nie je podporovaná s PHP 8.
PHP version 5.6 up to latest PHP version 7.4.x
PHP needs to be at least Version 5.6 but newer versions are highly recommended. Please note that Dokuwiki is not yet compatible with PHP 8.
Niektoré webové projekty už PHP 8 podporujú a ja som nechcel downgradovať všetko na PHP 7.4, tak som sa rozhodol, že doinštalujem aj staršiu, zatiaľ podporovanú ver PHP 7.4. Aj keď aktívna podpora bude trvať len do 28.11.2021, tak bezpečnostné aktualizácie budú vydávané až do 28.11.2022.
Takže PHP 8.0 FPM už na servery beží a teraz sa pustíme do inštalácie PHP 7.4 FPM. Je to úplne jednoduché. Úložisko od Surého v source liste máme, tak stáčí inštalovať PHP s príslušným číslom verzie a to je vlastne všetko. Ak po inštalácii PHP 7.4 nebeží, tak ho spustíme
sudo apt update
sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-opcache php7.4-readline php7.4-xml php7.4-mbstring php7.4-zip php7.4-gd php7.4-curl php7.4-bz2 php7.4-intl php7.4-json php7.4-fpm libapache2-mod-fcgid
sudo systemctl start php7.4-fpm
Potom povolíme niektoré moduly aby Apache mohol pracovať s rôznymi ver. PHP
sudo a2enmod actions fcgid alias proxy_fcgi
Či bežia obidva verzie môžeme overiť jednoduchými príkazmi
sudo systemctl status php7.4-fpm
sudo systemctl status php8.0-fpm

Na webovom servery Apache zvyčajne nebeží jedna doména, ale v rámci virtualhostov môžu bežať stovky webov na rôznych doménach. Každý virtualhost ma obyčajne svoj konfiguračný súbor. V danom konfiguračnom súbore musíme Apache serveru povedať, ktorú verziu PHP ma použiť. Na tento účel slúži smernica. Konkrétne táto smernica nastavuje danému virtualhostu PHP 7.4
<FilesMatch \.php$>
# For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
Celý konfiguračný súbor (za reverzným proxy serverom) by mohol vyzerať následovne
<VirtualHost *:80>
ServerAdmin admin@example-domain.com
ServerName example-domain.com
ServerAlias www.example-domain.com
DocumentRoot /var/www/www.example-domain.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RemoteIPHeader X-Real-IP
RemoteIPInternalProxy 192.168.1.105
<FilesMatch \.php$>
# For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
sudo a2ensite www.example-domain.com.conf
sudo systemctl reload apache2
Ak si chceme overiť s ktorou verziou PHP-FPM web beží, tak stačí do koreňa webového adresára uložiť súbor v ktorom bude skript, ktorý spúšťa informácie o nastavení PHP.
sudo echo "<?php phpinfo(); ?>" | sudo tee /var/www/www.example.com/info.php