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便擁有) L! ]2 o; _8 ?) ~, O
優點
3 c# @  y  D1 B  P  F❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。
! b; X  o- |2 p3 |" j1 @〖安裝〗:  m8 n( L. w) V( ]7 a
《1》Apache已安裝- e8 T8 t+ M2 t- ]8 ^2 O
《2》安裝mod_fastcgi

7 S% y$ b0 _/ Y" f0 Z0 [
  1. cd /usr/tmp
      [0 \" U( n% t" S4 ~
  2. wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]
    4 X4 X0 f$ W8 u8 z) P
  3. tar -zxvf mod_fastcgi-current.tar.gz
    : A2 F% h2 z( d& _
  4. cd mod_fastcgi-2.4.66 y/ ^; k0 y5 J& n& N
  5. cp Makefile.AP2 Makefile% R8 d; T( b; @' Q5 i" e
  6. make top_dir=/usr/lib64/httpd  #我的主機是64bit: |$ Y3 Y: S' F; d% G1 c
  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」,於是
1 S% L8 j' R9 _/ L
  1. yum install libtool httpd-devel apr apr-devel
複製代碼
再執行一次8 b: M  U1 ]+ w- R% Z1 V
  1. make top_dir=/usr/lib64/httpd, y  G( t' \1 c$ r/ \3 ^5 b
  2. make install
複製代碼
若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so7 `- p: Z6 y3 y, L, F
《3》安裝php-fpm* d8 k9 G& _' `7 c: A0 {. `  \
php-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm      2 S7 {7 J( {! S
環境設定7 t& J' P( J* k' R$ ^) K" c  A1 J( t
《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd( P1 D) \: }$ W- w: R
  1. <font size="3">#HTTPD=/usr/sbin/httpd.worker    將註解#拿掉</font>
複製代碼
《2》由Apache載入mod_fastcgi.so4 j6 I* K. b# |9 P7 t
/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:

6 X- r. V0 F5 h
  1. LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼
《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加)' a, R+ E5 ]: I1 M$ u! A" V, }
  1. <IfModule prefork.c>
    , @. C' ], \, K: d( U; d
  2. #根據不同的 PID 模式給予不同的 PHP 運作模組0 o! O( A& {$ y0 Y  |0 }5 W
  3.   LoadModule php5_module modules/libphp5.so
    ! _$ P& m$ W2 V( x- a* z
  4. </IfModule>
    9 y1 F4 k, Z- i- `
  5. <IfModule worker.c>( d2 P+ B5 w* ~3 r% n, |5 y
  6.   LoadModule php5_module modules/libphp5-zts.so4 _) i2 Q( ]: V3 h
  7. </IfModule>
    ' i1 i1 l2 n0 s
  8. AddHandler php5-script .php  #所以副檔名一定要是 .php 結尾!& R0 P' R" o7 w: k+ r0 c$ U
複製代碼
《4》設定php-fpm% O/ K8 F5 l4 C+ s4 Y- _2 ~* S
vi /etc/php-fpm.d/www.conf
  1. ;listen = 127.0.0.1:9000+ X: Z$ K6 ?6 S2 @2 u
  2. listen = /var/run/php-fpm.sock& g& Y2 c- z2 m6 f3 v( M; d
  3. ; php-fpm 正常啟動會自動產生php-fpm.sock9 U* b, q% o: z* f
複製代碼
並且新增kevin.conf(可copy www.conf),並修改成:$ w/ H$ P+ ^7 W4 L+ R. y
  1. listen = /var/run/php-fpm_av4u.sock/ [7 J% U4 r; r( i, t8 M* ]
  2. user = kevin
    + a, Y6 D6 g7 W8 A% A7 W2 t
  3. group = kevin
複製代碼
啟動php-fpm service php-fpm start
9 @: _9 w# n9 A7 x" V+ g& F: f重啟httpd      
service httpd reload
/ j4 ]* V9 [7 h  z結果3 |) Q3 d! l8 }1 L9 r' D
經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod  755),可見仍未成功,決定Apache改成nginx(比較容易),再試.................
1 O$ S, r- r: f; ]" o& m; R




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