linux_server_manuals:apache_http_2_php-fpm
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| linux_server_manuals:apache_http_2_php-fpm [2018/01/13 07:25] – created ronney | linux_server_manuals:apache_http_2_php-fpm [2021/08/18 14:46] (current) – ronney | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | apache + php-fpm | + | ====== Apache Web Server with mpm_event, mod_proxy_fcgi, |
| - | aptitude install | + | When installing a web server, there are certain chances that you will use webapplications which depend on PHP. Unfortunately |
| - | a2enmod proxy_fcgi | + | ===== Enable php-fpm, mod_proxy_fcgi and mpm_event ===== |
| - | if enabled: | + | So let's go: |
| - | a2dismod php7.0 | + | If previously default |
| - | aptitude purge libapache2-mod-php | + | |
| + | < | ||
| + | aptitude purge libapache2-mod-php | ||
| + | |||
| + | </ | ||
| + | |||
| + | Then install php-fpm, | ||
| + | |||
| + | < | ||
| + | aptitude install php-fpm | ||
| + | a2enmod proxy_fcgi | ||
| + | a2enconf php7.0-fpm | ||
| a2dismod mpm_prefork | a2dismod mpm_prefork | ||
| a2enmod mpm_event | a2enmod mpm_event | ||
| - | create file | + | </code> |
| - | /etc/ | + | |
| - | <IfModule proxy_fcgi_module> | + | Then restart apache |
| - | <FilesMatch " | + | |
| - | <If "-f %{REQUEST_FILENAME}" | + | <code> |
| - | | + | systemctl restart apache2 |
| - | </If> | + | |
| - | </FilesMatch> | + | </code> |
| + | |||
| + | For further information, | ||
| + | |||
| + | ==== Increase pm.max_children ==== | ||
| + | |||
| + | PHP-fpm has a maximal amount of children processes which it uses to serve requests. The default setting of 5 most propably is too low for almost any kind of server. Check for similar messages in your log / | ||
| + | |||
| + | [05-Mar-2019 13:01:21] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, | ||
| + | [05-Mar-2019 13:01:22] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it | ||
| + | |||
| + | </ | ||
| + | |||
| + | To change it edit / | ||
| + | |||
| + | < | ||
| + | pm.max_children = 20 | ||
| + | pm.start_servers = 5 | ||
| + | pm.min_spare_servers = 1 | ||
| + | pm.max_spare_servers = 5 | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Increase PHP Execution Timeout ==== | ||
| + | |||
| + | If you use php scripts which run for a long time (>30s) then you need to change several settings, otherwise the script will timeout and the connection aborted. | ||
| + | |||
| + | To increase the php max execution time, change following line in the file /etc/php/7.3/fpm/php.ini | ||
| + | |||
| + | < | ||
| + | #Max time you want a script to be able to be running | ||
| + | max_execution_time = 300 | ||
| + | |||
| + | </ | ||
| + | |||
| + | That alone won't work, you will still get following error (or similar) if the script runs longer than 30 seconds: | ||
| + | |||
| + | < | ||
| + | [proxy_fcgi: | ||
| + | |||
| + | </code> | ||
| + | |||
| + | To avoid that, edit the file /etc/apache2/ | ||
| + | |||
| + | <code> | ||
| + | # Timeout for proxy_fcgi module | ||
| + | # This line needs to be added | ||
| + | ProxyTimeout 300 | ||
| + | |||
| + | # That line already exists and is the general apache timeout. | ||
| + | # If you want to increase the timeout over 300, you also need to change that line | ||
| + | Timeout 300 | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ===== Enable HTTP/2 support ===== | ||
| + | |||
| + | Enable HTTP/2 modules: | ||
| + | |||
| + | < | ||
| + | a2enmod http2 | ||
| + | |||
| + | </code> | ||
| + | |||
| + | Create file / | ||
| + | |||
| + | < | ||
| + | < | ||
| + | #The preference order of protocols. | ||
| + | # h2c is http/2 without encryption. | ||
| + | Protocols h2 h2c http/1.1 | ||
| + | #maybe can make initiazion of http/2 connection faster. Not a necessary parameter | ||
| + | H2Direct on | ||
| </ | </ | ||
| - | restart | + | </ |
| + | |||
| + | ===== Activate .htaccess files ===== | ||
| + | |||
| + | The default setup of the apache | ||
| + | |||
| + | < | ||
| + | < | ||
| + | Options Indexes FollowSymLinks | ||
| + | AllowOverride All | ||
| + | Require all granted | ||
| + | </ | ||
| + | |||
| + | </ | ||
| - | see https:// | ||
| - | especially about ulimit and future issues if too many connection are opened. | ||
| - | and especially the caveeats! don't allow document upload into document root!!! | ||
linux_server_manuals/apache_http_2_php-fpm.1515828352.txt.gz · Last modified: 2018/01/13 07:25 by ronney
