今天重裝了PHP和nginx 發(fā)現(xiàn)他們之間的通訊是靠fpm來進行的,所以在安裝著兩者的同時也要安裝php-fpm
源碼編譯nginx參考我這篇文章:
http://www.itdecent.cn/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的執(zhí)行路徑
--with-config-file-path=/usr/local/php/etc #執(zhí)行php的配置文件路勁,即php.ini路徑
--enable-fpm #開啟fpm
# 其他參數(shù)自行查閱 ./configure --help
- make
缺什么就用yum 安裝 - make install
4、簡化php執(zhí)行命令
vi /etc/profile
##加上下面這句話
export PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH
保存然后執(zhí)行
source /etc/profile
安裝php成功!
配置fpm
進入/usr/local/php目錄

##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結(jié)合
主要是下面這一部分會出現(xiàn)問題
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 會出現(xiàn)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文件
- 查看這個文件的讀寫權(quán)限
shell>$ ls /var/run/www/php-cgi.sock -l

- 修改www.conf文件
將listen.mode = 0660改為0666:
image.png -
然后再重啟fpm ,在查看權(quán)限
image.png
搞了一下午,終于解決問題了~

