如何在一台服务器上处理主站点和多个虚拟主机

如何在一台服务器上处理主站点和多个虚拟主机

我有一个标准的 Ubuntu 安装。Apache Web 根目录是 /var/www。

我想托管我的“主要”站点和一些其他站点。

通常情况下,我会将 mysite.com 的文件直接放在 Web 根目录中。但是,如果我想托管多个网站,这似乎会变得很混乱。我最终会得到如下结构:

我的“主要”站点的文件:

/var/www/index.html
/var/www/images/
/var/www/js/

ETC...

然后我的虚拟网站如下:

/var/www/somesite/ #somesite's files in here
/var/www/foobar/ #foobar's files in here

我应该如何组织这样的设置?将主站点的文件与虚拟主机站点的目录混合在一起似乎不合适,而且很混乱。我考虑过将我的“主”站点放入 webroot 中的自己的目录中(如上面的“somesite”和“foobar”),但访问我的 IP 地址的人将获得没有任何站点文件的 web root。我应该这样做,然后将任何内容重定向到主 IP 到“主”站点的目录吗?也许使用 htaccess?也许在 apache 配置中的某个地方?

您将如何处理这个问题?


我最终做了什么(感谢以下建议,它们都很有帮助)...

以下是配置文件(/etc/apache2/sites-enabled/default)原来的内容:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
<Directory /var/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

将其更改为:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

DocumentRoot /var/www/mysite/public
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
<Directory /var/www/mysite/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

我能够访问“mysite.com”(我已将公共文件从public目录中提供出来,因此我可以将一些系统文件提升一级,而不能通过网络访问)

然后,我在 next.mysite.com 上建立了另一个网站,创建了一个新的配置文件,如下/etc/apache2/sites-enabled/nextconfig所示:

<VirtualHost *:80>
DocumentRoot /var/www/next
<Directory "/var/www/next">
allow from all
Options +Indexes
</Directory>
ServerName next.mysite.com
</VirtualHost>

答案1

将“主”站点也放在子目录中/var/www,并更改 Apache 配置以反映其新位置。

答案2

你不必混合它。一点也不用。

将虚拟主机目录放在/var/vh1 /var/vh2等等。不需要全部放在/var/www

一个例子:

Listen 80

# This is the "main" server running on 172.20.30.40
ServerName server.domain.com
DocumentRoot /www/mainserver

# This is the other address
NameVirtualHost 172.20.30.50

<VirtualHost 172.20.30.50>
DocumentRoot /www/example1
ServerName www.example.com

# Other directives here ...

</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example.org

# Other directives here ...

</VirtualHost>

我从阿帕奇页面本身。因此它相当可靠。

答案3

我个人认为你应该/var/Www/main为你自己的网站创建一个文件夹。这样更容易跟踪。

只需为您的主站点创建一个虚拟主机并将其指向新文件夹。

相关内容