我刚刚安装了 ubuntu(11.04)。
我已经安装了 apache/mysql/php 等。
我有几个网站
/var/www/site1
/var/www/site2
/var/www/site3
我希望能够访问这些
http://site1.local
http://site2.local
http://site3.local
所以在我的 hosts 文件中
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/sites-available/site1
/etc/apache2/sites-available/site2
/etc/apache2/sites-available/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>
然后在终端中调用
sudo a2ensite site1 site2 site3 && sudo /etc/init.d/apache2 reload
这似乎可行,但同时只有一个虚拟主机可工作(包括默认),我做错了什么?
当我运行重新加载命令时,我得到
- 重新加载 Web 服务器配置 apache2
apache2:无法可靠地确定服务器的完全限定域名,
使用 127.0.1.1 作为 ServerName
[2011 年 4 月 15 日星期五 10:45:27] [警告] NameVirtualHost *:80 没有 VirtualHosts
答案1
文件:/etc/hosts
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
文件:/etc/apache2/apache2.conf
[...]
NameVirtualHost *:80
[...]
文件:/etc/apache2/sites-available/站点{i}.local.conf(在 {i} 处插入数字:1 或 2 或 3)
<VirtualHost *:80>
ServerName site{i}.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site{i}
[...]
</VirtualHost>
在目录中/etc/apache2/sites-enabled/创建符号链接:
@site{i}.local.conf
重新启动 apache 并享受乐趣:)
答案2
有一个脚本可以让你轻松完成这个任务 -https://github.com/RoverWire/virtualhost
这最终会执行与给出的答案所解释的相同的操作,但只用一个命令即可完成,例如 -
sudo virtualhost create mysite.local my_site
它还允许您删除您创建的主机
sudo virtualhost delete mysite.local my_site
请注意,“my_dir”假定它在 /var/www 之后启动
因此,如果您的站点文件夹位于 /var/www/my_site
您应该运行此命令(传递不带 /var/www 的目录路径)-
sudo virtualhost create mysite.local my_site
您还可以修改脚本文件并删除默认路径“/var/www”,以便您可以将绝对路径传递给站点目录