三、编译安装 Php

1、安装编译环境依赖包

[root@qfedu.com ~]# yum -y install gcc gcc-c++ glibc automake autoconf libtool make

2、安装编译 php 依赖库

[root@qfedu.com ~]# yum -y install libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel

3、编译安装 Php 1、下载 Php 源码包

[root@qfedu.com ~]# wget https://www.php.net/distributions/php-7.3.6.tar.gz

2、配置 Php 编译

[root@localhost ~]# tar xzvf php-7.3.6.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/php-7.3.6/
[root@qfedu.com php-7.3.6 ]# ./configure \
    --prefix=/usr/local/php7 \
    --with-config-file-path=/usr/local/php7 \
    --with-config-file-scan-dir=/usr/local/php7/php.d \
    --enable-mysqlnd \
    --with-mysqli \
    --with-pdo-mysql \
    --enable-fpm \
    --with-fpm-user=nginx \
    --with-fpm-group=nginx \
    --with-gd \
    --with-iconv \
    --enable-xml \
    --enable-shmop \
    --enable-sysvsem \
    --enable-inline-optimization \
    --enable-mbregex \
    --enable-mbstring \
    --enable-ftp \
    --with-openssl \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-soap \
    --without-pear \
    --with-gettext \
    --enable-session \
    --with-curl \
    --with-jpeg-dir \
    --with-freetype-dir \
    --enable-opcache

3、Php 编译参数说明

--prefix=/usr/local/php7        # 配置安装目录
--with-config-file-path=/usr/local/php7 # 配置文件 php.ini 的路径
--enable-sockets                # 开启 socket 
--enable-fpm                    # 启用 fpm 扩展
--enable-cli                    # 启用 命令行模式 (从 php 4.3.0 之后这个模块默认开启所以可以不用再加此命令)
--enable-mbstring               # 启用 mbstring 库
--enable-pcntl                  # 启用 pcntl (仅 CLI / CGI)
--enable-soap                   # 启用 soap 
--enable-opcache                # 开启 opcache 缓存
--disable-fileinfo              # 禁用 fileinfo (由于 5.3+ 之后已经不再持续维护了,但默认是开启的,所以还是禁止了吧)(1G以下内存服务器直接关了吧)
--disable-rpath                 # 禁用在搜索路径中传递其他运行库。
--with-mysqli                   # 启用 mysqli 扩展
--with-pdo-mysql                # 启用 pdo 扩展
--with-iconv-dir                # 启用 XMLRPC-EPI 字符编码转换 扩展
--with-openssl                  # 启用 openssl 扩展 (需要 openssl openssl-devel)
--with-fpm-user=nginx           # 设定 fpm 所属的用户 
--with-fpm-group=nginx          # 设定 fpm 所属的组别
--with-curl                     # 启用 curl 扩展
--with-mhash                    # 开启 mhash 基于离散数学原理的不可逆向的php加密方式扩展库
# GD
--with-gd                       # 启用 GD 图片操作 扩展
--with-jpeg-dir                 # 开启对 jpeg 图片的支持 (需要 libjpeg)
--with-png-dir                  # 开启对 png 图片支持 (需要 libpng)
--with-freetype-dir             # 开启 freetype 

# xml
--enable-simplexml              # 启用对 simplexml 支持
--with-libxml-dir               # 启用对 libxml2 支持

--enable-debug                  # 开启 debug 模式

4、编译安装 Php

[root@qfedu.com php-7.3.6]# make && make install

大约需要等待30分钟

5、创建 php.ini 配置文件

[root@localhost php-7.3.6]# cp php.ini-production /usr/local/php7/etc/php.ini

[root@localhost php-7.3.6]# vim /usr/local/php7/etc/php.ini +1371 #php的Session存储目录
1371 session.save_path = "/tmp" #将注释打开

6、设置php-fpm配置文件

