在 Apache 上配置两个虚拟主机使用 fastcgi
Posted
技术标签:
【中文标题】在 Apache 上配置两个虚拟主机使用 fastcgi【英文标题】:Configure both vhosts on Apache use fastcgi 【发布时间】:2014-02-23 23:59:14 【问题描述】:在虚拟机上安装 Ubuntu。 运行 Apache 并且需要 2 个不同端口上的虚拟主机,例如69 和 100。(在 80 上使用 php-fpm + fastcgi 运行 nginx)。 使用端口转发到主机系统从浏览器访问,如 localhost:69/ 或 localhost:100/
配置 /etc/apache2/sites-available/default :
<VirtualHost *:69>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
...
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
</IfModule>
</VirtualHost>
<VirtualHost *:100>
ServerAdmin webmaster@localhost
DocumentRoot /var/html
...
</VirtualHost>
将这些端口也添加到 /etc/apache2/ports.conf
PHP 不适用于第二个虚拟主机。如果我添加相同的 <IfModule mod_fastcgi.c>
指令,我会收到错误:
FastCgiExternalServer:重新定义之前定义的类 "/usr/lib/cgi-bin/php5-fcgi"
什么是正确的配置方法?
【问题讨论】:
【参考方案1】:您只能拥有其中一个。正如这个人指出的那样: https://serverfault.com/questions/384715/fastcgi-error-with-apache2
尝试将其添加到常规配置中,而不是在虚拟主机中。似乎您正在尝试按照为 nginx 配置 apache 虚拟主机的方式进行配置。也许只需将它添加到 apache.conf 之前要在 sites_enabled 中读取的行
通常这将在启用 conf 的文件中。
【讨论】:
好的,你只能有一个,但是我们如何为每个 VHOST 指定不同的套接字文件呢?如您所见,FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -idle-timeout 300 -socket /var/run/php5-fpm-extra.sock -pass-header Authorization
行包含套接字。以上是关于在 Apache 上配置两个虚拟主机使用 fastcgi的主要内容,如果未能解决你的问题,请参考以下文章
Apache多虚拟主机多版本PHP(5.3+5.6+N)共存运行配置全过程
apache 基于域名虚拟主机配置,本机上访问 www.test.com指向 127.0.0.1/test