Portál AbcLinuxu, 14. května 2025 22:48

Dotaz: Apache + PHP-FPM + mpm_itk

7.2.2022 18:59 Petr
Apache + PHP-FPM + mpm_itk
Přečteno: 301×
Odpovědět | Admin
Dobrý den / ahoj.
Neřešili jste prosím někdo, jak rozchodit Apache + PHP-FPM + mpm_itk ? Potřebuju aby apache vhost běžel pod konkrétním uživatelem a na misto "libapache2-mod-phpXY" byl použit právě php-fpm. Jde mi hlavně o to abych na serveru mohl používat více verzí PHP (5.x, 7.x a 8.1). Přes PHP-FPM je to "hračka" ale bohužel, přišel jsem na to, že php-fpm si nerozumí s mpm_itk.

Neumí to někdo řešit ?
Nesetkal se s tím někdo ?

Díky,
Petr
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.2.2022 19:18 Madmucho
Rozbalit Rozbalit vše Re: Apache + PHP-FPM + mpm_itk
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravím spíš zkuste mpm_event používám takto v ispconfigu, více php je samozřejmost pokud se s tim nechcete uplně lopotit. tak ispconfig.

Neco taky našel google tady > zde

Jakub Lucký avatar 7.2.2022 19:25 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Apache + PHP-FPM + mpm_itk
Odpovědět | | Sbalit | Link | Blokovat | Admin
Při použití PHP-FPM se Apache bude používat jen na statické věci. Všechny requesty na PHP jen jako reverzní proxy předá FPM procesu, který komunikuje napřímo.

Jen se nesmí použít mod_fcgid ale mod_proxy_fcgid, ale to by neměl být problém...

If you understand, things are just as they are; if you do not understand, things are just as they are.
Jakub Lucký avatar 7.2.2022 19:30 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Apache + PHP-FPM + mpm_itk
Klíčová direktiva je ProxyPassMatch -- nenašel jsem nikde, že by tahle kombinace (s MPM-ITK) nehrála...
If you understand, things are just as they are; if you do not understand, things are just as they are.
Max avatar 8.2.2022 09:48 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Apache + PHP-FPM + mpm_itk
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud chceš provozovat php pod svým uživatelem v režimu volání php-fpm, tak:
# přidáme uživatele a skupinu, pod kterým má běžet web
useradd devaine.cz -s /usr/sbin/nologin

# vytvoříme adresáře a dáme práva
mkdir -p /var/www/vhosts/tmp/devaine.cz
chown devaine.cz:devaine.cz /var/www/vhosts/tmp/devaine.cz

mkdir -p /var/www/vhosts/devaine.cz/www
chown -R devaine.cz:devaine.cz /var/www/vhosts/devaine.cz

# vytvoříme si php fpm pool:
nano /etc/php/7.4/fpm/pool.d/devaine.cz.conf 
[devaine.cz]

listen = /run/php/devaine.cz.sock
listen.owner = devaine.cz
listen.group = devaine.cz
listen.mode = 0660

user = devaine.cz
group = devaine.cz

pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0

chdir = /

env[HOSTNAME] = $HOSTNAME
env[TMP] = /var/www/vhosts/tmp/devaine.cz
env[TMPDIR] = /var/www/vhosts/tmp/devaine.cz
env[TEMP] = /var/www/vhosts/tmp/devaine.cz
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

php_admin_value[open_basedir] = /var/www/vhosts/devaine.cz/www:/var/www/vhosts/tmp/devaine.cz/:/usr/share/php5:/usr/share/php:/tmp:/dev/random:/dev/urandom
php_admin_value[session.save_path] = /var/www/vhosts/tmp/devaine.cz
php_admin_value[upload_tmp_dir] = /var/www/vhosts/tmp/devaine.cz
php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -f webmaster@devaine.cz"

# restartujeme fpm, aby si načetlo info o poolu
systemctl restart php7.4-fpm
Když toto máme, tak si nastavíme apache:
nano /etc/apache2/sites-available/devaine.cz.conf

<VirtualHost *:80>
  UseCanonicalName Off

  ServerAdmin admin@devaine.cz
  ServerName devaine.cz
  ServerAlias www.devaine.cz

  VirtualDocumentRoot /var/www/vhosts/devaine.cz/www/

  CustomLog /var/log/apache2/devaine.cz-access.log common

# bind na fpm socket:
   <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/devaine.cz.sock|fcgi://localhost"
   </FilesMatch>

# přesměrování na https :
#RewriteEngine On
#RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>


#  a následně povolíme stránku
cd /etc/apache2/sites-enabled
ln -s ../sites-available/devaine.cz.conf

# reloadneme apache
apachectl configtest
Syntax OK

systemctl restart apache2
Samozřejmě musíš mít povoleného vhodné moduly na straně apache. tj.:
a2enmod proxy_fcgi
a2enmod rewrite
a2enmod vhost_alias
...
Také záleží na právech, který si nastavíš. Proces apache musí mít přístup k socketu fpm, takže pokud jedeš striktně, tak by měl být uživatel "www-data" ve skupině "devaine.cz" nebo si definovat práva pro apache v režimu itk, to by mělo být čistší.

Zdar Max
Měl jsem sen ... :(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.