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便擁有
: I( m: W0 B& M優點, s! F/ `! J# W' r: [! y- Q, Z
❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。
' U+ X1 o% T+ n( C〖安裝〗:
& y5 c0 z" N2 b/ T/ O8 h8 S《1》Apache已安裝/ V$ D% c' k: W4 Y0 R
《2》安裝mod_fastcgi
$ y: B4 v% g( y: E: o% h7 f
  1. cd /usr/tmp8 v: X7 N. I9 E  O( q, L
  2. wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]
    ) f  S: r" A  G, L1 Z
  3. tar -zxvf mod_fastcgi-current.tar.gz
    % q& W) l4 l! _9 @. D0 g% f7 l% i
  4. cd mod_fastcgi-2.4.6
    : _/ H$ G# }7 b6 b& ^: D
  5. cp Makefile.AP2 Makefile1 P6 h: z" d  p9 }, a
  6. make top_dir=/usr/lib64/httpd  #我的主機是64bit7 P( [9 ?/ B6 u0 [5 _2 Z
  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」,於是' X2 N! G' w+ q! _/ z2 s  p# Q
  1. yum install libtool httpd-devel apr apr-devel
複製代碼
再執行一次
  o! d4 g/ B5 \& B! g1 b
  1. make top_dir=/usr/lib64/httpd; D3 }" F$ [, n
  2. make install
複製代碼
若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so9 V4 V4 R  v6 u3 a: m
《3》安裝php-fpm
$ q& J4 g' Z; \/ O% F% e" N; M. Dphp-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm      ; ?0 w  L; J3 T3 L! H) U7 Z" T7 _
環境設定
$ Q* V- @: k& r4 _《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd
  |0 A8 x; t; F! `( n
  1. <font size="3">#HTTPD=/usr/sbin/httpd.worker    將註解#拿掉</font>
複製代碼
《2》由Apache載入mod_fastcgi.so
) d0 ^6 ^9 X6 P) e) E/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:

! r- l; c, T% y& ]0 o, e
  1. LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼
《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加)
# c! I  n5 ]7 q" O0 Z% k
  1. <IfModule prefork.c>
    8 T+ X0 J$ Z* [3 b" V
  2. #根據不同的 PID 模式給予不同的 PHP 運作模組# g; a* Y& ~0 d: [/ L
  3.   LoadModule php5_module modules/libphp5.so
    & y9 W6 q; H6 o: K4 N
  4. </IfModule>0 a  }" t$ b+ E' F; w& M" X7 J
  5. <IfModule worker.c>
    * ?5 }9 @! x# {. S9 K2 j
  6.   LoadModule php5_module modules/libphp5-zts.so2 c2 a5 [* T, b7 d
  7. </IfModule>$ u. k* S3 g7 N) w) P& C, \
  8. AddHandler php5-script .php  #所以副檔名一定要是 .php 結尾!
    " t7 V+ B. t" @% b
複製代碼
《4》設定php-fpm+ b1 B( ~! F3 {# D" U
vi /etc/php-fpm.d/www.conf
  1. ;listen = 127.0.0.1:9000
    7 b. h  y& Y. h% k2 `8 _& J3 I" w
  2. listen = /var/run/php-fpm.sock
    / Z; ?7 V- m$ y# k( z
  3. ; php-fpm 正常啟動會自動產生php-fpm.sock% e) L- M6 g) r
複製代碼
並且新增kevin.conf(可copy www.conf),並修改成:4 p% @" K" J$ U6 M; R' L0 b: M- l
  1. listen = /var/run/php-fpm_av4u.sock
    ; t6 m6 W7 v; w* b: Q( l
  2. user = kevin; k5 v( t/ l2 t  N8 j" q
  3. group = kevin
複製代碼
啟動php-fpm service php-fpm start
  h$ V/ z( Q* m2 @, q重啟httpd      
service httpd reload
' e( h# Y: e% D. ~" S( i6 R結果( F/ o- a. r5 y) P5 E
經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod  755),可見仍未成功,決定Apache改成nginx(比較容易),再試.................
7 a4 J  |- L2 Z2 n- a




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