Apache with php-fpm: Difference between revisions

From Alpine Linux
m (fix code block)
(Stop using the prefork module with the PHP DSO.)
Line 13: Line 13:


'''Configure Apache'''
'''Configure Apache'''
Uncomment the mpm_event module and comment the mpm_prefork module like so:
  LoadModule mpm_event_module modules/mod_mpm_event.so
  #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so


Add the following lines to /etc/apache2/httpd.conf:
Add the following lines to /etc/apache2/httpd.conf:
Line 19: Line 24:
     SetHandler "proxy:fcgi://127.0.0.1:9000"
     SetHandler "proxy:fcgi://127.0.0.1:9000"
  </FilesMatch>
  </FilesMatch>
Comment out the following lines in /etc/apache2/conf.d/php8-module.conf:
  #LoadModule php_module modules/mod_php8.so
  #DirectoryIndex index.php index.html
  #<FilesMatch \.php$>
  #    SetHandler application/x-httpd-php
  #</FilesMatch>


'''Configure PHP-FPM'''
'''Configure PHP-FPM'''

Revision as of 04:49, 19 April 2022

Apache and PHP

PHP-FPM is the Fast Process Manager for PHP which runs as a service that spawns PHP processes as needed when files files are requested through the FastCGI interface. Passing this off to the PHP-FPM results in interpreting the PHP files much faster than having Apache spawn new processes each time a page is requested. You can read more about it here.

Step by Step Instructions

Install packages

apk add apache2-proxy php8-fpm

Run and Add Services to Startup

rc-service php-fpm8 start rc-update add php-fpm8 rc-service apache2 start rc-update add apache2

Configure Apache

Uncomment the mpm_event module and comment the mpm_prefork module like so:

 LoadModule mpm_event_module modules/mod_mpm_event.so
 #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Add the following lines to /etc/apache2/httpd.conf:

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

Comment out the following lines in /etc/apache2/conf.d/php8-module.conf:

 #LoadModule php_module modules/mod_php8.so
 #DirectoryIndex index.php index.html
 #<FilesMatch \.php$>
 #    SetHandler application/x-httpd-php
 #</FilesMatch>


Configure PHP-FPM

You can edit the file /etc/php8/php-fpm.conf to suit you needs.

In the configuration you may need to change the default user and group from nobody to another user such as apache:

user = apache
group = apache

Restart apache2 and PHP-FPM

After editing the configuration you must reload related services.

rc-service php-fpm8 reload && rc-service apache2 reload

More info

apache wiki php-fpm manual