[超详细的] CentOS 下手动编译 PHP7.* 开机自启 环境变量 防火墙等配置

1 安装php常用库

yum -y install php-mcrypt libmcrypt-devel libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libmemcached phpmemcached

2 安装php

## 下载安装包,版本按照自己的需求下载
wget http://us3.php.net/distributions/php-7.1.20.tar.gz

## 解压安装包
tar -xvf php-7.1.20.tar.gz

## 进入解压后的目录
cd php-7.1.20

## 配置信息 --prefix 是安装目录
./configure --prefix=/usr/local/php7 \--with-config-file-path=/usr/local/php7/etc \--with-mcrypt=/usr/include \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--with-mysql-sock=/tmp/mysql.sock \--enable-mysqlnd \--with-gd \--with-iconv \--with-zlib \--enable-bcmath \--enable-shmop \--enable-sysvsem \--enable-inline-optimization \--enable-mbregex \--enable-fpm \--enable-mbstring \--enable-ftp \--enable-gd-native-ttf \--with-openssl \--enable-pcntl \--enable-sockets \--with-xmlrpc \--enable-zip \--enable-soap \--with-gettext \--with-curl \--with-jpeg-dir \--with-freetype-dir \--with-libmemcached-dir=/usr/local/libmemcached

## 编译和安装
make && make install

3 修改配置

3.1 修改php配置

## 复制php的配置文件
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
cp /php-7.0.16/php.ini-production /usr/local/php7/etc/php.ini
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

## 编辑php-fpm.conf
vim /usr/local/php7/etc/php-fpm.conf

## 配置内容
pid = /run/php-fpm.pid

## 编辑www.conf
vim /usr/local/php7/etc/php-fpm.d/www.conf

## 配置内容,这里的listen要跟nginx中的代理端口要一样的哦 也可以都改成sock地址
listen = 127.0.0.1:9000

3.2 将php-fpm管理器添加到systemctl系统服务中

## 编辑文件
vi /usr/lib/systemd/system/php-fpm.service

## 配置内容
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

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

[Install]
WantedBy=multi-user.target

$MAINPID 是特殊环境变量,表示主进程,比如这里 php-fpm 的主进程为 7,$MAINPID 就为 7

3.3 将php添加到系统环境变量

vim /etc/profile

## 配置信息,多个环境变量用英文“:”隔开
export PATH=$PATH:/usr/local/nginx/sbin:/usr/local/php7/bin

3.4 添加系统命令后systemctl常用命令

## 开机运行服务
systemctl enable php-fpm.service

## 取消开机运行
systemctl disable php-fpm.service

## 启动服务
systemctl start php-fpm.service

## 停止服务
systemctl stop php-fpm.service

## 重启服务
systemctl restart php-fpm.service

## 重新加载服务配置文件
systemctl reload php-fpm.service

## 查询服务运行状态
systemctl status php-fpm.service

## 显示启动失败的服务
systemctl --failed

3.5 开启防火墙xx端口

firewall-cmd --zone=public --add-port=xx/tcp --permanent
#需要重启生效 很重要
本作品采用《CC 协议》,转载必须注明作者和本文链接
高度自律,深度思考,以勤补拙
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

$MAINPID这个变量哪里定义的?

[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php7/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php7/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
5年前 评论

@lovecn $MAINPID 特殊的环境变量 可用于表示主进程的 PID

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!