编辑apache虚拟主机和ubuntu主机文件?

我刚刚安装了Ubuntu(11.04)。

我已经安装了Apache / MySQL / PHP等

我有几个坐在的网站

在/ var / WWW / site1的
在/ var / WWW /站点2
在/ var / WWW / site3

我希望能够访问这些
HTTP://site1.local
HTTP://site2.local
HTTP://site3.local

所以在我的主机文件
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local

然后我复制/etc/apache2/sites-available/default 3次。

所以现在我有
在/ etc / apache2的/网站可用/ site1的
在/ etc / apache2的/网站可用/站点2
在/ etc / apache2的/网站可用/ site3

这些都像(用适当的sitex名称)

 <VirtualHost site1.local> ServerAdmin webmaster@localhost DocumentRoot /var/www/site1 <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/site1/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost> 

在terminal,我打电话

sudo a2ensite site1 site2 site3 && sudo /etc/init.d/apache2 reload

这似乎工作,除了只有一个虚拟主机同时工作(包括默认),我做错了什么?


当我运行重新加载命令我得到

  • 重新加载Web服务器configurationapache2
    apache2:无法可靠地确定服务器的完全限定的域名,
    ServerName使用127.0.1.1
    [Fri Apr 15 10:45:27 2011] [警告] NameVirtualHost *:80没有VirtualHosts

根据您的主机文件,您映射此行:

<VirtualHost site1.local>

对此:

 <VirtualHost 127.0.0.1> 

你想要的是:

 <VirtualHost *:80> ServerName site1.somesite.com 

您可能还需要:

NameVirtualHost *:80

我面临同样的问题。 在多次尝试和错误之后,我通过将NameVirtualHost *:80添加到sites-available/default来解决此问题。 并删除/不添加同一行中的任何其他文件中的网站可用/

我不知道为什么这个工作。

以下错误消息:“无法可靠地确定服务器的完全限定的域名…”在apache2服务器中是一个古怪的问题,并且不会阻止或停止apache2服务器从本地“VirtualHost”到您的“ServerName”。 阅读Shane Madden提供的链接,因为解决scheme在那里。 另一个“警告”信息:“NameVirtualHost *:80没有VirtualHosts”将阻止你成功。

问题1:FQDN的解决scheme很简单,这两种解决scheme对于不同的用户来说似乎都是成功的,所以两者都是这样的:将文本string“ServerName localhost”(不带引号)添加到两个文件中的一个(或两个) /etc/apache2/http.d.conf文件是空白的。 并将其添加到/etc/apache2/apache2.conf文件的底部。

问题2:阅读手册,您将看到有关Apache2各种设置的示例,但您需要牢记的一件事是,指令“NameVirtualHost”(位于/etc/apache2/ports.conf)需要和你在指令中指定的一样(在你的例子中位于etc / apache2 / sites-available / siteFile中,其中“siteFile”是你的“site1”,“site2”和“site3”)。 不要在一个静态IP地址中使用布尔值,否则使用静态IP:端口。 一旦你了解了这种关系的严重性,那么阅读手册并尝试其设置将起作用。

问题3:隐藏的问题:知道问题2,您现在需要确保它不会发生在您的其他站点文件 – 即您的默认文件。 如果默认文件有一个VirtualHost *:80,你的site1有一个虚拟主机127.0.0.1,你的ports.conf有一个NameVirtualHost 127.0.0.1,那么site1和ports.conf是和谐的,但缺省现在不再好,将导致错误。

挂在那里! 这并不容易…