CentOS 7.2 编译安装 PHP-7.3.2 和配置 Nginx

摘要:CentOS 7.2 编译安装 PHP-7.3.2 和配置 Nginx,系统版本centos linux release 7.2,Nginx 版本 1.14.2,PHP 版本 7.3.2。

安装前言

php-7.3.2 的编译安装和 nginx 的配置,系统版本 centos linux release 7.2,nginx-1.14.2。编译按照好后,源码包留着就好,万一以后有扩展未安装,直接在源码包中的 ext 文件夹下找到扩展安装即可。


准备工作

[root@localhost ~]# rpm -qa | grep libxml2
libxml2-2.9.1-5.el7_1.2.x86_64
[root@localhost ~]# yum list |grep libxml2
libxml2.x86_64                             2.9.1-5.el7_1.2             @anaconda
libxml2.i686                               2.9.1-6.el7_2.3             base     
libxml2.x86_64                             2.9.1-6.el7_2.3             base     
libxml2-devel.i686                         2.9.1-6.el7_2.3             base     
libxml2-devel.x86_64                       2.9.1-6.el7_2.3             base     
libxml2-python.x86_64                      2.9.1-6.el7_2.3             base     
libxml2-static.i686                        2.9.1-6.el7_2.3             base     
libxml2-static.x86_64                      2.9.1-6.el7_2.3             base
[root@localhost ~]# yum install libxml2-devel.x86_64

配置前如果没有 libxml2 和 libxml2-devel 会报错,所以应该先检测下是否存在 libxml2 和 libxml2-devel 工具包,如果没有,请先提前安装。


安装步骤

1、下载php源码包 && 解压

[root@localhost ~]# wget http://php.net/distributions/php-7.3.2.tar.gz
[root@localhost ~]# tar zxf php-7.3.2.tar.gz


2、开始编译 && 安装

[root@localhost ~]# cd php-7.3.2
[root@localhost php-7.3.2]# ./configure --prefix=/usr/local/php --enable-fpm --with-config-file-path=/usr/local/php/etc --with-fpm-user=www --with-fpm-group=www
[root@localhost php-7.3.2]# make && make install


3、创建配置文件,复制到正确的位置

[root@localhost php-7.3.2]# cp php.ini-development /usr/local/php/etc/php.ini
[root@localhost php-7.3.2]# cd /usr/local/php/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf


4、修改 cgi.fix_pathinfo 配置项

[root@localhost etc]# vi php.ini 
.
.
.
cgi.fix_pathinfo=0
.
.
.

这一项默认被注释并且值为 1,根据官方文档的说明,这里为了当文件不存在时,阻止 nginx 将请求发送到后端的 php-fpm 模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为 0。


5、启动 php

[root@localhost php]# /usr/local/php/sbin/php-fpm 
[07-Mar-2019 04:34:31] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 143.
[07-Mar-2019 04:34:31] ERROR: No pool defined. at least one pool section must be specified in config file
[07-Mar-2019 04:34:31] ERROR: failed to post process the configuration
[07-Mar-2019 04:34:31] ERROR: FPM initialization failed

报错,是因为在 php-fpm.conf 文件中最后一行找不到 /usr/local/php/etc/php-fpm.d/*.conf 文件,然后进入 php-fpm.d 文件中将 www.conf.default  文件复制为 www.conf  文件就可以了


6、复制www.conf文件

[root@localhost php-fpm.d]# cp www.conf.default www.conf


7、再次启动PHP

[root@localhost php-fpm.d]# /usr/local/php/sbin/php-fpm 
[root@localhost php-fpm.d]# ps -ef | grep php-fpm
root     43279     1  0 3月07 ?       00:00:21 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www      43280 43279  0 3月07 ?       00:00:00 php-fpm: pool www
www      43281 43279  0 3月07 ?       00:00:00 php-fpm: pool www
root     50485 44796  0 00:52 pts/0    00:00:00 grep --color=auto php-fpm

启动成功,接下来我们配置一个 php 站点,之前的一篇文章写的如何安装配置 nginx:https://www.yanghaihua.com/content/2019-01-16/1005.shtml。我们就用上次的那个安装的那个 nginx 版本来配置 php。


8、配置 nginx 支持 php 服务

[root@localhost conf]# vi /usr/local/nginx/conf/nginx.conf
.
.
.
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}
.
.
.

根据路径找到 nginx.conf 配置文件的位置,打开后在 server{} 中有 localhost ~ \.php$ {} 这一段配置,这段配置是注释的,我们将这段注释打开,然后修改成如下。

.
.
.
location ~ \.php$ {
    #root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
.
.
.

nginx会与正则表达式“ \.(php)$” 匹配,然后请求被传递给侦听 localhost:9000 的 fastcgi 服务器。该 fastcgi_param 指令设置 fastcgi 的参数 SCRIPT_FILENAME 为“/data/www/index.php”,并 fastcgi 的服务器执行文件。变量 $document_root 等于 root 指令的值,变量 $fastcgi_script_name 等于请求 url。保存后重启 nginx 服务,然后测试是否站点配置成功。


9、新建 phpinfo.php 文件

<?php
echo phpinfo();

找到nginx站点目录,然后新建一个phpinfo.php文件,然后打开浏览器,查看是否可以看到探针页面。

TIM截图20190310183404.jpg

探针页面出现,大功告成了,我编译的时候没有放入其它的参数和扩展,后期如果需要什么再另外添加,大家以后在使用中如果遇到什么需要的可以直接在编译的时候加入进去。


设置nginx平滑启动

1、将 /usr/local/php/etc/php-fpm.conf 中的 ;pid = run/php-fpm.pid 注释打开。

2、将当时下载的 php 源码包中的快捷启动脚本 ~/php-7.3.2/sapi/fpm/init.d.php-fpm 复制到 /etc/init.d/php-fpm 下。

3、设置可执行权限 chmod +x /etc/init.d/php-fpm

4、增加系统服务 chkconfig --add php-fpm

service php-fpm start
service php-fpm stop
service php-fpm restart
service php-fpm reload


参考:

阿里云centos7.6安装php7.3的详细教程

Unix 系统下的 Nginx 1.4.x

结束语:感谢您对本网站文章的浏览,欢迎您的分享和转载,但转载请说明文章出处。
Top