Apache with php-fpm: Difference between revisions

From Alpine Linux
mNo edit summary
m (→‎See Also: Changed a link to https)
 
(4 intermediate revisions by 3 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}}


'''Run and Add Services to Startup'''
=== Installation ===
{{Cmd|rc-service php-fpm8 start
rc-update add php-fpm8
rc-service apache2 start
rc-update add apache2}}


'''Configure Apache'''
Install required packages
 
{{Cmd|# apk add apache2-proxy php8-fpm}}
 
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:
 
  LoadModule mpm_event_module modules/mod_mpm_event.so
  #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
 
Add the following lines to {{Path|/etc/apache2/httpd.conf}}:


Add the following lines to /etc/apache2/httpd.conf
  <FilesMatch \.php$>
  <FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
    SetHandler "proxy:fcgi://127.0.0.1:9000"
  </FilesMatch>```
  </FilesMatch>
 
Comment out the following lines in {{Path|/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'''
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