[root@qfedu.com php-7.3.6]# cd /usr/local/php7/etc
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# vim php-fpm.conf +17
pid = /var/run/php-fpm.pid  #将注释取消并修改

# php-fpm连接文件
[root@localhost etc]# cd /usr/local/php7/etc/php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf
[root@localhost php-fpm.d]# vim www.conf
user = nginx
group = nginx
listen = 127.0.0.1:9000

7、启动 php-fpm

[root@qfedu.com php-fpm.d]# /usr/local/php7/sbin/php-fpm

8、检查 php-fpm 是否成功启动

[root@qfedu.com php-fpm.d]# ps aux | grep php-fpm

若看到相关进程,则证明启动成功。查询进程时,进程是以 nginx 用户身份执行的

9、配置 php-fpm 系统环境变量

[root@localhost php-fpm.d]# cd
[root@qfedu.com ~]# vim /etc/profile
export PHP_HOME=/usr/local/php7
export PATH=$PATH:$PHP_HOME/bin:$PHP_HOME/sbin

10、重载环境变量

[root@qfedu.com ~]# source /etc/profile

使用 echo $PATH 命令查看环境变量中是否已经加入了相关的路径 11、配置 php-fpm 开机自启动

[root@qfedu.com ~]# vim /lib/systemd/system/php-fpm.service
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php7/sbin/php-fpm
ExecStop=/bin/pkill -9 php-fpm
PrivateTmp=true
[Install]
WantedBy=multi-user.target

12、php-fpm.service 文件说明

[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

13、重载 systemctl 配置

[root@qfedu.com ~]# systemctl daemon-reload
1.
14、停止 php-fpm
[root@qfedu.com ~]# pkill php-fpm
1.
15、用 systemctl 启动 php-fpm
[root@qfedu.com ~]# systemctl start php-fpm.service
1.
16、设置 php-fpm 开机启动
[root@qfedu.com ~]# systemctl enable php-fpm.service
1.
17、php-fpm 管理命令
[root@qfedu.com ~]# systemctl stop php-fpm.service          # 停止服务
[root@qfedu.com ~]# systemctl restart php-fpm.service       # 重新启动服务
[root@qfedu.com ~]# systemctl status php-fpm.service        # 查看服务当前状态
[root@qfedu.com ~]# systemctl disable php-fpm.service       # 停止开机自启动

四、Nginx 配置支持PHP

1、添加 Nginx 配置
[root@localhost ~]# cd /etc/nginx/
[root@localhost nginx]# vim nginx.conf
#配置如下
server
{
    listen 80;
    server_name localhost;
    index index.html index.htm index.php;
    root /usr/local/nginx/html;
    location ~ \.php$
    {
        include fastcgi_params;        #指定nginx连接php-fpm的常量
        fastcgi_pass 127.0.0.1:9000;    #连接php-fpm的地址和端口
        fastcgi_index index.php;        #指定默认页面
        fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; #指定站点根目录
    }
}

2、添加 php 探测文件

[root@localhost nginx]# cd /usr/local/nginx/html/
[root@qfedu.com html]# vim index.php
<?php
phpinfo();

?>

3、验证 Nginx 关联 php-fpm

1、重启 php-fpm

[root@qfedu.com html]# systemctl restart php-fpm.service
[root@localhost ~]# ps -ef|grep php-fpm
root      69652      1  0 14:02 ?        00:00:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)
nginx     69653  69652  0 14:02 ?        00:00:00 php-fpm: pool www
nginx     69654  69652  0 14:02 ?        00:00:00 php-fpm: pool www
nginx     69655  69652  0 14:02 ?        00:00:00 php-fpm: pool www
nginx     69656  69652  0 14:02 ?        00:00:00 php-fpm: pool www
nginx     69657  69652  0 14:02 ?        00:00:00 php-fpm: pool www

2、重载 Nginx 配置

[root@qfedu.com html]# systemctl restart nginx
[root@qfedu.com html]# systemctl status nginx

3、访问验证