CentOS 生产环境 PHP-7.3.33 编译安装文档
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 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: