nginx php-fpm安裝配置
nginx本身不能處理PHP,它只是個web服務器,當接收到請求後,如果是php請求,則發給php解釋器處理,並把結果返回給客戶端。
nginx壹般是把請求發fastcgi管理進程處理,fascgi管理進程選擇cgi子進程處理結果並返回被nginx
本文以php-fpm為例介紹如何使nginx支持PHP
壹、編譯安裝php-fpm
什麽是PHP-FPM
PHP-FPM是壹個PHP FastCGI管理器,是只用於PHP的,可以在 2.php.net/distributions/php-5.4.7.tar.gztar zvxf php-5.4.7.tar.gz
cd php-5.4.7./configure --prefix=/usr/local/php ?--enable-fpm --with-mcrypt \--enable-mbstring --disable-pdo --with-curl --disable-debug ?--disable-rpath \--enable-inline-optimization --with-bz2 ?--with-zlib --enable-sockets \--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \--with-gd --with-jpeg-dir
make all install
舊版手動打補丁php-fpm安裝(舊版程序已經沒有了,大家新版的吧,這裏做個展示)
wget 2.php.net/get/php-5.2.17.tar.gz
wget tl -enable-sockets ?-with-bz2 -with-curl -with-curlwrappers\
-enable-mbregex -with-gd -enable-gd-native-ttf -enable-zip -enable-soap -with-iconv -enable-bcmath\
-enable-shmop -enable-sysvsem -enable-inline-optimization -with-ldap -with-ldap-sasl -enable-pdo\
-with-pdo-mysql
make all install
以上兩種方式都可以安裝php-fpm,安裝後內容放在/usr/local/php目錄下
以上就完成了php-fpm的安裝。
下面是對php-fpm運行用戶進行設置
cd /usr/local/php
cp etc/php-fpm.conf.default etc/php-fpm.conf
vi etc/php-fpm.conf
修改
user = www-data
group = www-data
如果www-data用戶不存在,那麽先添加www-data用戶
groupadd www-data
useradd -g www-data www-data
二、編譯安裝nginx
然後nginx:
nginx可以使用各平臺的默認包來安裝,本文是介紹使用源碼編譯安裝,包括具體的編譯參數信息。
正式開始前,編譯環境gcc g++ 開發庫之類的需要提前裝好,這裏默認妳已經裝好。
ububtu平臺編譯環境可以使用以下指令
1
2
apt-get install build-essential
apt-get install libtool
centos平臺編譯環境使用如下指令
安裝make:
1
yum -y install gcc automake autoconf libtool make
安裝g++:
1
yum install gcc gcc-c++
下面正式開始
---------------------------------------------------------------------------
壹般我們都需要先裝pcre, zlib,前者為了重寫rewrite,後者為了gzip壓縮。
1.選定源碼目錄
可以是任何目錄,本文選定的是/usr/local/src
1
cd /usr/local/src
2.安裝PCRE庫
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/?下載最新的 PCRE 源碼包,使用下面命令下載編譯和安裝 PCRE 包:
1
2
3
4
5
6
7
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
tar -zxvf pcre-8.37.tar.gz
cd pcre-8.34
./configure
make
make install
3.安裝zlib庫
e to nginx! 則表示 Nginx 已經安裝並運行成功。
-----------------------------------------------------
到這裏nginx就安裝完成了,如果只是處理靜態html就不用繼續安裝了
如果妳需要處理php腳本的話,還需要安裝php-fpm。
下面安裝排錯
附:可能遇到的錯誤和壹些幫助信息
1.1編譯pcre錯誤
1
2
3
4
5
libtool: compile: unrecognized option `-DHAVE_CONFIG_H'
libtool: compile: Try `libtool --help' for more information.
make[1]: *** [pcrecpp.lo] Error 1
make[1]: Leaving directory `/usr/local/src/pcre-8.34'
make: *** [all] Error 2
解決辦法:安裝g++,別忘了重新configure
1
2
3
4
5
apt-get install g++
apt-get install build-essential
make clean
./configure
make
1.2 make出錯
1
2
3
4
5
make:?***?No?rule?to?make?target?`build',?needed?by?`default'.?Stop.
./configure:?error:?SSL?modules?require?the?OpenSSL?library.
You?can?either?do?not?enable?the?modules,?or?install?the?OpenSSL?library
into?the?system,?or?build?the?OpenSSL?library?statically?from?the?source
with?nginx?by?using?--with-openssl=<path>?option.
按照第4步的安裝方法或
ubuntu下
1
2
apt-get?install?openssl
apt-get?install?libssl-dev
centos下
1
yum -y install openssl openssl-devel
2.nginx編譯選項
make是用來編譯的,它從Makefile中讀取指令,然後編譯。
make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。
configure命令是用來檢測妳的安裝平臺的目標特征的。它定義了系統的各個方面,包括nginx的被允許使用的連接處理的方法,比如它會檢測妳是不是有CC或GCC,並不是需要CC或GCC,它是個shell腳本,執行結束時,它會創建壹個Makefile文件。nginx的configure命令支持以下參數:
--prefix=path 定義壹個目錄,存放服務器上的文件?,也就是nginx的安裝目錄。默認使用?/usr/local/nginx。
--sbin-path=path?設置nginx的可執行文件的路徑,默認為 ?prefix/sbin/nginx.
--conf-path=path?設置在nginx.conf配置文件的路徑。nginx允許使用不同的配置文件啟動,通過命令行中的-c選項。默認為prefix/conf/nginx.conf.
--pid-path=path?設置nginx.pid文件,將存儲的主進程的進程號。安裝完成後,可以隨時改變的文件名 , 在nginx.conf配置文件中使用 PID指令。默認情況下,文件名 為prefix/logs/nginx.pid.
--error-log-path=path?設置主錯誤,警告,和診斷文件的名稱。安裝完成後,可以隨時改變的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默認情況下,文件名 為prefix/logs/error.log.
--pilation”(1.1.12中, pcre_jit指令)。
--with-zlib=path?—設置的zlib庫的源碼路徑。要下載從 zlib(版本1.1.3 - 1.2.5)的並解壓。其余的工作是Nginx的./ configure和make完成。ngx_/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
tar -zxvf libmcrypt-2.5.8.tar.gz
cd /usr/local/src/libmcrypt-2.5.8
./configure --prefix=/usr/local
make
make install
7.?php-fpm 5.4.7 如何關閉 重啟?
php 5.4.7 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信號控制:
master進程可以理解以下信號
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`
查看php-fpm進程數:
ps aux | grep -c php-fpm
8.命令行下執行php,提示找不到命令
-bash: /usr/bin/php: No such file or directory
vi /etc/profile
在文件底部增加壹行配置
export PATH=/usr/local/php/bin:$PATH
保存退出
source /etc/profile
附加pathinfo配置
location ~ ^(.+\.php)(.*)$ {
fastcgi_split_path_info ? ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
fastcgi_param PATH_INFO ? $fastcgi_path_info;