![为什么 Apache 在添加两个站点后就停止工作了?](https://linux22.com/image/1093938/%E4%B8%BA%E4%BB%80%E4%B9%88%20Apache%20%E5%9C%A8%E6%B7%BB%E5%8A%A0%E4%B8%A4%E4%B8%AA%E7%AB%99%E7%82%B9%E5%90%8E%E5%B0%B1%E5%81%9C%E6%AD%A2%E5%B7%A5%E4%BD%9C%E4%BA%86%EF%BC%9F.png)
我想要 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,你必须转到
对于 redmine,你必须去
由于您希望它们都位于同一个主机名中,因此您可能只需要一个 VirtualHost 标记来定义 DocumentRoot 和所需的 ServerName,然后定义您想要在该主机下的别名等。如果它作为一个“站点”配置存在,这一切都会更简单。