在 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 不适用于第二个虚拟主机。如果我添加相同的 &lt;IfModule mod_fastcgi.c&gt; 指令,我会收到错误:

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的主要内容,如果未能解决你的问题,请参考以下文章

如何在虚拟主机上启用 suexec?

Apache多虚拟主机多版本PHP(5.3+5.6+N)共存运行配置全过程

具有两个子目录的 apache2 虚拟主机配置

apache 基于域名虚拟主机配置,本机上访问 www.test.com指向 127.0.0.1/test

如何使用别名在 Apache 虚拟主机上配置多个 SSL 证书?

如何在Macbook上配置Apache虚拟主机