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便擁有, Z# y( R* k8 n1 `, B
優點
4 Z6 g7 ]6 l1 E" R+ F❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。& p. X2 S$ c; T: r; a+ `
〖安裝〗:
5 }; k- K4 q/ U! h% a$ f《1》Apache已安裝
+ Q9 O: \) p% a& X! V6 r《2》安裝mod_fastcgi

. N4 P4 B, T. J  }; c+ {' @
  1. cd /usr/tmp* c) F1 F' Y3 x  f) U
  2. wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]
    . S+ t; E2 V6 g9 l
  3. tar -zxvf mod_fastcgi-current.tar.gz! n6 p. l9 t4 y
  4. cd mod_fastcgi-2.4.6
    ; d$ W2 w, s2 k4 O1 V/ V  A, ]
  5. cp Makefile.AP2 Makefile
    / @) J3 `1 b0 i( Z. f. h
  6. make top_dir=/usr/lib64/httpd  #我的主機是64bit  ]% `4 l6 G6 ?7 A  X- f+ ^4 W/ Y
  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」,於是  M  ?- B+ e! J- ^% P2 ^+ B" G, C
  1. yum install libtool httpd-devel apr apr-devel
複製代碼
再執行一次/ r) O- U. Y' }; [2 A( x
  1. make top_dir=/usr/lib64/httpd; H7 o4 g; \; o
  2. make install
複製代碼
若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so
& p- T- ]* r; F/ c6 q2 ]- C% f
《3》安裝php-fpm" i" A* ]) H( `3 \. V6 a
php-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm      9 p7 r2 J& [0 m; J$ d: \
環境設定
0 P& }" l+ T5 w3 Y7 f) s3 Y《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd% k6 D' ?8 R! s0 @6 ^3 \
  1. <font size="3">#HTTPD=/usr/sbin/httpd.worker    將註解#拿掉</font>
複製代碼
《2》由Apache載入mod_fastcgi.so- O* }& k; \2 r0 k
/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:
- H6 Z/ j0 y# c
  1. LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼
《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加). I" {& u  o. q  ?
  1. <IfModule prefork.c>3 U) _1 C  Q; z& f/ W0 X
  2. #根據不同的 PID 模式給予不同的 PHP 運作模組0 k3 ^  W# x2 H
  3.   LoadModule php5_module modules/libphp5.so, j3 E2 ^0 M8 `  [: x# a% ?
  4. </IfModule>
    0 G8 D9 x" p- J+ I$ z! A" X
  5. <IfModule worker.c>
    + q- j+ q, t; L. g+ d
  6.   LoadModule php5_module modules/libphp5-zts.so: y' l( e5 H* E( |  v0 W) P
  7. </IfModule>5 c9 \+ {- J$ r' r; Q
  8. AddHandler php5-script .php  #所以副檔名一定要是 .php 結尾!" a5 J- O0 c3 v4 g: }
複製代碼
《4》設定php-fpm
6 A7 `7 P  j- D* Y6 S& b0 Uvi /etc/php-fpm.d/www.conf
  1. ;listen = 127.0.0.1:9000
    / c  y, n8 h) J) |
  2. listen = /var/run/php-fpm.sock8 N9 ^7 ]( |5 l2 Y2 s5 F( X, }/ ~8 t0 G
  3. ; php-fpm 正常啟動會自動產生php-fpm.sock2 O. Z% d) s! O
複製代碼
並且新增kevin.conf(可copy www.conf),並修改成:
$ ^5 G3 v7 V) e% P" O
  1. listen = /var/run/php-fpm_av4u.sock
    0 v9 G5 T! D3 {+ \) U/ b& P- I5 B+ I
  2. user = kevin
    6 |- ^8 U+ y6 s/ B/ a2 x  f9 P% }
  3. group = kevin
複製代碼
啟動php-fpm service php-fpm start
( `0 Y, v3 r$ p/ X重啟httpd      
service httpd reload! X$ {6 C% ]. o1 c
結果
( Y! c5 g4 I( A2 a% Q經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod  755),可見仍未成功,決定Apache改成nginx(比較容易),再試.................
. l( z% S2 n9 r$ w




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