Centos7安装Ngxin+PHP7.2源码编译踩坑

今天重装了PHP和nginx 发现他们之间的通讯是靠fpm来进行的,所以在安装着两者的同时也要安装php-fpm
源码编译nginx参考我这篇文章:
https://www.jianshu.com/p/933734786da8

然后开始安装php

1、下载
wget https://www.php.net/distributions/php-7.2.20.tar.bz2
2、解压
tar -xjvf php-7.2.20.tar.bz2
3、源码编译三部曲(./configure 、make 、make install)

  • 生成配置
    进入目录php-7.2.20
./configure 
--prefix=/usr/local/php       #安装之后php的执行路径
--with-config-file-path=/usr/local/php/etc   #执行php的配置文件路劲,即php.ini路径
--enable-fpm     #开启fpm  
#    其他参数自行查阅 ./configure --help
  • make
    缺什么就用yum 安装
  • make install

4、简化php执行命令
vi /etc/profile

##加上下面这句话
export PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH

保存然后执行
source /etc/profile
安装php成功!

配置fpm

进入/usr/local/php目录


Centos7安装Ngxin+PHP7.2源码编译踩坑_第1张图片
image.png
##php-fpm.conf
shell>$ cp  ./etc/php-fpm.conf.default  ./etc/php-fpm.conf
##www.conf
shell>$ cp ./etc/php-fpm.d/www.conf.default ./etc/php-fpm.d/www.conf

1、配置php-fpm.conf
进入php-fpm.conf文件,修改为自己想要放置的路径,这里每次fpm启动都会有一个pid

pid = /home/xue/study/soft/php/var/run/php-fpm.pid

2、配置www.conf
进入php-fpm.d/www.conf文件,找到listen=127.0.0.1:9000,修改为如下

/var/run/www/php-cgi.sock

启动fpm
/usr/local/php/sbin/php-fpm
启动成功

开始配置nginx和PHP的fpm结合

主要是下面这一部分会出现问题

location ~ \.php$ {
            root           /home/xue/www;
            fastcgi_pass   unix:/var/run/www/php-cgi.sock;# 替换fastcgi_pass   127.0.0.1:9000
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            #include        fastcgi_params;
            include         fastcgi.conf;
        }

按照这样配置,然后重启nginx
然后访问/home/xue/www 目录下的index.php 会出现50.html错误页面
cat /usr/local/nginx/logs/error.log
查看日志之后报错如下:

2019/08/16 16:24:57 [crit] 27457#0: *55 connect() to unix:/var/run/www/php-cgi.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.1.71, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/www/php-cgi.sock:", host: "192.168.1.78"

解决办法:
启动fpm成功之后会在/var/run/www目录下有一个php-cgi.sock文件

  • 查看这个文件的读写权限
shell>$ ls /var/run/www/php-cgi.sock  -l
image.png
  • 修改www.conf文件
    listen.mode = 0660 改为0666:
    image.png
  • 然后再重启fpm ,在查看权限


    image.png

搞了一下午,终于解决问题了~

你可能感兴趣的:(Centos7安装Ngxin+PHP7.2源码编译踩坑)