目录
Toggle🔧 一、准备工作
✅ 1. 安装编译依赖
sudo dnf install -y gcc make libxml2-devel sqlite-devel openssl-devel \
curl-devel libpng-devel libjpeg-turbo-devel freetype-devel \
libzip-devel bzip2-devel readline-devel oniguruma-devel systemd-devel
✅ 2. 下载 PHP 8.3 源码
cd /usr/local/src
sudo wget https://www.php.net/distributions/php-8.3.0.tar.gz
sudo tar -xvf php-8.3.0.tar.gz
cd php-8.3.0
⚙️ 二、编译安装 PHP 8.3
✅ 1. 配置编译选项
./configure --prefix=/usr/local/php83 \
--with-config-file-path=/usr/local/php83/etc \
--enable-fpm \
--with-fpm-systemd \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
...(其他模块配置)
✅ 2. 编译安装
make -j$(nproc)
sudo make install
✅ 3. 基础配置
sudo cp php.ini-production /usr/local/php83/etc/php.ini
sudo mkdir /usr/local/php83/etc/conf.d
🔌 三、PHP-FPM 配置
✅ 1. 创建配置文件
sudo cp /usr/local/php83/etc/php-fpm.conf.default /usr/local/php83/etc/php-fpm.conf
sudo cp /usr/local/php83/etc/php-fpm.d/www.conf.default /usr/local/php83/etc/php-fpm.d/www.conf
✅ 2. 配置监听 socket
# /usr/local/php83/etc/php-fpm.d/www.conf
[www]
listen = /run/php83-fpm/www83.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
✅ 3. 进程管理配置
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
🚀 四、Systemd 服务配置
✅ 1. 创建服务文件
# /etc/systemd/system/php83-fpm.service
[Service]
Type=notify
ExecStart=/usr/local/php83/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php83/etc/php-fpm.conf
RuntimeDirectory=php83-fpm
RuntimeDirectoryMode=0755
...
✅ 2. 启用服务
sudo systemctl daemon-reload
sudo systemctl enable --now php83-fpm
🌐 五、Nginx 配置更新
✅ 1. 修改 PHP 处理配置
# /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
fastcgi_pass unix:/run/php83-fpm/www83.sock;
...
}
✅ 2. 应用配置
sudo /usr/local/nginx/sbin/nginx -t # 测试配置
sudo systemctl reload nginx
🔒 六、权限与安全
✅ 1. 目录所有权修改
sudo chown -R nginx:nginx /usr/local/nginx/html
✅ 2. 文件权限设置
# 目录 755
sudo find /usr/local/nginx/html -type d -exec chmod 755 {} \;
# 文件 644
sudo find /usr/local/nginx/html -type f -exec chmod 644 {} \;
✅ 3. SELinux 策略
sudo semanage fcontext -a -t httpd_var_run_t "/run/php83-fpm(/.*)?"
sudo restorecon -Rv /run/php83-fpm
🧹 七、旧版本清理
✅ 1. 停止并禁用旧服务
sudo systemctl stop php-fpm
sudo systemctl disable php-fpm
✅ 2. 清理残留进程
sudo pkill -9 -f php-fpm
sudo rm -f /run/php-fpm/*
✅ 当前成功状态总结
- PHP 8.3 运行中:
systemctl status php83-fpm
显示 active (running) - Nginx 配置更新:所有 PHP 请求指向新 socket
- 权限正确:网站目录所有权已改为 nginx:nginx
- 旧版完全禁用:无 apache 用户 PHP-FPM 进程残留
- SELinux 兼容:已添加新 socket 目录规则