我刚刚安装了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是和谐的,但缺省现在不再好,将导致错误。
挂在那里! 这并不容易…