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# f; w# Q. P8 D4 |5 g) L6 K1 [8 X
優點
1 J& K9 A/ i, o; T% D❶記憶體管理、❷以不同身分執行apache(不只有apache),方便網頁空間搬移時 ,網頁經常出現「權限不足」的問題。
$ x2 l  v- H  R# ]: k" d+ c/ x3 j# I〖安裝〗:
9 Z" H5 x) o  I7 r& X《1》Apache已安裝
7 N( ?/ C7 E" b  `: U/ C  N5 d《2》安裝mod_fastcgi
0 }# d) S' }! g* S& j7 f! l
  1. cd /usr/tmp
    9 |: ?, _6 s# @0 N) r
  2. wget [url]http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz[/url]
    ( y/ p7 \- |% ?3 Y$ G+ z
  3. tar -zxvf mod_fastcgi-current.tar.gz# [- l" }2 F% Z( F7 ?* V) u4 _
  4. cd mod_fastcgi-2.4.6% j. Y' K" Q( k2 U
  5. cp Makefile.AP2 Makefile  U+ e5 o- p/ l- q9 L# P: n* N
  6. make top_dir=/usr/lib64/httpd  #我的主機是64bit
    7 \% _! H1 T& a5 @" W" I8 k
  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」,於是9 {. h: {- S4 {; {& ]: b
  1. yum install libtool httpd-devel apr apr-devel
複製代碼
再執行一次
+ v9 v" \( J, D: w6 N0 \1 v$ e
  1. make top_dir=/usr/lib64/httpd
    ) `, k" [# g5 S, l0 N9 ~/ n( H+ P
  2. make install
複製代碼
若安裝成功 , 應該會在 /usr/lib64/httpd/modules/ 下看見 mod_fastcgi.so+ k* l% {* V* g; R, [5 Q
《3》安裝php-fpm9 k9 S: ^/ U, R6 e
php-fpm , 直接由 remi(http://www.pigo.idv.tw/archives/242) 安裝 , 例如 yum -–enablerepo=remi install php-fpm      
( d2 t* r1 r( T) u: [ 環境設定/ _# c1 l' t1 B* S$ d. f, B/ e
《1》Apache改為worker模式(效率較佳):修改/etc/sysconfig/httpd
2 `# q! {4 c6 L# {  J
  1. <font size="3">#HTTPD=/usr/sbin/httpd.worker    將註解#拿掉</font>
複製代碼
《2》由Apache載入mod_fastcgi.so
2 _# Q, v% r# S4 ?# q/etc/httpd/conf.d/下新增一檔mod_fastcgi.conf,內容:

8 `3 Y5 {* f. {8 ~% n  Q0 A" h
  1. LoadModule fastcgi_module modules/mod_fastcgi.so
複製代碼
《3》/etc/httpd/conf.d/php.conf 一定要包含以下片段(若無自行增加)
8 o3 B1 D/ D' Z, c
  1. <IfModule prefork.c>
    3 f- t- S2 B" F* Z! s9 O
  2. #根據不同的 PID 模式給予不同的 PHP 運作模組- i0 b3 m6 {% @- X4 ~/ p  y# [
  3.   LoadModule php5_module modules/libphp5.so
    , C  _6 O/ q' z& V8 {) ]# y
  4. </IfModule>! _1 Z; Q% Z7 j5 w
  5. <IfModule worker.c>
    : A3 M  H+ W2 {+ L! a
  6.   LoadModule php5_module modules/libphp5-zts.so
    9 I& }2 M+ Q" `1 f6 r
  7. </IfModule>
    , |- |6 N4 i. V9 o) [$ K
  8. AddHandler php5-script .php  #所以副檔名一定要是 .php 結尾!( d9 Y' W5 C, W7 f9 C9 r# |3 s. R4 B
複製代碼
《4》設定php-fpm
6 E8 k# T5 K4 l3 G7 d+ mvi /etc/php-fpm.d/www.conf
  1. ;listen = 127.0.0.1:9000; J1 N5 m. ?& l+ J( _" s, X
  2. listen = /var/run/php-fpm.sock* x2 h9 Y4 ]9 ]1 c
  3. ; php-fpm 正常啟動會自動產生php-fpm.sock4 _! o7 U! Z- x) P5 s/ X) t4 C
複製代碼
並且新增kevin.conf(可copy www.conf),並修改成:
( E) ^, k. B5 f0 s0 ^  z
  1. listen = /var/run/php-fpm_av4u.sock
    : r7 ]5 c: s! `) }" \: ]
  2. user = kevin
    / ?, }1 i- z1 ?+ H
  3. group = kevin
複製代碼
啟動php-fpm service php-fpm start
9 x+ X' f- t8 k$ ^重啟httpd      
service httpd reload1 `: U- S& f, {( k3 u
結果
/ e9 o# G% J5 {5 w經測試發現跟之前一樣,仍然有權限不足情形(kevin皆chmod  755),可見仍未成功,決定Apache改成nginx(比較容易),再試.................1 h. B' T& U* S/ o





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