Ubuntu20.04配置apache和php-fpm
之前用的php是作为apache的模块使用,现在需要改成PHP-FPM来代理php请求,好处是PHP-FPM作为一个独立的进程管理器,可以预先fork进程,避免了重复的初始化操作,且当请求数量累计到一定程度后,重启进程,从而释放内存给系统。
php-fpm的安装
安装apache、php、php-fpm时需要注意顺序,一般先安装apache。
apt install apache2
安装完apache之后,如果先安装php,之后会默认将php作为apache的模块使用,因此可以先安装php-fpm,再安装php。
apt install php-fpm
apt install php
apache配置文件
先进入/etc/apache2/目录下,这是apache的配置文件目录。
-available文件夹下是全部的配置文件,-enabled文件夹下是实际生效的配置文件的链接,因此改配置文件时要改-available文件夹下的conf文件。
php7.4-fpm.conf默认在/etc/apache2/conf-available/下,有就行,一般不用改。
想要启用php-fpm,需要先禁用php7.4模块,再启用proxy_fcgi模块和php7.4-fpm配置。
a2dismod php7.4
a2enmod proxy_fcgi
a2enconf php7.4-fpm
重启apache和php-fpm生效。
systemctl reload apache2
systemctl restart apache2
systemctl restart php7.4-fpm.service
重启之后,进入/etc/apache2/mods-enabled/目录,能看到有proxy_fcgi.load,且没有php7.4.conf和php7.4.load。
再进入/etc/apache2/conf-enabled/目录,能看到有php7.4-fpm.conf。
php配置文件
全局搜php.ini,能看到有多个相同文件在不同目录下。
find / -name php.ini
不同位置的php.ini对应不同的使用场景:
用命令行执行php,对应的是/etc/php/7.4/cli/php.ini
php作为apache模块使用,对应的是/etc/php/7.4/apache2/php.ini
用php-fpm,对应的是/etc/php/7.4/fpm/php.ini
不同使用场景下,php.ini的生效方式不一样
php作为apache模块使用,修改php.ini后,需要执行systemctl restart apache2
用php-fpm,修改php.ini后,需要执行systemctl restart php7.4-fpm.service
更新php.ini时最好将3个位置的php.ini都替换了,才能保证功能一致。
查看进程
当网页前端发起请求后,可以通过top命令查看系统进程,如果看到有php-fpm进程,说明php-fpm生效了。