重新启动后,Apache虚拟主机设置始终失败

只需在Debian 6中设置一个Apache Web服务器,并添加以下虚拟主机

<VirtualHost 123.45.67.89:80> ServerAdmin [email protected] ServerName mysite.com ServerAlias www.mysite.com DocumentRoot /srv/www/mysite.com/public_html ErrorLog /srv/www/mysite.com/logs/error.log CustomLog /srv/www/mysite.com/logs/access.log combined </VirtualHost> 

而我启用它(默认的虚拟主机也启用):

 a2ensite mysite.com 

刷新:

 /etc/init.d/apache2 reload 

我的/ etc / hosts如下:

 127.0.0.1 localhost.localdomain localhost 123.45.67.89 myhost.mysite.com myhost 

然后我通过访问mysite.comwww.mysite.com进行testing。 一切工作正常在这一点上。

问题是,每次我重新启动,我不能再访问我的网站了。 不适用于mysite.comwww.mysite.com

在摆弄和监视日志之后,似乎重启后apache总是在/ etc / apache2 / htdocs中查找文件。 没有在任何configuration文件中指定。

我可以在重新启动后重新启动的唯一方法是发行/etc/init.d/apache2 reload

有什么build议么?

提前致谢。


[更新1]

这是/ etc / apache2 / sites-enabled /

 lrwxrwxrwx 1 root root 26 May 4 13:41 000-default -> ../sites-available/default lrwxrwxrwx 1 root root 29 May 4 11:12 mysite.com -> ../sites-available/mysite.com 

这是启动后/var/log/apache2/error.log的最后一行

 [Wed May 04 13:43:17 2011] [notice] caught SIGTERM, shutting down [Wed May 04 13:43:37 2011] [notice] Apache/2.2.16 (Debian) configured -- resuming normal operations 

我怎样才能确保Apache启动启动? 发行:

 update-rc.d apache2 defaults 

会输出:

 update-rc.d: using dependency based boot sequencing 

我应该尝试把/etc/init.d/apache2重装/etc/rc.loca里面吗? (只是为了确保它被执行)


[更新2]

我只是做了一些我认为解决了问题的东西。 我所做的是改变回来:

 NameVirtualHost 123.45.67.89:80 

 NameVirtualHost *:80 

然后更改每个虚拟主机文件以及:

 <VirtualHost 123.45.67.89:80> 

 <VirtualHost *:80> 

之后,它只是工作。 我试图重新启动2-3次,仍然有效。 我不知道这是不是一个好的设置。

我首先使用IP地址的原因是因为我的VPS提供商的wiki / doc / library是这么说的。

所以我想我现在要closures这个话题并做更多的testing。

多谢你们。

你可以发表以下内容:

/ etc / apache2 / sites-enabled /

/var/log/apache2/error.log在重启过程中的内容(一旦你在日志底部启动,应该有启动日志。

一个非常非常低的水平,没有真正解决问题的解决scheme将只是

 put /etc/init.d/apaceh2 reload inside /etc/rc.local. 

最后你确定Apache正在启动? 运行以下

 update-rc.d apache2 defaults 

解决scheme的有趣,nightrod。

我的猜想是,在Apache启动的时候,你的IP还没有被设置 – 或者是因为eth *被closures了,或者是因为你正在使用静态的DHCP,并且正在等待DHCP服务器的回应,所以Apache(推测如下)不加载VirtualHost定义或NameVirtualHost指令,因为IP当前未在服务器上configuration,所以它不可能匹配。 我猜它仍然绑定端口为*:80,因为回环设备可用的,所以它可以合理地开始。 结果是,在引入eth *之后,你有apache监听,但没有configurationVirtualHost。