为什么 Apache 在添加两个站点后就停止工作了?

为什么 Apache 在添加两个站点后就停止工作了?

我想要 localhost/redmine 和 localhost/mercurial 上同时使用 Redmine 和 Mercurial。

Redmine 是一款运行在 mod_passenger 模块上的 RoR 应用程序,而 mercurial 则运行在 CGI 脚本上。我应该能够在一台服务器上同时使用这两者,对吗?

我让 Redmine 正常工作。然后我按照 Mercurial 的步骤操作。然后我启用了该网站。

该网站也不起作用。我对这两个站点进行了 a2ensite 并重新启动了 Apache,但现在两个域名都给我 404。


redmine 的站点配置取自http://www.redmine.org/projects/redmine/wiki/HowToInstallRedmineOnUbuntuServer

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    ServerName myservername

    RewriteEngine on
    RewriteRule   ^/$  /redmine  [R]

    <Directory /var/www/redmine>
            RailsBaseURI /redmine
            PassengerResolveSymlinksInDocumentRoot on
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

Mercurial 的站点配置取自http://www.isnull.com.ar/2010/03/how-to-install-mercurial-on-debian-or.html

<VirtualHost *:80>
Servername mercurial.server
DocumentRoot /var/www/mercurial/http
ScriptAlias /cgi-bin/ /var/www/mercurial/cgi-bin/
ScriptAliasMatch ^/hg(.*) /var/www/mercurial/cgi-bin//hgwebdir.cgi$1

<Directory /var/www/mercurial/cgi-bin>
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>

<Directory /var/www/mercurial/http>
Options FollowSymLinks
AllowOverride AuthConfig
DirectoryIndex /hg
Order allow,deny
Allow from all
</Directory>


ErrorLog /var/log/apache2/error_mercurial.log
CustomLog /var/log/apache2/access_mercurial.log combined

</VirtualHost>

答案1

好问题,问题是你每个站点的 ServerName 都不同。Apache 会在 URL 行中查找它,因此对于 mercurial,你必须转到

http://mercurial.server/....

对于 redmine,你必须去

http://我的服务器名称/...

由于您希望它们都位于同一个主机名中,因此您可能只需要一个 VirtualHost 标记来定义 DocumentRoot 和所需的 ServerName,然后定义您想要在该主机下的别名等。如果它作为一个“站点”配置存在,这一切都会更简单。

相关内容