Como lidar com um site principal mais múltiplos virtualhosts em um servidor

5

Eu tenho uma instalação padrão do Ubuntu. A raiz da web do Apache é / var / www.

Eu quero hospedar meu site "principal" e um punhado de outros.

Normalmente eu colocaria os arquivos mysite.com diretamente na raiz da web. No entanto, se eu quiser hospedar vários sites, parece que ele pode ficar confuso. Parece que eu acabaria com uma estrutura como:

Arquivos do meu site "principal":

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

etc ...

e depois os meus sites virtuais como:

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

Como devo organizar essa configuração? Misturar arquivos do site principal com diretórios para sites de hosts virtuais parece errado e confuso. Pensei em colocar o meu site "principal" em seu próprio diretório no webroot (como "somesite" e "foobar" estão acima), mas as pessoas que visitavam meu endereço IP obtinham a raiz da web sem nenhum arquivo de site. Devo fazer isso e, em seguida, redirecionar qualquer coisa para o IP principal para o diretório do site "principal"? Talvez com o htaccess? Talvez na configuração do apache em algum lugar?

Como você abordaria isso?

O que acabei fazendo (graças às sugestões abaixo, todas úteis) ...

Aqui está o que o arquivo de configuração ( /etc/apache2/sites-enabled/default ) tinha originalmente:

<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>

Alterando para:

<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>

Consegui receber visitas para ir ao "mysite.com" (tenho os arquivos públicos que saíram do diretório public para que eu possa ter alguns arquivos de sistema em um nível e não acessíveis pela Web)

Eu então configurei outro site no next.mysite.com criando um novo arquivo de configuração em /etc/apache2/sites-enabled/nextconfig que se parece com:

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

3 respostas

2

Coloque também o site "principal" em um subdiretório de /var/www e altere sua configuração do Apache para refletir sua nova localização.

    
por 27.07.2012 / 23:37
3

Você não precisa mixar. Nem um pouco.

Coloque o diretório do host virtual em /var/vh1 /var/vh2 e assim por diante. Não é necessário colocar todos eles em /var/www

Um exemplo:

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>

Eu peguei da página Apache . Então é bem confiável.

    
por 27.07.2012 / 23:38
1

Pessoalmente, acho que você deve criar uma pasta /var/Www/main para seu próprio site. É mais fácil acompanhar isso.

Basta criar um host virtual para seu mainsite e apontá-lo para a nova pasta.

    
por 27.07.2012 / 23:57