O vache_alias e o NameVirtualHost do Apache podem coexistir no mesmo servidor / ip?

3

Eu tenho um servidor de desenvolvimento para programadores PHP configurar e executar por algum tempo agora. O sistema é Debian com o pacote padrão do Apache:

# apache2 -v
Server version: Apache/2.2.9 (Debian)
Server built:   Dec 11 2010 18:58:55

Eu configurei cerca de 30 VirtualHosts baseados em nome, um para cada projeto e para cada desenvolvedor. Eu faço a configuração com scripts, mas agora eu tenho que adicionar cerca de 15 novos projetos, todos eles com estrutura de diretório padrão, então eu pensei, eu vou usar mod_vhost_alias

Eu tenho minha configuração semelhante a esta:

NameVirtualHost *:80
#Default vhost
<VirtualHost *:80>
  DocumentRoot /var/www/404
  ServerName dev.example.com
  ErrorLog /var/log/apache2/404.error_log
  TransferLog /var/log/apache2/404.access_log
        <Directory "/var/www/404">
                allow from all
                Options Indexes Includes
                AllowOverride All
        </Directory>
</VirtualHost>
#this entry is repeated many times 
#with different server names, document roots 
# and other differences, bu basics stay the same
<VirtualHost *:80>
  DocumentRoot /var/www/crm
  ServerName crm.dev.example.com
  ErrorLog /var/log/apache2/crm.error_log
  TransferLog /var/log/apache2/crm.access_log
        <Directory "/var/www/crm">
                allow from all
                Options Indexes Includes
                AllowOverride All
        </Directory>
</VirtualHost>

# I added  Vhost_alias virtaul host today, at the end of the config

<VirtualHost *:80>
    # This is for pages similar to some-page.pl.web.example.com
    UseCanonicalName Off
    ServerAlias *.web.dev.example.com
    VirtualDocumentRoot /var/www/web/%-4+/cur
    ErrorLog /var/log/apache2/%-4+.error_log
    TransferLog /var/log/apache2/%-4+.access_log
    <Directory /var/www/%-4+>
        allow from all
        Options Indexes Includes
        AllowOverride All
    </Directory>
</VirtualHost>

O resultado é que, quando me conecto ao link , recebo o vhost padrão de / var / www Diretório / 404. O diretório /var/www/web/my-page.com/ existe e contém uma cópia da página da web real my-page.com.

O que estou fazendo de errado? Preciso de endereços IP separados para NameVirtualHost "padrão" e para vhost_alias? O que mais devo verificar?

    
por SWilk 10.02.2011 / 12:12

2 respostas

3

Sim, você pode usar NameVirtualHost e mod_vhost_alias na mesma configuração. Altere sua entrada mod_vhost_alias assim:

<IfModule mod_vhost_alias.c>
    <VirtualHost *:80>
        ServerAlias *.web.dev.example.com
        VirtualDocumentRoot /var/www/web/%-4+/cur
        ErrorLog /var/log/apache2/%-4+.error_log
        TransferLog /var/log/apache2/%-4+.access_log
        <Directory /var/www/%-4+>
            allow from all
            Options Indexes Includes
            AllowOverride All
        </Directory>
    </VirtualHost>
</IfModule>

Coloque essa entrada diretamente abaixo da linha Include conf.d/*.conf em httpd.conf (encontrada em /etc/httpd/conf/httpd.conf em sistemas RHEL) ou em um novo arquivo em /etc/apache2/conf-enabled/ para o Ubuntu.

edit: eu bloguei informações adicionais .

    
por 22.03.2011 / 12:44
1

Eu configurei baseado em VirtualDocumentRoot semelhante para subdomínios de curingas antes. É tão útil ser capaz de criar um diretório dentro do diretório pessoal de alguém - geralmente compartilhando seu diretório no Samba para que ele possa ser usado na área de trabalho do desenvolvedor - e você tenha criado um novo website - pelo menos para desenvolvimento & teste.

Quanto ao seu problema, basta colocá-los em endereços IP diferentes, sem um vhost padrão.

    
por 11.02.2011 / 00:34