52AV手機A片王|52AV.ONE

標題: Apache + mod_fastcgi + php-fpm(不同身分的使用者可執行Apache) [打印本頁]

作者: coav4u    時間: 2015-1-10 07:37
標題: Apache + mod_fastcgi + php-fpm(不同身分的使用者可執行Apache)
前言我使用php-fpm主要目的是為了可以用我的Linux帳號(例如kevin)去啟動Apache如此Apache的權限等同(equivalant)於kevin的權限如此我的網站的根目錄(例如 /home/kevin/),只要kevin擁有的權限apache便擁有: ^# \2 q8 E/ X" }  m6 z
優點
2 u2 ], A# E% R- D/ o❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。
: F. j5 O8 y3 V5 `〖安裝〗:
0 B( J" n; Y6 Z( I  A; F4 |* b《1》Apache已安裝+ ?( G5 s4 Q. K5 Y3 H# P% i( p! ^
《2》安裝mod_fastcgi
& w" m. L4 G) S+ s/ h8 r
  1. cd /usr/tmp' X5 e8 p: V& V3 ^/ [" R! f
  2. wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]
    * h9 E* e% v; M; k- `
  3. tar -zxvf mod_fastcgi-current.tar.gz8 B2 Q; k  ?+ b, K
  4. cd mod_fastcgi-2.4.6/ ]8 L/ L/ K8 \; h/ x6 g( |
  5. cp Makefile.AP2 Makefile0 }9 l3 M$ p/ ~2 p" [& C
  6. make top_dir=/usr/lib64/httpd  #我的主機是64bit& ]+ b+ h- n' K3 w3 P' V6 c' v3 p7 X
  7. 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」,於是; C. f/ u) o, e4 w6 V
  1. yum install libtool httpd-devel apr apr-devel
複製代碼
再執行一次/ |. H& S# H0 p( h; M9 l
  1. make top_dir=/usr/lib64/httpd2 g' f* @& N- G) [, b) k
  2. make install
複製代碼
若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so$ E0 K* w" W' H9 R
《3》安裝php-fpm% N% t. ^0 c3 z& P# y$ ?7 A
php-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm      
- A7 v7 @/ E# i3 [* F& r- T 環境設定7 }: ~# |+ Z9 b
《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd0 _- I+ l1 T: u- u8 V, W* }* P
  1. <font size="3">#HTTPD=/usr/sbin/httpd.worker    將註解#拿掉</font>
複製代碼
《2》由Apache載入mod_fastcgi.so
) W# J- x& z4 p, p8 K3 z6 z/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:

) [3 A; r5 g( F( t3 I2 G
  1. LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼
《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加). {2 M% B( a8 G/ Z7 \$ t
  1. <IfModule prefork.c>
    1 {9 u' _* h6 ?) }/ c0 B/ |
  2. #根據不同的 PID 模式給予不同的 PHP 運作模組
    6 @: x3 `: d2 S/ ~% {( M6 {! ^
  3.   LoadModule php5_module modules/libphp5.so4 U3 I5 ?2 n7 E; r
  4. </IfModule>' D9 p. w, O* B4 h" t
  5. <IfModule worker.c>! T- [) X- |5 o: B& n+ f( X* K
  6.   LoadModule php5_module modules/libphp5-zts.so4 d0 l. Q' M; Q, S6 P8 J
  7. </IfModule>& }4 G) G4 Z5 \6 S' @3 ^- T
  8. AddHandler php5-script .php  #所以副檔名一定要是 .php 結尾!
    8 y8 [# X5 d) }8 I( q$ E
複製代碼
《4》設定php-fpm4 T; j& }" V5 ^  ]/ Y- |- M
vi /etc/php-fpm.d/www.conf
  1. ;listen = 127.0.0.1:9000
    ; ~2 C/ e) M9 G3 E* p9 s$ n" F
  2. listen = /var/run/php-fpm.sock
    2 Q! U% g2 R. F" e& t$ U
  3. ; php-fpm 正常啟動會自動產生php-fpm.sock
    7 X- _9 I. ]$ A  z, H) ]  y
複製代碼
並且新增kevin.conf(可copy www.conf),並修改成:
1 G$ `4 A: z! `. G- M, M3 P0 x$ a
  1. listen = /var/run/php-fpm_av4u.sock* L; {7 [+ b1 V* P; \# p' c- x
  2. user = kevin! m% a/ c4 V, c8 ~4 L( E
  3. group = kevin
複製代碼
啟動php-fpm service php-fpm start1 _# G! I; o+ K4 ?* [4 X, g
重啟httpd      
service httpd reload- c& R3 M8 c4 Z# [
結果( o) S; U* r! ~+ i1 w
經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod  755),可見仍未成功,決定Apache改成nginx(比較容易),再試.................
* T: A% u' r: h0 J) I




歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/) Powered by Discuz! X3.2