如何在CentOS 8上安装带有PHP-FPM的Apache
在Apache中运行PHP的常见方法是mod_php模块。
但相比之下,PHP-FPM有几个优势。
PHP-fpm (FastCGI进程管理器)极大地提高了Apache/PHP环境的性能。
这对高负载网站很有用。
本教程将在CentOS 8和RHEL 8 Linux系统上配置带PHP-FPM的Apache 。
步骤1 -安装Apache
Apache包在默认的AppStream存储库下可用。
我们可以使用以下命令简单地更新DNF缓存并安装Apache web服务器包。
sudo dnf update sudo dnf install httpd httpd-tools mod_ssl
mod_ssl包提供了为安全HTTP使用SSL证书的功能。
安装之后,启用httpd服务并启动。
sudo systemctl enable httpd sudo systemctl start httpd
第2步-使用PHP-fpm安装PHP
Remi存储库包含CentOS 8 Linux系统的最新PHP包。
因此,首先需要将REMI存储库添加到系统中。
只需执行以下命令来添加存储库。
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
然后启用PHP安装所需的DNF模块。
在这里,我们将启用该模块来安装PHP 7.4。
我们可以根据要求将其更改为PHP 7.3或PHP 7.2。
sudo dnf module reset php sudo dnf module enable php:remi-7.4
现在,在系统上安装PHP。
因为我们将使用FastCGI进程管理器(FPM)进行设置。
所以也安装php-fpm包。
sudo dnf update sudo dnf install php php-fpm php-gd php-mysqlnd
我们可能还需要更多的PHP模块,所以在进行下一步之前安装它们。
完成PHP安装后,启用PHP-fpm服务并启动它。
sudo systemctl enable php-fpm sudo systemctl start php-fpm
确保php-fpm服务正在运行。
**sudo systemctl status php-fpm** ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2019-12-09 21:44:57 PST; 1h 24min ago Main PID: 29280 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 3, slow: 0, Traffic: 0req/sec" Tasks: 6 (limit: 10321) Memory: 24.6M CGroup: /system.slice/php-fpm.service ├─29280 php-fpm: master process (/etc/php-fpm.conf) ├─29281 php-fpm: pool www ├─29282 php-fpm: pool www ├─29283 php-fpm: pool www ├─29284 php-fpm: pool www └─29285 php-fpm: pool www Dec 09 21:44:57 theitroad.example.com systemd[1]: Starting The PHP FastCGI Process Manager... Dec 09 21:44:57 theitroad.example.com systemd[1]: Started The PHP FastCGI Process Manager.
步骤3 -配置PHP-FPM
在这一步,我们已经安装了所有必需的包。
让我们开始配置过程。
首先,编辑Apache的PHP-FPM配置文件:
sudo vim /etc/php-fpm.d/www.conf
进行如下的更改。
; listen = 127.0.0.1:9000 listen = /run/php-fpm/www.sock user = apache group = apache listen.allowed_clients = 127.0.0.1 listen.owner = apache listen.group = apache listen.mode = 0660 pm = dynamic
最新版本的Apache可以使用代理连接到套接字。
因此,确保listen设置为套接字文件。
然后将用户和组设置为与Apache服务器使用的相同。
如果需要从远程连接FPM系统更改监听。
允许客户端访问LAN IP,而不是127.0.0.1。
进行更改后,重新启动php-fpm服务使更改生效。
sudo systemctl restart php-fpm
步骤4 -创建Apache虚拟主机
现在是配置Apache使用PHP -fpm处理PHP文件的时候了。
这里有两个选项,要么使用FPM作为所有虚拟主机的默认值,要么专门配置虚拟主机使用FPM。
这样,其他虚拟主机就不会受到影响。
对于本例,我仅为一个特定的虚拟主机配置FPM。
在文本编辑器中编辑配置文件:
sudo vim /etc/httpd/conf.d/example.com.conf
现在添加代理配置使用一个套接字文件。
还配置了所有PHP脚本使用fpm处理程序执行。
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html ServerName example.com ServerAlias www.example.com # Proxy declaration <Proxy "unix:/run/php-fpm/www.sock|fcgi://php-fpm"> # we must declare a parameter in here (doesn't matter which) or # it'll not register the proxy ahead of time ProxySet disablereuse=off # Note: If you configure php-fpm to use the "pm = ondemand" #then use "ProxySet disablereuse=on" </Proxy> <FilesMatch \.php$> SetHandler proxy:fcgi://php-fpm </FilesMatch> ErrorLog logs/example.com-error.log CustomLog logs/example.com-access.log combined </VirtualHost>
保存虚拟主机配置文件并重新加载Apache使更改生效。
sudo systemctl restart httpd
步骤5-启用防火墙规则
服务器已经准备好为应用程序提供服务。
如果系统上启用了防火墙,请确保Apache端口是开放的,可以从远程系统访问。
以下命令将为我们打开所需的端口。
sudo firewall-cmd --zone=public --permanent --add-service=http sudo firewall-cmd --zone=public --permanent --add-service=https sudo firewall-cmd --reload
步骤6 -测试设置
要测试环境,创建一个PHP脚本,内容是调用phpinfo()函数。
将此文件放置到服务器文档根目录中。
使用下面的命令来完成此操作。
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
然后使用浏览器访问info.php。
http://localhost/info.php
总结
我们已经在CentOS 8或RHEL 8 Linux系统上成功地使用PHP-FPM配置了Apache。