CentOS环境下PHP7源码编译安装与优化指南

引言

PHP作为一种广泛使用的开源脚本语言,在Web开发领域占据着重要地位。CentOS作为一款稳定的服务器操作系统,常常被用于部署PHP应用。本文将详细介绍如何在CentOS环境下编译安装PHP7,并提供一些优化建议,帮助读者打造一个高效、稳定的PHP运行环境。

一、准备工作

在开始编译安装PHP7之前,我们需要做一些准备工作,包括安装必要的依赖包和下载PHP源码。

1. 安装依赖包

为了确保PHP编译过程的顺利进行,我们需要安装一些依赖包。打开终端,执行以下命令:

sudo yum groupinstall "Development Tools"
sudo yum install libxml2-devel sqlite-devel libcurl-devel oniguruma-devel libpng-devel libjpeg-devel freetype-devel libzip-devel openssl-devel -y

这些依赖包包括开发工具、XML处理库、SQLite数据库、cURL库、正则表达式库、图像处理库、压缩库和加密库等。

2. 下载PHP源码

访问PHP官网下载页面( 7.4.28为例,可以使用wget命令下载:

wget https://www.php.net/distributions/php-7.4.28.tar.gz

二、编译安装PHP7

下载完成后,我们开始编译安装PHP7。

1. 解压源码包

首先,解压下载的PHP源码包:

tar -zxvf php-7.4.28.tar.gz
cd php-7.4.28
2. 配置编译参数

在解压后的目录中,运行./configure命令来配置编译参数。以下是一个常见的配置示例:

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc \
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir \
--with-zlib --with-openssl --with-curl --with-mhash \
--enable-mbstring --enable-sockets --enable-fpm --enable-zip

这些参数的含义如下:

  • --prefix:指定PHP的安装目录。
  • --with-config-file-path:指定PHP配置文件的路径。
  • --with-mysql--with-mysqli--with-pdo-mysql:启用MySQL支持。
  • --with-gd--with-freetype-dir--with-jpeg-dir--with-png-dir:启用图像处理支持。
  • --with-zlib--with-openssl--with-curl--with-mhash:启用压缩、加密和cURL支持。
  • --enable-mbstring--enable-sockets--enable-fpm--enable-zip:启用多字节字符串、套接字、FastCGI进程管理和Zip支持。
3. 编译和安装

配置完成后,开始编译和安装:

make
sudo make install

编译过程可能需要一些时间,请耐心等待。

三、配置PHP

安装完成后,我们需要进行一些配置,以确保PHP能够正常运行。

1. 配置PHP-FPM

PHP-FPM(FastCGI Process Manager)是PHP的一个FastCGI管理器,用于提高PHP的执行效率。首先,复制PHP-FPM的配置文件:

sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

然后,启动PHP-FPM:

/usr/local/php/sbin/php-fpm

为了方便管理,可以将PHP-FPM设置为系统服务,并添加到开机启动:

sudo vi /etc/systemd/system/php-fpm.service

在文件中添加以下内容:

[Unit]
Description=The PHP FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -INT $MAINPID

[Install]
WantedBy=multi-user.target

保存并退出,然后启用并启动服务:

sudo systemctl enable php-fpm
sudo systemctl start php-fpm
2. 配置PHP环境变量

为了方便在终端中直接使用PHP命令,需要将PHP的bin目录添加到环境变量中:

echo 'export PATH=$PATH:/usr/local/php/bin' >> ~/.bashrc
source ~/.bashrc

四、优化建议

为了进一步提升PHP的性能和稳定性,以下是一些优化建议:

1. 调整PHP-FPM配置

根据服务器的硬件配置和实际负载情况,适当调整PHP-FPM的配置参数,如pm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers等。

2. 使用OPcache

OPcache是PHP的一个内置缓存引擎,用于缓存预编译的脚本字节码,从而提高PHP的执行效率。在php.ini文件中启用并配置OPcache:

zend_extension=opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
3. 使用Redis或Memcached

使用Redis或Memcached作为缓存解决方案,可以显著减少数据库的访问压力,提高应用的响应速度。

4. 定期更新PHP

保持PHP的最新版本,及时修复已知的安全漏洞和性能问题。

五、常见问题及解决方案

在编译安装PHP的过程中,可能会遇到一些问题。以下是一些常见问题及其解决方案:

1. 缺少依赖包

如果在运行./configure命令时提示缺少某个依赖包,可以使用yum命令安装相应的开发包,如libxml2-developenssl-devel等。

2. 编译错误

如果遇到编译错误,可以查看错误信息,查找相关解决方案。常见的编译错误可能是由于缺少某些库文件或编译工具引起的。

3. PHP-FPM启动失败

如果PHP-FPM启动失败,可以查看日志文件/usr/local/php/var/log/php-fpm.log,根据错误信息进行排查。

结语