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) h0 W- A7 A0 ^0 D" b1 Z
優點
0 v/ d- ]& e' w❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。7 U, h( z" A  @/ i/ c
〖安裝〗:
) n# V* c3 h. e! X2 A0 d$ H2 v《1》Apache已安裝+ p8 t4 `0 X- j' K) h" i9 b7 q! r
《2》安裝mod_fastcgi
# m/ B8 D3 z5 Y  q( W) S, j$ ?
  1. cd /usr/tmp" |3 B5 Y+ R% F, K9 D
  2. wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]
    9 ~3 \( P' n. h6 j7 U1 X
  3. tar -zxvf mod_fastcgi-current.tar.gz
    * v9 d2 q# Z& ^  \: k5 f2 M3 F& Y/ i
  4. cd mod_fastcgi-2.4.6
    , c2 [9 }% _# L4 b: a
  5. cp Makefile.AP2 Makefile
    + b0 {  K2 m* v7 F; P" q
  6. make top_dir=/usr/lib64/httpd  #我的主機是64bit
      b& _8 _! H; L: g- c2 g
  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 L7 x7 ]& [, c$ K2 o# m
  1. yum install libtool httpd-devel apr apr-devel
複製代碼
再執行一次& S4 L+ v1 w5 @: [! K
  1. make top_dir=/usr/lib64/httpd
    ; h1 z9 s9 i9 L5 ^  g
  2. make install
複製代碼
若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so' v# [8 \, T& z* p
《3》安裝php-fpm/ G, K2 g) b5 r; a4 u6 l* A4 \* b
php-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm      
% T& `; f: A6 Z( e1 j 環境設定9 F2 \5 h0 l7 P- b8 h0 o4 @% y3 |
《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd( Z$ ^/ {. A$ @" d2 c5 A& L
  1. <font size="3">#HTTPD=/usr/sbin/httpd.worker    將註解#拿掉</font>
複製代碼
《2》由Apache載入mod_fastcgi.so" f, s9 @) J9 ]! [# G$ c
/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:
  Z* u. |1 {2 M- R- M
  1. LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼
《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加)% |- R7 J+ y) ^" W1 P
  1. <IfModule prefork.c>  ?4 p0 A& h1 Q& }! ?9 P6 p
  2. #根據不同的 PID 模式給予不同的 PHP 運作模組
      y1 o" F8 h* ?5 U. F- r: s' x* @
  3.   LoadModule php5_module modules/libphp5.so
    , E6 L, g( b! Q4 p( C
  4. </IfModule>+ Y# c9 L6 X) L( y
  5. <IfModule worker.c>% O1 E7 p. E' z  m/ @
  6.   LoadModule php5_module modules/libphp5-zts.so( W$ E) b, d! [) O) ~% x8 M+ D
  7. </IfModule>
    ( i$ i# J, {9 S6 J( e
  8. AddHandler php5-script .php  #所以副檔名一定要是 .php 結尾!9 h* `) o' Q9 {
複製代碼
《4》設定php-fpm
4 J: X  h( U- i7 J+ Ivi /etc/php-fpm.d/www.conf
  1. ;listen = 127.0.0.1:9000
    1 p7 g6 I  q  v* X7 p' A/ V
  2. listen = /var/run/php-fpm.sock4 b9 a6 l7 K) {! k) u* f# W. \  x
  3. ; php-fpm 正常啟動會自動產生php-fpm.sock
    ; `3 ?2 T  C1 x) }: V. p
複製代碼
並且新增kevin.conf(可copy www.conf),並修改成:
6 k! h" G  n( v: j  l  H) |& T
  1. listen = /var/run/php-fpm_av4u.sock
    4 e( J; C  m3 }9 v1 ^* Q
  2. user = kevin( @2 k+ W0 u/ |2 L/ \1 q5 V6 F0 A
  3. group = kevin
複製代碼
啟動php-fpm service php-fpm start
$ d( Q8 u# B$ m3 ?% {重啟httpd      
service httpd reload
# n6 ]6 v# O3 H' S: W$ o結果
9 h; s3 l8 B  L7 l5 O經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod  755),可見仍未成功,決定Apache改成nginx(比較容易),再試................./ S* q% |% _( r% `- P





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