为多个站点设置 Apache VirtualHost

为多个站点设置 Apache VirtualHost

我正在尝试在我的计算机上建立一个网站,但遇到了一些问题。我已经使用 Flask 和调试服务器对网站进行了原型设计,现在想在进一步调试时暂时托管它。这仅供我公司网络内部使用。

我似乎无法正确配置 Apache。我目前运行一个链接到我的主目录的默认站点,因此我可以通过 Web 浏览器从其他机器获取文件。

我根本没有改变apache2.conf,但这是我的 httpd.conf

<Location /server-status>
    SetHandler server-status

    Order Deny, Allow
    Deny from all
    Allow from .mycompany.com
</Location>

我的默认配置位于 内/etc/apache2/sites-available/default,具有

<VirtualHost *:80>
    ServerAdmin [email protected]

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinksMultiViews
        AllowOverride None
        Order allow,deny
        allow from .mycompany.com
    </Directory>
    <Directory /var/www/home/>
        Options Indexes FollowSymLinks MultiViews
        AllowOVerride None
        Order allow,deny
        allow from .mycompany.com
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

我尝试启用的应用程序具有以下配置文件,位于/etc/apache2/sites-available/Powermon

LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so

User p_user
Group p_group
FastCgiServer /home/p_user/Powermon/runp.fcgi -idle-timeout 300 -processes 5

<VirtualHost *:80>
    ServerName powermon
    DocumentRoot /home/p_user/Powermon/app/static
    Alias /static /home/p_user/Powermon/app/static

    AddHandler fastcgi-script fcgi
    ScriptAlias / /home/p_user/Powermon/runp.fcgi

    ErrorLog /home/p_user/Powermon/logs/powermon_error_log

    <Location />
        SetHandler fastcgi-script
    </Location>
</VirtualHost>

在启用站点后我看到

000-default -> ../sites-available/default

所以我补充道

010-powermon -> ../sites-available/Powermon

当我跑步时apache2ctl -S我看到

VirtualHost configuration:
wildcard NameVirtualHosts and _default_servers:
*:80            is a NameVirtualHost
    default server dhcp-ip-address.mycompany.com (/etc/apache2/sites-enabled/000-default:1)
    port 80 namevhost dhcp-ip-address.mycompany.com (/etc/apache2/sites-enabled/000-default:1)
    port 80 namevhost powermon (/etc/apache2/sites-enabled/010-powermon:7)
Syntax OK

因此,目前当我在浏览器中访问时machine-name/,我可以导航到我的主目录并根据需要查看文件。理想情况下,我希望能够访问machine-name/powermon并查看我的应用程序的运行情况。

答案1

您说您想要设置 Apache 虚拟主机,但是您又这样说:

因此,目前当我在浏览器中访问时machine-name/,我可以导航到我的主目录并根据需要查看文件。理想情况下,我希望能够访问machine-name/powermon并查看我的应用程序的运行情况。

主机上的路径不是虚拟主机。您的配置设置如下:流量到powermon会转到一个配置。流量到dhcp-ip-address.mycompany.com会转到另一个配置。

因此,Apache 虚拟主机设置的唯一工作方式是访问此 URL 并获取以下内容:

dhcp-ip-address.mycompany.com

然后访问这个 URL 并得到另一件事:

powermon

通过 Apache 虚拟主机设置真正实现此目的的唯一方法是像这样更改 Web 浏览客户端的/etc/hosts文件。假设这些虚拟主机位于 IP 地址为 123.456.78.90 的服务器上。打开您的hosts文件 — 我在 Mac 上,因此我会这样做 — 如下所示nano

sudo nano /etc/hosts

并将此行添加到文件底部:

123.456.78.90 powermon

现在,当您将 Web 浏览器指向:

http://powermon

您将获得已设置的 Apache 虚拟主机。

但是,您再次混淆了服务器路径和服务器虚拟主机的概念。因此,您需要在执行其他任何操作之前解决该问题。此外,您的虚拟主机配置powermon似乎脱节。 之外的项目<VirtualHost *:80>应该放在里面。否则,这些配置选项无论如何都会被服务器范围的default配置使用。而且User&Group设置似乎也很笨拙。脚本应设置为可供 Apache 用户和组使用。而不是相反。但假设是善意的,这就是我将如何构造它:

用户 p_user 组 p_group

服务器名称 powermon DocumentRoot /home/p_user/Powermon/app/static 别名 /static /home/p_user/Powermon/app/static

    LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so

    FastCgiServer /home/p_user/Powermon/runp.fcgi -idle-timeout 300 -processes 5

    AddHandler fastcgi-script fcgi
    ScriptAlias / /home/p_user/Powermon/runp.fcgi

    ErrorLog /home/p_user/Powermon/logs/powermon_error_log

    <Location />
        SetHandler fastcgi-script
    </Location>

</VirtualHost>

答案2

您确定您创建了指向文件的软链接:/etc/apache2/sites-available/Powermon?

例如:

cd /etc/apache2/sites-enabled/
ln -s ../sites-available/Powermon

相关内容