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便擁有
% g/ i& t/ L% q% a5 U0 i) [7 |優點& U, [$ e: ^7 J
❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。
  b' b. L9 o9 [  d! g- R1 x1 Z( f〖安裝〗:  ~; Y/ G. u9 d; Q" Z9 P7 r) n. x0 P
《1》Apache已安裝' r! W' J  m! l
《2》安裝mod_fastcgi

" d8 j# F2 P$ x% |1 p2 Q
  1. cd /usr/tmp
    ) c1 }+ Y. o8 n9 ?- s4 b( f1 P# Y8 K
  2. wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]; u# t" H8 ]9 x# M1 F
  3. tar -zxvf mod_fastcgi-current.tar.gz5 U9 z7 @# U9 B& c
  4. cd mod_fastcgi-2.4.6
    ( o( H3 f- b. x1 k
  5. cp Makefile.AP2 Makefile) j7 R- {& K" Q8 H& D1 W, y* T. Y
  6. make top_dir=/usr/lib64/httpd  #我的主機是64bit
    0 E- _2 c3 ~$ [6 n4 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」,於是& n3 J5 r0 x6 o' ~. Z
  1. yum install libtool httpd-devel apr apr-devel
複製代碼
再執行一次! M8 F, k, H9 ?% a. ^4 j
  1. make top_dir=/usr/lib64/httpd
      i) x8 e$ k( M6 T' U8 A' s  Y
  2. make install
複製代碼
若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so
# M2 \1 j8 M  I/ Y" H
《3》安裝php-fpm
% L! [6 ]+ E( F+ M1 \# J: Dphp-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm      9 R$ ?  ^$ h+ v0 U9 e! {2 m% p0 F3 s& t
環境設定) y7 N9 M* ], T$ H
《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd
& t! L; R: w( o: U& ^
  1. <font size="3">#HTTPD=/usr/sbin/httpd.worker    將註解#拿掉</font>
複製代碼
《2》由Apache載入mod_fastcgi.so
# K7 `9 X, R* j3 Q) \3 A, `/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:

# \+ _: R( t2 |8 f, ^5 @) e
  1. LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼
《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加)/ h: S: |$ _9 W! U1 s; T! o& ]
  1. <IfModule prefork.c>
    ( M' v0 u2 Y* E4 c( A" a
  2. #根據不同的 PID 模式給予不同的 PHP 運作模組* Z8 a, G1 y" p3 R+ M
  3.   LoadModule php5_module modules/libphp5.so! `' ]' |1 O1 @6 F: d
  4. </IfModule>/ L, C  n9 x( L
  5. <IfModule worker.c>$ z* R2 l' h3 p9 f6 o
  6.   LoadModule php5_module modules/libphp5-zts.so
    - X  U5 o, R# R( D0 d
  7. </IfModule>5 X1 V2 [0 y  ^1 |8 {5 T
  8. AddHandler php5-script .php  #所以副檔名一定要是 .php 結尾!
    * [4 ^) \6 x0 \
複製代碼
《4》設定php-fpm; X) h# k7 e$ ~
vi /etc/php-fpm.d/www.conf
  1. ;listen = 127.0.0.1:9000& r: f  b+ ?' k: l5 E' Z- L
  2. listen = /var/run/php-fpm.sock5 B0 T& S4 R$ V2 h
  3. ; php-fpm 正常啟動會自動產生php-fpm.sock7 R6 Q; ^( V5 L, @
複製代碼
並且新增kevin.conf(可copy www.conf),並修改成:4 k! g1 ?% G3 V5 x  p
  1. listen = /var/run/php-fpm_av4u.sock2 k: V4 r' Z2 ?3 z( _9 m$ t) |$ y
  2. user = kevin
    ! n- v0 v" ~4 s- L  `* H3 }% V
  3. group = kevin
複製代碼
啟動php-fpm service php-fpm start# k% [. P- j+ F( ]7 u9 L
重啟httpd      
service httpd reload7 h6 ^9 V2 T/ c# U
結果5 Q* v- a8 z2 K' m9 R& L
經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod  755),可見仍未成功,決定Apache改成nginx(比較容易),再試.................
' |" x$ i' ]% c2 k




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