Po. Pro 30th, 2024

Taky máte občas někde nějaký ten shitoidní webík, který prostě na novější verzi, než php 7.4 nepojede, zatímco pro jiný web byste kvůli rychlosti upotřebili php 8.1 ?

Say no more! Jednoduchý článek zde:

https://www.digitalocean.com/community/tutorials/how-to-run-multiple-php-versions-on-one-server-using-apache-and-php-fpm-on-debian-10

Proč chtít nejnovější verzi php

zdroj: https://www.phoronix.com/scan.php?page=article&item=php-81-benchmarks&num=2

Novější verze PHP většinou znamená vyšší rychlost náběhu stránek, kratší odezva, více odbavených stránek za vteřinu a v drtivé většině případů i lepší bezpečnost a pár ošetřených CVE errorů navíc oproti starším verzím.

zdroj: https://www.phoronix.com/scan.php?page=article&item=php-81-benchmarks&num=2

To hlavní gró je následující

Předpokládejme, že už máte nainstalovaný apache2.

apt-get install curl wget gnupg2 ca-certificates lsb-release apt-transport-https -y
wget https://packages.sury.org/php/apt.gpg
apt-key add apt.gpg

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php7.list
apt-get update -y
apt-get install php7.4 php7.4-fpm php7.4-mysql libapache2-mod-php7.4 libapache2-mod-fcgid -y
apt-get install php8.1 php8.1-fpm php8.1-mysql libapache2-mod-php8.1 libapache2-mod-fcgid -y
# Pro funkcionalitu wordpressů ještě:
apt-get install php8.1-dom php8.1-mysql php8.1-mbstring -y
systemctl enable php7.4-fpm && systemctl start php7.4-fpm && systemctl status php7.4-fpm
systemctl enable php8.1-fpm && systemctl start php8.1-fpm && systemctl status php8.1-fpm
# Na apachi potom potřebujete povolit následující módy:
a2enmod actions fcgid alias proxy_fcgi
systemctl restart apache2

Nyní potřebujete nakonfigurovat vaše virtualhosty:
/etc/apache2/sites-available/nejakyweb.cz.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
        Options +Indexes
        DocumentRoot /var/www/html/nejakyweb.cz/
        ServerName nejakyweb.cz
        ServerAlias www.nejakyweb.cz
        ServerAdmin cokoliv@cokoliv.cz
        ErrorLog /var/log/apache2/nejakyweb.cz-error.log
        LogFormat "%h %l %u %t \"%r\" %>s %b" common
        CustomLog /var/log/apache2/nejakyweb.cz-access.log common
        RewriteEngine On
 <Directory "/var/www/html/nejakyweb.cz/">
    Options Indexes FollowSymLinks
    AllowOverride FileInfo Limit
    RewriteEngine On
    </Directory>
#ukázka, když máte let's encrypt
SSLCertificateFile /etc/letsencrypt/live/nejakyweb.cz/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nejakyweb.cz/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
#tato část je zodpovědná za specifickou verzi php 8.1 jen pro tento web (pro tento virtualhost)
    <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/php8.1-fpm.sock|fcgi://localhost"
   #tam, kde vidíte php8.1 u druhého virtualserveru nahradíte za php7.4 a máte oba weby fungující současně
    </FilesMatch>
</VirtualHost>
</IfModule>

Jakmile máte, tak povolte web nejakyweb.cz jakožto virtualhost na apache:
a2ensite nejakyweb.cz
apachectl configtest
měl by ukázat OK.
a pak už jen:
systemctl restart apache2
A můžete zkusit, co vám vypíše funkce phpinfo(); v adresáři, kde se nachází web a mimo něj.

Zde je starší, ale užitečný odkaz se seznamem balíčků, které upotřebí wordpress. (místo php5 nahraďte za php8.1-názevbalíčku)

Call to undefined function WordPress\Plugin\Encyclopedia\MB_StrToLower()

vyřeší:
apt-get install php8.1-mbstring -y

zdroj

Your PHP installation appears to be missing the MySQL extension which Is required by WordPress

řešení:
apt-get install php8.1-mysql -y

zdroj

WordPress: Class ‚DOMDocument‘ not found

apt-get install php8.1-dom -y

zdroj

GD is required for generating image thumbnails, resizing images, and generating watermarks

řešení:
apt install php8.1-gd -y
#pro weby běžící na php7.4:
apt install php7.4-gd -y

V závěru vám povím: Ano, mohli jste to celé udělat na dockeru a dokonce by to bylo kratší, lehčí, ale toto je přesně ten případ, kdy z nějakého důvodu potřebujete mít 1 jediný apache v jeho zájmu mít vše ošetřené, protože potřebujete např. šetřit paměť, nebo místo kvůli docker imagům apod…

zdroj zdroj2

Avatar

By mirra

Hardwaru a počítačům se věnuji již od roku 2003. Za tu dobu jsem poskládal stovky počítačů, opravil tisíce počítačů a vyřešil nespočetně problémů, vad a chyb, se kterými se setkávali uživatelé. Od roku 2005 se zabývám servery, zejména těmi herními, v roce 2007 jsem se začal věnovat Valve Source SDK level designu, který šel od roku 2009 k ledu kvůli studiu Informatiky na univerzitě. Podílel jsem se chvíli i na provozu síťové laboratoře MENDELU, dnes spravuji v jedné osobě cca 100 serverů/diskových polí na univerzitě, řeším IT v malých a středních firmách tak, aby firmy ušetřily nemalé částky při zlepšení kvality a soustředím se na snižování nákladů na IT od licencí až po hardware, software, provádím konsolidace a audity platnosti licencí, které firmám šetří rovněž nemalé peníze. Z velkých firem jsem měl příležitost s dalšími kolegy řešit správu 8000 serverů po celé západní Evropě s vysokou mírou automatizace a poznávání nejrůznějších evropských pracovních mentalit. Dále jsem řešil hybridní cloud ve velké firmě, orientované na trhy střední a východní Evropy. Posledních několik let se věnuji Devops pro velké zákazníky v Azure cloudu, spravuji kubernetes (AKS), Gitlab.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *