1. 程式人生 > >php php-fpm安裝以及配置

php php-fpm安裝以及配置

centos 6.2 linux下安裝php5.6.6原始碼

PHP在 5.3.3 之後已經把php-fpm併入到php的核心程式碼中了。 所以php-fpm不需要單獨的下載安裝。
要想php支援php-fpm,只需要在編譯php原始碼的時候帶上 --enable-fpm 就可以了

一:yum安裝php的依賴庫

yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel

二:下載 php5.6 原始碼

wget http://cn2.php.net/distributions/php-5.6.6.tar.gz

tar -zxvf php-5.6.6.tar.gz
cd ./php-5.6.6/

三:php配置安裝

# 配置php的編譯引數
./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-pdo_mysql --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-freetype-dir=/usr/lib64

# 開始編譯安裝
make
make install

然後就安裝到了 /usr/local/php 目錄下

四:配置php-fpm

php-fpm配置

首先啟動php-fpm:

/usr/local/php/sbin/php-fpm

報錯了
[19-Apr-2018 16:02:08] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
[19-Apr-2018 16:02:08] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[19-Apr-2018 16:02:08] ERROR: FPM initialization failed

錯誤資訊說是找不到php-fpm.conf

到php的配置目錄
cd /usr/local/php/etc
有一個php-fpm.conf.default的檔案,cp複製
cp php-fpm.conf.default php-fpm.conf

編輯 php-fpm.conf
找到以下配置項, 配置如下

pid = run/php-fpm.pid

再次執行 
/usr/local/php/sbin/php-fpm
報錯了:
[19-Apr-2018 16:07:17] ERROR: [pool www] cannot get uid for user 'nginx'
[19-Apr-2018 16:07:17] ERROR: FPM initialization failed

說nginx使用者不存在,那麼建立nginx使用者

useradd nginx

再次啟動

/usr/local/php/sbin/php-fpm

沒有任何報錯,說明執行成功了

驗證是否成功

ps aux|grep php-fpm

出現了 php-fpm程序:
root 15448 0.0 0.2 210972 4856 ? Ss 16:10 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www 15449 0.0 0.2 213056 4768 ? S 16:10 0:00 php-fpm: pool www
www 15450 0.0 0.2 213056 4768 ? S 16:10 0:00 php-fpm: pool www
root 15492 0.0 0.0 112648 964 pts/0 R+ 16:11 0:00 grep --color=auto php-fpm

五:加入開機啟動

開機啟動的配置檔案是:/etc/rc.local
# vi /etc/rc.local

/usr/local/php/sbin/php-fpm  # 新增進來

六:php-fpm的一些命令

我們在新安裝擴充套件後,是需要重新php-fpm的,已使擴充套件生效。
最簡單粗暴的重新php-fpm的方式是:
先找到php-fpm的程序號,kill 掉,再用/usr/local/php/sbin/php-fpm 這樣啟動。
其實還有更多溫和的方法,就是使用訊號。
INT, TERM 立刻終止
QUIT 平滑終止
USR1 重新開啟日誌檔案
USR2 平滑過載所有worker程序並重新載入配置和二進位制模組

示例:

php-fpm 關閉:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm 重啟:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

七:nginx配置解析php

1、進入nginx目錄
cd /usr/local/nginx

2、編輯配置檔案
vi ./conf/nginx.conf

在 server 下找到

location / {
    root html;
    index index.html index.htm index.php; # 加上 index.php
}

去掉前面註釋 #

複製程式碼
location ~ \.php$ {
    root /usr/local/nginx/html; # 絕對路徑配置到html下
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #驗證時候解析php出錯,/scripts需要換成$document_root, 下面有解釋
include fastcgi_params;
}
複製程式碼

3、然後平滑重啟nginx
./sbin/nginx -s reload
沒有報錯,說明重啟成功

八:驗證php是否配置成功

在 /usr/local/nginx/html 目錄下編輯 vi index.php

<?php
echo phpinfo();
?>

在瀏覽器上輸入 http://ip:80/index.php 然後出現了錯誤
File not found

檢視nginx的日誌,配置日誌在 ./logs 目錄下
首先檢視access.log 日誌,出現瞭如下錯誤資訊
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***.107.***.138, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "1**.24.**.115"

在看 error.log 日誌資訊出現了下面資訊
[error] 16403#0: *42 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***.107.***.138, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "1**.24.**.115"

根據上面的 FastCGI sent in stderr: "Primary script unknown"
這是在配置nginx解析php指令碼時候出現了錯誤

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

修改成如下方式($document_root):

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

$document_root 代表當前請求在root指令中指定的值:

修改之後重啟nginx
./sbin/nginx -s reload
重新重新整理瀏覽器,出現如下圖所示,說明配置成功了

 

轉載自  https://www.cnblogs.com/starlion/p/8884465.html