php-7.3.2编译安装和配置nginx

  • PHP
  • Mar 6, 2019
摘要:php-7.3.2编译安装和配置,系统版本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工具包,如果没有,请先提前安装。

下载php源码包 && 解压

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

开始编译 && 安装

[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

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

[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

修改cgi.fix_pathinfo配置项

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

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

启动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文件就可以了

复制www.conf文件

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

再次启动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.html。我们就用上次的那个安装的那个nginx版本来配置php

配置nginx

[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等于请求URI。保存后重启nginx服务,然后测试是否站点配置成功。

新建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
结束语:感谢您对本网站文章的浏览,欢迎您的分享和转载,但转载请说明文章出处。
Top