麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > Apache > 正文

CentOS下與Apache連接的PHP多版本共存方案實現詳解

2024-08-27 18:12:05
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了CentOS下與Apache連接的PHP多版本共存方案實現,針對mod_fcgi模塊的配置作了一些說明,需要的朋友可以參考下。

在apache下整合fastCGI模式運行的php-fpm,似乎網上很少相關材料,就連英文版材料也少。只要是php-fpm,基本上都是與nginx搭配。查了一大批相關資料,寫本文總結一下。

apache下有多個fastCGI的支持方案:至少有mod_fcgi、mod_fastcgi(git)、mod_proxy_fcgi等。這兩個模塊都有點老,尤其mod_fastcgi自從2007年以來就沒有更新,略掉不談,事實上沒用過用。mod_proxy_fcgi模塊是httpd 2.4+的版本正式引入,通過簡潔的一行 ProxyPassMatch 指令即可。

mod_fcgi

mod_fcgi模塊本身是做fastCGI進程管理的,使用它就不需要使用php-fpm管理進程了。核心配置參數

  1. LoadModule fcgid_module modules/mod_fcgid.so 
  2. <VirtualHost *:80> 
  3.   DocumentRoot "/var/www/html/site_1" 
  4.   ServerName "www.companysz.com" 
  5.   DirectoryIndex index.html index.php 
  6.   #php.ini的存放目錄,Linux下通常不需要 
  7.   #FcgidInitialEnv PHPRC "D:/php" 
  8.   # 設置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi進程在處理完所有請求前退出 
  9.   FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000 
  10.   #php-cgi每個進程的最大請求數 
  11.   FcgidMaxRequestsPerProcess 1000 
  12.   #php-cgi最大的進程數 
  13.   FcgidMaxProcesses 3 
  14.   #最大執行時間 
  15.   FcgidIOTimeout 600 
  16.   FcgidIdleTimeout 600 
  17.   #php-cgi的路徑 
  18.   FcgidWrapper /usr/local/php7/bin/php-cgi .php 
  19.   AddHandler fcgid-script .php 
  20.   FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000 
  21.   <Directory "/var/www/html/site_1"
  22.     Options +ExecCGI 
  23.   </Directory> 
  24. </VirtualHost> 

幾個Fcgid*指令,是優化之用,這里僅示例,要按實際情況調整數值。具體參看mod_fcgi官方文檔

使用mod_fcgid的幾個特點

php-fgi進程是由apache模塊啟動并管理,不需要配置php-fpm

在php-cig進程以apache用戶身份運行,php程序寫的文件,其權限為apache用戶(而不像php-fpm下寫文件為php-fpm用戶所有,默認是nobody),這樣在目錄權限管理方面一致性高些。

mod_fastcgi

雖然CentOS 6.x下是apache 2.2,但所幸已經有人成功移植: https://github.com/ceph/mod-proxy-fcgi 我們可以直接使用;更幸運的是它已經進入epel源,直接yum安裝即可;不想匹配epel源的,直接下載rpm包安裝也可以(示例 http://mirrors.ustc.edu.cn/epel/6/x86_64/)

當然可以重新編譯安裝apache 2.4, 這樣直接有mod_proxy_fcgi可以使用,但這里還是保持原版本不變,省掉編譯的工作量。

參考mod_proxy_fcgi官方文檔,整合php-fpm的配置指令

ProxyPassMatch "^/myapp/.*/.php(/.*)?$" "fcgi://localhost:9000/var/www/"

語法很簡單,跟配置反向代理類似,可以按實際需要做修改。事實上與mod_proxy模塊語法一致的,不同處是將http協議改成fcig協議。

以上是apache整合php-fpm模式運行的fastCGI,接下來要對yum安裝的php做下配置修改。

yum安裝的php配置文件 /etc/httpd/conf.d/php.conf ,其中有如下一行

AddHandler php5-script .php

我們要對不同的站點啟用不同的php,上面一行是對全局的.php文件分配給php模塊處理,我們把這一行注釋掉。而是在每個站點啟用不同的php運行模式。

以上即是處理方式。

[已知問題]:裸目錄地址轉發

有一個困擾的問題沒有解決,感覺有點像模塊bug:

對于配置了DirectoryIndex index.php的目錄,如果其子目錄沒有index.php,上述ProxyPassMatch還是會做fastCGI轉發,這時會看到php-fpm的404響應,而不是apache的響應403頁面。但前面的規則并不轉發這裸空目錄的url,所以感覺像bug

再者就是,對于ProxyPassMatch匹配的目錄,apache自動索引功能失效。(當然如果不開啟autoindex就無所謂了。生產環境下通常不開啟的)

其它,似乎也沒有什么嚴重后果,或者我沒還意識到(?)。

解決方法:每個目錄下,都放置一個index.html,避免fpm-php處理空請求

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人国产视频在线观看 | 国产毛片在线 | 国产免费美女 | 精品一区二区电影 | 久久亚洲精品久久国产一区二区 | 视频一区 日韩 | 欧美国产一区二区三区激情无套 | 成人在线视频播放 | 成人国产视频在线观看 | 精品中文字幕在线观看 | 日日狠狠久久 | 日本一区二区视频在线观看 | 成人男女免费视频 | 久草在线播放视频 | 中国成人在线视频 | 精品久久久久久久久久久久久久 | 精品国产乱码久久久久久丨区2区 | japanese massage tube| 亚洲福利视 | 久久人人爽人人爽人人片av高请 | 国产精品自在线拍 | 亚洲视频高清 | 国产成人精品区 | 色人阁五月天 | www久 | 成人一区二区在线观看视频 | 天天草天天爱 | 中文日韩欧美 | 欧美国产一区二区三区 | 日日夜av| 精品亚洲一区二区三区 | 色骚综合 | 99热久草 | 日韩做爰视频免费 | 国产精品美女一区二区 | 2021狠狠操 | 成码无人av片在线观看网站 | 在线观看中文字幕国产 | 久草在线资源视频 | 国产欧美精品一区二区三区四区 | 久久视频精品 |