在CentOS上安装和配置PHPFPM是一个多步骤的过程,涉及安装必要的依赖包、编译PHP源代码以及配置相关的服务,以下是一个详细的指南,包括常见问题的解答。
安装前准备
确保系统已经安装了必要的开发工具和库:
yum y install gcc automake autoconf libtool make yum y install gcc gccc++ glib2devel libxml2devel zlibdevel bzip2devel curldevel e2fsprogsdevel krb5devel libmcryptdevel libjpegdevel libpngdevel freetypedevel libxsltdevel recodedevel libicudevel openssldevel sqlitedevel wget
下载并解压PHP源代码
从PHP官方网站下载所需的PHP版本源代码,例如PHP 7.4.12:
wget https://www.php.net/distributions/php7.4.12.tar.gz tar xzvf php7.4.12.tar.gz cd php7.4.12
配置PHP编译选项
在编译PHP时,需要指定一些配置选项,以确保PHPFPM和其他所需模块被正确编译:
./configure prefix=/usr/local/php \ withconfigfilepath=/usr/local/php/etc \ enablefpm \ withfpmuser=nginx \ withfpmgroup=nginx \ enableinlineoptimization \ disabledebug \ disablerpath \ enableshared \ enablesoap \ withxmlrpc \ withopenssl \ withmcrypt \ withpcreregex \ withsqlite3 \ withzlib \ enablebcmath \ withiconv \ withbz2 \ enablecalendar \ withcurl \ withcdb \ enabledom \ enableexif \ enablefileinfo \ enablefilter \ withpcredir \ enableftp \ withgd \ withopenssldir \ withjpegdir \ withpngdir \ withfreetypedir \ enablegdnativettf \ enablegdjisconv \ withgettext \ withgmp \ enablejson \ enablembstring \ enablembregex \ enablembregexbacktrack \ withlibmbfl \ withonig \ enablepdo \ withmysqli=mysqlnd \ withpdomysql=mysqlnd \ withzlibdir \ withpdosqlite \ withreadline \ enablesession \ enableshmop \ enablesimplexml \ enablesockets \ enablesysvmsg \ enablesysvsem \ enablesysvshm \ enablewddx \ withlibxmldir \ withxsl \ enablezip \ enablemysqlndcompressionsupport \ withpear \ enableopcache
编译和安装PHP
执行以下命令以编译和安装PHP:
make && make install
配置PHPFPM
将配置文件复制到合适的位置,并修改启动用户和组:
cd /usr/local/php/etc cp phpfpm.conf.default phpfpm.conf cp sapi/fpm/init.d.phpfpm init.d/phpfpm cp sapi/fpm/www.conf.default sapi/fpm/www.conf
编辑www.conf
文件,设置正确的监听地址和用户组:
[www] listen = /var/run/phpfpm/phpfpm.sock user = nginx group = nginx pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 chdir = /
启动PHPFPM服务
创建PHPFPM启动脚本,并将其添加到系统服务中:
cp sapi/fpm/init.d/phpfpm /etc/init.d/phpfpm chmod +x /etc/init.d/phpfpm chkconfig add phpfpm service phpfpm start
配置Nginx使用PHPFPM
编辑Nginx配置文件(例如/etc/nginx/nginx.conf
),添加以下配置以支持PHP处理:
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/phpfpm/phpfpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
重启Nginx服务以应用更改:
systemctl restart nginx
验证安装
创建一个测试PHP文件,例如/usr/share/nginx/html/test.php
如下:
<?php phpinfo(); ?>
然后在浏览器中访问http://your_server_ip/test.php
,如果看到PHP信息页面,说明PHPFPM已成功安装并配置。
常见问题及解答(FAQ)
Q1: PHP编译时出现“oniguruma”错误怎么办?
A1: CentOS默认可能没有安装oniguruma
库,可以通过以下命令安装:
yum install oniguruma onigurumadevel y
然后再重新编译PHP。
Q2: PHPFPM无法启动或报错怎么办?
A2: 检查PHPFPM的错误日志,通常位于/var/log/phpfpm/error.log
,根据日志中的提示进行相应的调整,常见的问题包括权限不足、配置文件错误等,确保/var/run/phpfpm/phpfpm.sock
文件的权限正确,并且phpfpm.conf
中的用户和组设置正确。