Apache with php-fpm: Difference between revisions

From Alpine Linux
(Stop using the prefork module with the PHP DSO.)
m (→‎See Also: Changed a link to https)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
===Apache and PHP===
{{Merge|Apache|Everything in one place seems logical}}
 
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 [https://php-fpm.org/ here].
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 [https://php-fpm.org/ here].


===Step by Step Instructions===
== Instructions ==
'''Install packages'''
 
{{Cmd|apk add apache2-proxy php8-fpm}}
=== Installation ===
 
Install required packages


'''Run and Add Services to Startup'''
{{Cmd|# apk add apache2-proxy php8-fpm}}
{{Cmd|rc-service php-fpm8 start
rc-update add php-fpm8
rc-service apache2 start
rc-update add apache2}}


'''Configure Apache'''
Run and add services to startup
 
{{Cmd|# rc-service php-fpm8 start
# rc-update add php-fpm8
# rc-service apache2 start
# rc-update add apache2}}
 
 
=== Configure ===
 
==== Configure Apache ====


Uncomment the mpm_event module and comment the mpm_prefork module like so:
Uncomment the mpm_event module and comment the mpm_prefork module like so:
Line 19: Line 28:
   #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
   #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so


Add the following lines to /etc/apache2/httpd.conf:
Add the following lines to {{Path|/etc/apache2/httpd.conf}}:


  <FilesMatch \.php$>
  <FilesMatch \.php$>
Line 25: Line 34:
  </FilesMatch>
  </FilesMatch>


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


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




'''Configure PHP-FPM'''
==== Configure PHP-FPM ====
 
Edit the file {{Path|/etc/php8/php-fpm.conf}} to suit your needs.


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 <code>apache</code>:


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


'''Restart apache2 and PHP-FPM'''
Restart apache2 and PHP-FPM after editing the configuration:
 
{{Cmd|# rc-service php-fpm8 reload && rc-service apache2 reload}}
 
 
== See Also ==


After editing the configuration you must reload related services.
* [[Apache]]
{{Cmd|rc-service php-fpm8 reload && rc-service apache2 reload}}
* [https://wiki.apache.org/httpd/PHP-FPM Apache Wiki entry on PHP-FPM]
* [https://php.net/manual/en/install.fpm.configuration.php PHP-FPM Manual]


===More info===
[https://wiki.apache.org/httpd/PHP-FPM apache wiki]
[http://php.net/manual/en/install.fpm.configuration.php php-fpm manual]
[[Category:Web Server]]
[[Category:Web Server]]
[[Category:PHP]]
[[Category:PHP]]

Latest revision as of 20:40, 26 July 2023

This material is proposed for merging ...

It should be merged with Apache. Everything in one place seems logical (Discuss)

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.

Instructions

Installation

Install required 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

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

Edit the file /etc/php8/php-fpm.conf to suit your 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:

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


See Also