|
|
〖前言〗:我使用php-fpm主要目的是為了,可以用我的Linux帳號(例如kevin)去啟動Apache,如此Apache的權限等同(equivalant)於kevin的權限,如此,我的網站的根目錄(例如 /home/kevin/),只要kevin擁有的權限,apache便擁有。
, I. i+ ?: _) W1 b〖優點〗:
2 G/ D$ x. |9 E {: J, n# ^❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。
' t" G7 s* Y/ i; g5 _: O/ T〖安裝〗:. U/ F) @- g0 N$ Q2 X, o
《1》Apache已安裝
9 X) y# r0 D& }" d4 N Z/ {《2》安裝mod_fastcgi
# Z, P% k- ~# A, l. R, k W3 h0 O- cd /usr/tmp
1 c" r0 X" l$ |1 E - wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]
" o1 Y0 n2 M N - tar -zxvf mod_fastcgi-current.tar.gz; q+ J' d/ g6 W$ V% f- E
- cd mod_fastcgi-2.4.68 A7 A: Q N& I9 u2 W
- cp Makefile.AP2 Makefile+ C/ d' H& ?4 ~+ f( B/ f# j
- make top_dir=/usr/lib64/httpd #我的主機是64bit
: d2 e, R) U+ I6 ^% g& j - 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」,於是5 ~5 G; D! L3 I, ^6 K& S1 k+ h
- yum install libtool httpd-devel apr apr-devel
複製代碼 再執行一次
3 K- Y ~1 {" S$ v+ x- make top_dir=/usr/lib64/httpd) L+ B2 \% D9 r
- make install
複製代碼 若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so) o5 M6 d8 j N4 R& X2 }3 Z" |$ o
《3》安裝php-fpm; [6 b, r9 A$ Q, w% G4 P
php-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm $ y1 n4 H! h1 A; X$ O. L
〖環境設定〗:
3 q0 x9 d8 I4 U% f% _3 r2 q《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd
$ s$ ^7 A( y1 p1 f% u4 ?: j- <font size="3">#HTTPD=/usr/sbin/httpd.worker 將註解#拿掉</font>
複製代碼 《2》由Apache載入mod_fastcgi.so
' Y# L7 D& }, S1 k/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:( z5 T6 B) I0 n9 b' |7 Q
- LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼 《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加)
5 B% }& l$ A# J: n- <IfModule prefork.c>$ J; d s7 k! _5 f9 x! D7 f
- #根據不同的 PID 模式給予不同的 PHP 運作模組
5 a! @) N4 n6 ]# k/ ~- w - LoadModule php5_module modules/libphp5.so4 K/ p6 d9 N) n! ?
- </IfModule>8 \% `$ r# a8 |5 E E
- <IfModule worker.c>7 y* |/ H& L( _/ S) W
- LoadModule php5_module modules/libphp5-zts.so# ?, w) Q& W- y# {* ~ h, Y$ {5 w
- </IfModule>
2 o& \$ X" h) S/ B: x, E - AddHandler php5-script .php #所以副檔名一定要是 .php 結尾!
) c) p2 b0 u' P
複製代碼 《4》設定php-fpm% c6 e1 J9 E# `5 x1 Z$ v/ a
vi /etc/php-fpm.d/www.conf- ;listen = 127.0.0.1:9000
/ J) @; B g% O$ I+ ]7 ^ - listen = /var/run/php-fpm.sock
. X' k3 x- A3 C7 l+ L; \; e b - ; php-fpm 正常啟動會自動產生php-fpm.sock
4 j: f. h, A3 K5 R$ ?' F
複製代碼 並且新增kevin.conf(可copy www.conf),並修改成:
2 ]8 z0 j" O+ P/ D- listen = /var/run/php-fpm_av4u.sock
; }0 F w" {# T8 w0 E$ [ - user = kevin
, m% x8 T0 G$ j+ c4 C' E - group = kevin
複製代碼 啟動php-fpm ⇨ service php-fpm start
+ g* Y' f9 ^/ w) c' H重啟httpd ⇨ service httpd reload n4 [1 \* \% U# k3 S, Z
〖結果〗:
# Y# h4 E: w2 _+ L9 q* z' U( |" o4 v' R經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod 755),可見仍未成功,決定Apache改成nginx(比較容易),再試.................$ v {$ X2 w J4 r1 I) H5 |+ j" ?
|
|
|