PHP环境自动部署处理方法
在服务器运维和项目部署场景中,手动配置PHP环境往往存在步骤繁琐、易出错、难以复现等问题。通过编写自动化脚本实现PHP环境的一键部署,能够大幅提升部署效率,保证不同服务器上的环境配置一致性。本文将介绍基于Shell脚本实现PHP环境自动部署的完整方法,适用于CentOS 7及以上版本的操作系统。
自动部署脚本设计思路
PHP环境自动部署的核心逻辑可以拆分为以下几个步骤:
- 检查当前系统是否是支持的操作系统版本,避免在不兼容的环境中执行脚本
- 安装PHP运行所需的依赖包,包括编译器、库文件等基础组件
- 下载指定版本的PHP源码包,解压后完成编译配置
- 执行编译安装流程,根据需求开启常用的PHP扩展
- 配置PHP-FPM服务,设置开机自启动,完成环境初始化
完整自动部署脚本实现
以下是完整的Shell自动部署脚本,脚本中包含了错误捕获逻辑,当某一步执行失败时脚本会自动退出并提示错误信息,避免后续流程异常执行。脚本默认安装PHP 7.4版本,可根据实际需求修改版本号参数。
#!/bin/bash
# 设置脚本遇到错误时自动退出
set -e
# 定义PHP版本和安装路径
PHP_VERSION="7.4.33"
PHP_INSTALL_DIR="/usr/local/php"
PHP_DOWNLOAD_URL="https://www.php.net/distributions/php-${PHP_VERSION}.tar.gz"
# 检查是否为root用户执行脚本
if [ "$(id -u)" -ne 0 ]; then
echo "错误:请使用root用户执行该部署脚本"
exit 1
fi
# 检查系统版本是否为CentOS 7及以上
if [ ! -f /etc/redhat-release ]; then
echo "错误:仅支持CentOS 7及以上版本系统"
exit 1
fi
CENTOS_VERSION=$(grep -oE '[0-9]+' /etc/redhat-release | head -1)
if [ "$CENTOS_VERSION" -lt 7 ]; then
echo "错误:系统版本过低,要求CentOS 7及以上"
exit 1
fi
echo "开始安装PHP ${PHP_VERSION} 环境依赖包..."
# 安装编译依赖
yum install -y gcc gcc-c++ make \
libxml2-devel openssl-devel curl-devel \
libjpeg-devel libpng-devel freetype-devel \
libzip-devel bzip2-devel readline-devel \
sqlite-devel oniguruma-devel
echo "开始下载PHP ${PHP_VERSION} 源码包..."
cd /usr/local/src
# 下载源码包,若已存在则跳过下载
if [ ! -f "php-${PHP_VERSION}.tar.gz" ]; then
wget ${PHP_DOWNLOAD_URL} -O php-${PHP_VERSION}.tar.gz
fi
echo "开始解压并编译PHP源码..."
tar -zxvf php-${PHP_VERSION}.tar.gz
cd php-${PHP_VERSION}
# 配置编译参数,开启常用扩展
./configure \
--prefix=${PHP_INSTALL_DIR} \
--with-config-file-path=${PHP_INSTALL_DIR}/etc \
--enable-fpm \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pdo \
--with-mysqli \
--with-pdo-mysql \
--with-curl \
--with-openssl \
--with-zlib \
--with-gd \
--with-jpeg \
--with-freetype \
--with-readline
echo "开始编译并安装PHP..."
make -j $(nproc)
make install
echo "开始配置PHP和PHP-FPM..."
# 复制默认配置文件
cp php.ini-production ${PHP_INSTALL_DIR}/etc/php.ini
cp ${PHP_INSTALL_DIR}/etc/php-fpm.conf.default ${PHP_INSTALL_DIR}/etc/php-fpm.conf
cp ${PHP_INSTALL_DIR}/etc/php-fpm.d/www.conf.default ${PHP_INSTALL_DIR}/etc/php-fpm.d/www.conf
# 设置PHP-FPM服务
cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable php-fpm
systemctl start php-fpm
# 添加PHP命令到系统环境变量
echo "export PATH=\$PATH:${PHP_INSTALL_DIR}/bin:${PHP_INSTALL_DIR}/sbin" >> /etc/profile
source /etc/profile
echo "PHP ${PHP_VERSION} 环境部署完成!"
echo "PHP可执行文件路径:${PHP_INSTALL_DIR}/bin/php"
echo "PHP-FPM服务状态:"
systemctl status php-fpm --no-pager脚本使用说明
将上述脚本保存为deploy_php.sh文件后,按照以下流程执行即可完成部署:
- 将脚本上传到目标CentOS服务器的任意目录,比如
/root目录 - 给脚本添加可执行权限:执行命令
chmod +x deploy_php.sh - 使用root用户执行脚本:执行命令
./deploy_php.sh - 等待脚本执行完成,根据终端输出的PHP-FPM服务状态确认部署是否成功
部署后验证
部署完成后,可以通过以下方式验证PHP环境是否正常:
- 执行
php -v命令,查看输出的PHP版本是否为设定的7.4.33 - 执行
php -m命令,查看已安装的扩展是否包含脚本中配置的常见扩展 - 创建测试文件
/usr/local/php/html/info.php,内容如下,通过浏览器访问服务器IP/info.php查看PHP信息页面:
<?php phpinfo(); ?>
注意事项
如果服务器无法访问外网,需要提前将PHP源码包下载到本地,上传到服务器的/usr/local/src目录,同时修改脚本中的下载逻辑,跳过wget步骤即可。若需要部署其他版本的PHP,只需要修改脚本开头的PHP_VERSION变量为对应版本号,同时确保下载地址正确即可。另外如果服务器已经安装了其他版本的PHP,建议先备份原有配置,避免部署过程中覆盖现有环境造成业务异常。