CentOS 生产环境 PHP-7.3.33 编译安装文档

AI摘要
本文是一份详细的Nginx与PHP-FPM生产环境部署指南,属于技术知识分享。内容系统介绍了在CentOS系列Linux服务器上,从源码编译安装PHP 7.3.33、配置PHP-FPM(包括用户、进程管理)、集成MySQL/Redis/OPCache等关键扩展,到优化生产参数、配置systemctl服务管理,并与Nginx进行对接的全流程操作步骤和关键配置建议。

Nginx + PHP-FPM 生产环境常用配置,包含:

  • PHP-FPM

  • MySQL

  • Redis

  • OPCache

  • GD

  • mbstring

  • intl

  • sockets

  • curl

  • zip

  • bcmath

适合 CentOS 7 / CentOS 8 / Rocky / AlmaLinux 内网服务器部署。


一、安装目标

安装版本:

PHP 7.3.33

安装目录:

/usr/local/php

程序路径:

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

二、准备源码

在外网机器下载|或者本地准备:

https://www.php.net/distributions/php-7.3.33.tar.gz

上传到服务器:

/opt/install/php-7.3.33.tar.gz

三、安装系统依赖

CentOS:

yum install -y
gcc
gcc-c++
make
autoconf
libxml2-devel
openssl-devel
curl-devel
libjpeg-devel
libpng-devel
freetype-devel
libzip-devel
bzip2-devel
sqlite-devel
oniguruma-devel
libicu-devel

生产环境常用库说明:

用途
openssl https
curl http请求
libzip zip压缩
icu intl国际化
oniguruma mbstring

四、创建运行用户

groupadd www
useradd -g www -s /sbin/nologin www

五、解压源码

mkdir -p /opt/install
cd /opt/install

tar -zxvf php-7.3.33.tar.gz
cd php-7.3.33

六、生产环境 configure 参数

这是 推荐生产编译参数

./configure
--prefix=/usr/local/php
--with-config-file-path=/usr/local/php/etc
--with-config-file-scan-dir=/usr/local/php/etc/php.d
--enable-fpm
--with-fpm-user=www
--with-fpm-group=www
--enable-opcache
--enable-mbstring
--enable-bcmath
--enable-pcntl
--enable-sockets
--enable-soap
--enable-intl
--enable-zip
--with-curl
--with-openssl
--with-zlib
--with-gd
--with-jpeg-dir
--with-png-dir
--with-freetype-dir
--with-zip
--with-bz2
--with-gettext
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd

说明:

参数 作用
enable-fpm php-fpm服务
mysqlnd PHP内置mysql驱动
opcache PHP缓存
intl 国际化
gd 图片处理
mbstring 中文支持

七、编译安装

编译:

make -j$(nproc)

安装:

make install

安装完成:

/usr/local/php

八、配置 PHP

复制配置:

cp php.ini-production /usr/local/php/etc/php.ini

验证:

/usr/local/php/bin/php -v

输出示例:

PHP 7.3.33 (cli)

九、配置 PHP-FPM

进入目录:

cd /usr/local/php/etc

复制配置:

cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf

修改 www.conf

vi /usr/local/php/etc/php-fpm.d/www.conf

修改关键配置:

user = www
group = www

listen = 127.0.0.1:9000

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

十、启动 PHP-FPM

启动:

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

查看进程:

ps -ef | grep php-fpm

正常示例:

root php-fpm master process
www php-fpm pool www

十一、加入 PATH

编辑:

vi /etc/profile

添加:

export PATH=$PATH:/usr/local/php/bin:/usr/local/php/sbin

生效:

source /etc/profile

十二、systemctl 管理

创建 service:

vi /usr/lib/systemd/system/php-fpm.service

内容:

[Unit]
Description=PHP-FPM
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -INT $MAINPID

[Install]
WantedBy=multi-user.target

启动:

systemctl daemon-reload
systemctl start php-fpm
systemctl enable php-fpm

十三、安装 Redis 扩展(生产必备)

下载:

https://github.com/phpredis/phpredis

编译:

cd phpredis
/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make
make install

安装成功:

/usr/local/php/lib/php/extensions/redis.so

编辑:

vi /usr/local/php/etc/php.ini

增加:

extension=redis.so

十四、OPCache 优化

编辑:

vi /usr/local/php/etc/php.ini

增加:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

十五、验证架构

非常关键(避免你之前的问题)。

执行:

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

正确示例:

ELF 64-bit LSB executable

如果看到:

Mach-O

说明是 Mac 编译的。


十六、Nginx 对接

Nginx 示例:

location ~ \.php$ {
    root /data/www;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
}

十七、生产环境推荐目录结构

/usr/local/php
├── bin
├── sbin
├── etc
├── lib
└── var

Web目录:

/data/www

日志目录:

/data/logs

十八、生产环境建议

建议设置:

memory_limit = 512M
max_execution_time = 60
upload_max_filesize = 50M
post_max_size = 50M

十九、验证 PHP

创建:

/data/www/info.php

内容:

<?php
phpinfo();

访问:

http://服务器IP/info.php

二十、最终检查

查看服务:

systemctl status php-fpm

查看端口:

netstat -lntp | grep 9000

如果服务器 8核CPU,推荐:

pm.max_children = 80

计算公式:

CPU核心 * 10

本作品采用《CC 协议》,转载必须注明作者和本文链接
每天一点小知识,到那都是大佬,哈哈
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
php @ 远程
文章
95
粉丝
16
喜欢
77
收藏
88
排名:522
访问:1.6 万
私信
所有博文
社区赞助商