编辑 apache vhosts 和 ubuntu hosts 文件?

编辑 apache vhosts 和 ubuntu hosts 文件?

我刚刚安装了 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/default3遍。

所以现在我有:

/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”,以便您可以将绝对路径传递给站点目录

相关内容