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

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

我想主办我的“主要”网站和一些其他人。

通常我会把mysite.com的文件放在web根目录下。 但是,如果我想承载多个网站,似乎可能会变得混乱。 看来,我最终会得到一个像这样的结构:

我的“主”网站的文件:

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

等等…

然后我的虚拟网站如:

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

我应该如何组织这样的设置? 将主站点的文件与虚拟主机站点的目录混合似乎是错误的和混乱的。 我想把我的“主”网站放到webroot的自己的目录(如上面的“somesite”和“foobar”),但是访问我的IP地址的人会得到没有任何站点文件的web根目录。 我应该这样做,然后将任何东西redirect到主要的IP到“主”网站的目录? 也许与htaccess? 也许在某个地方的apacheconfiguration?

你将如何处理这个?


我最终做了什么 (感谢下面的build议,所有这些都很有帮助)…

以下是configuration文件( /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”(我有从公共目录服务的公共文件,所以我可以有一些系统文件上一级,而不是networking访问)

然后,我通过在/etc/apache2/sites-enabled/nextconfig中创build一个新的configuration文件,在next.mysite.com上设置另一个站点,如下所示:

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

将“main”站点放在/var/www的子目录中,并更改Apacheconfiguration以反映其新位置。

你不必混合它。 没有一点。

将虚拟主机目录置于/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> 

我从Apache页面本身。 所以它非常可靠。

我个人认为你应该为自己的网站创build一个文件夹/var/Www/main 。 那么跟踪一下就比较容易了。

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