|
tid=201&〖前言〗:我使用php-fpm主要目的是為了,可以用我的Linux帳號(例如kevin)去啟動Apache,如此Apache的權限等同(equivalant)於kevin的權限,如此,我的網站的根目錄(例如 /home/kevin/),只要kevin擁有的權限,apache便擁有。9 p& X1 g- i) n
〖優點〗:# @+ F( Q: l3 o1 R! M, V
❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。
- R; v; m2 y8 D( |# m. N/ s- L* s〖安裝〗: W- X* \; `0 {6 t, Q Z
《1》Apache已安裝
" J: h/ M K& Q& t! Q《2》安裝mod_fastcgi 3 R2 g! X+ W) i; Q- Q) Q
- cd /usr/tmp
/ h5 \# @: o; B: w) C" N - wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]# Y: T3 Y9 Z$ L
- tar -zxvf mod_fastcgi-current.tar.gz( L, m9 Z; ^( J# d
- cd mod_fastcgi-2.4.6& ]2 T+ {$ f! \6 z$ y
- cp Makefile.AP2 Makefile
" c! a% V7 |7 _ - make top_dir=/usr/lib64/httpd #我的主機是64bit5 E% D& T* ?; M# W) [# N% l9 ?, Q B# G
- make install
複製代碼 當執行至 make top_dir=/usr/lib64/httpd 時出現錯誤 : No rule to make target '/usr/lib64/httpd/build/special.mk' ,原因是缺少套件「libtool」「httpd-devel」「apr-devel」及「apr」,於是
' H7 F8 _# a- w3 Y5 m- yum install libtool httpd-devel apr apr-devel
複製代碼 再執行一次- E9 f i0 r4 o( v* N! _
- make top_dir=/usr/lib64/httpd
! d3 X8 h. [, N% O - make install
複製代碼 若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so9 L5 N& V# r, W( N2 R* ~
《3》安裝php-fpm
+ X- S, c6 h0 m8 yphp-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm
( C5 n9 o# W3 N( R, Q% }9 p 〖環境設定〗:
# c2 ?, d" s/ w7 k. m9 F0 {" e《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd( v* ]1 q! V" @1 z3 x+ {
- <font size="3">#HTTPD=/usr/sbin/httpd.worker 將註解#拿掉</font>
複製代碼 《2》由Apache載入mod_fastcgi.so
4 p2 b8 w1 u7 }% s+ ] S7 d/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:
+ ?9 D9 l6 p& O# y- c& o4 g- LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼 《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加)6 D3 Q' |. e' a; n7 ^$ Z. o1 A
- <IfModule prefork.c>
* j0 x2 G- H) u" W7 |0 R - #根據不同的 PID 模式給予不同的 PHP 運作模組
9 s' r2 R8 P8 w4 U - LoadModule php5_module modules/libphp5.so6 d! s8 m8 g- H% F
- </IfModule>
: l# _4 ~/ v( B) T - <IfModule worker.c>
8 O, N% c( g, J - LoadModule php5_module modules/libphp5-zts.so
0 A5 W; a' X& ~4 _0 w8 { - </IfModule>+ C# s; H# @5 C$ a& n
- AddHandler php5-script .php #所以副檔名一定要是 .php 結尾!
8 L8 b, n' X0 q) E& s3 s- G5 q- P
複製代碼 《4》設定php-fpm G8 ]3 k: z0 b; N2 B% d7 p! D
vi /etc/php-fpm.d/www.conf- ;listen = 127.0.0.1:9000
4 F* t7 c/ R& @5 z o - listen = /var/run/php-fpm.sock
" E9 P+ O! y, k/ D: v6 C - ; php-fpm 正常啟動會自動產生php-fpm.sock% P& t! h7 i" v0 |8 ~
複製代碼 並且新增kevin.conf(可copy www.conf),並修改成:
1 g! t. J$ ^7 w- listen = /var/run/php-fpm_av4u.sock
: z5 W: ], d: f( j - user = kevin8 \0 P j- @# \
- group = kevin
複製代碼 啟動php-fpm ⇨ service php-fpm start
0 f" F, y$ ]' r& q重啟httpd ⇨ service httpd reload2 t" {8 m5 J+ g$ ]
〖結果〗:
I: @' s: r6 ]. F6 d經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod 755),可見仍未成功,決定Apache改成nginx(比較容易),再試.................
' I* \% e5 h6 j& G0 X6 S |
|