Difference between revisions of "Setup php-fpm 7 with Apache on Debian 9 Stretch"
(One intermediate revision by the same user not shown) | |||
Line 4: | Line 4: | ||
'''Written: 1-16-2018''' | '''Written: 1-16-2018''' | ||
− | VPS - Debian 9.2 | + | |
− | Apache 2.4 | + | *VPS - Debian 9.2 |
− | Memory: 1GB | + | *Apache 2.4 |
+ | *Memory: 1GB | ||
==Set up apache2== | ==Set up apache2== | ||
Line 50: | Line 51: | ||
*[https://www.howtoforge.com/tutorial/perfect-server-debian-9-stretch-apache-bind-dovecot-ispconfig-3-1/2/ HowToForge - Maybe a bit overkill, but a good guide] | *[https://www.howtoforge.com/tutorial/perfect-server-debian-9-stretch-apache-bind-dovecot-ispconfig-3-1/2/ HowToForge - Maybe a bit overkill, but a good guide] | ||
*[https://antrecu.com/blog/run-php7-fpm-apache-mpmevent-ubuntu-1604 Antrecu - php7-fpm using mod_event on Ubuntu 16.04] | *[https://antrecu.com/blog/run-php7-fpm-apache-mpmevent-ubuntu-1604 Antrecu - php7-fpm using mod_event on Ubuntu 16.04] | ||
+ | |||
+ | [[Category:Linux]] |
Latest revision as of 15:40, 16 January 2018
These are steps to install php-fpm7.0 on a Debian 9 Stretch server. php-fpm allows for faster processing of PHP documents while using less memory than Apache2 with standard php7.0. This means you can run faster websites with less resource use.
Written: 1-16-2018
- VPS - Debian 9.2
- Apache 2.4
- Memory: 1GB
Contents
Set up apache2
apt-get update apt-get install apache2 php7.0
Test apache2 with phpinfo
rm /var/www/html/index.html echo "<?php phpinfo(); ?>" > /var/www/html/index.php
Note:Access your server, note the Server API
Install php-fpm
apt-get install php-fpm
Change listen address for php-fpm
vim /etc/php/7.0/fpm/pool.d/www.conf Line 36 should be changed to this: listen = 127.0.0.1:9000
Add PHP handler to virtualhost or apache2.conf
<FilesMatch "\.php$"> SetHandler "proxy:fcgi://127.0.0.1:9000/" </FilesMatch>
Note: this tells Apache (global) or a specific virtualhost (per host) to use php-fpm depending on where you put it.
Enable php-fpm
a2enmod proxy_fcgi
Restart apache and test
service apache2 restart service php7.0-fpm restart
Check your server's phpinfo for Server API - it should be "FastCGI" now
Speed and Performance
I tested the speed using Pingdom and Webpagetest before and after php-fpm installation on my test server that was under 0 load. Running my test Wordpress website averaged 2.1 seconds load time before php-fpm, and 1.3 seconds after. With MySQL, 4x php-fpm7.0 processes, and 4x apache2 prefork processes I was running at ~300MB real memory usage, with my buffers and cache filling up 600MB.
More speed
- Tune php-fpm's pool.d/www.conf file for more or less children depending on your resources
- Switch to Apache Worker MPM instead of prefork. This only works on some sites, but it allows you to disable mod_php and use php-fpm with threaded Apache2 children.