Todos os virtualhosts que estão servindo arquivos padrão do Apache

6

Estou tentando configurar o Apache como um servidor da Web em rede e estou usando o recurso de sites disponíveis / sites ativados, em vez de apenas arquivos vhost estáticos. Eu configurei um par de VirtualHosts, todos com um DocumentRoot exclusivo, no entanto, a solicitação para todos os VirtualHosts apenas serve o "Está funcionando!" arquivo padrão. Eu não posso para a vida de mim descobrir por que não vai servir o conteúdo do diretório correto. Aqui está o conteúdo dos arquivos da diretriz virtualhost, me avise se eu precisar postar mais.

default (observe que o apache renomeia isso para 000-default nos sites ativados, por isso não é um problema de compra)

NameVirtualHost *:80
ServerName emp

<VirtualHost *:80>
 ServerAdmin webmaster@localhost
 ServerName emp
 DocumentRoot /var/www

 <Directory />
  Options FollowSymLinks
  AllowOverride None
 </Directory>
 <Directory /var/www/>
  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 /var/log/apache2/error.log

 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn

 CustomLog /var/log/apache2/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>

billmed

<VirtualHost *:80>
 ServerName billmed.emp
 ServerRoot /home/empression/Projects/billmed/web/httpdocs

 <Directory "/home/empression/Projects/billmed/web/httpdocs">
  Order Allow,Deny
  Allow from All
 </Directory>
</VirtualHost>

Observe que eu tenho zonas DNS para emp e billmed.emp , além de entradas em / etc / hosts. Meu objetivo final é configurar essa máquina como um servidor da Web interno com um tld personalizado (emp), mas o progresso foi muito lento.

Mais algumas informações

/etc/hosts entradas

#custom-sites
192.168.1.100 emp
192.168.1.100 billmed.emp

ports.conf

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

#NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

ls -l sites-enabled

empression@empression-server1:/etc/apache2/sites-available$ ls -l ../sites-enabled/
total 0
lrwxrwxrwx 1 root root 26 2010-05-22 12:36 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 26 2010-05-22 13:33 billmed -> ../sites-available/billmed

Atualização 2010-06-16

Eu não pude trabalhar nisso por algumas semanas, mas tentei todas as soluções postadas abaixo a partir de agora, e ainda não consegui corrigir o problema, então adicionei uma recompensa.

Atualizar

Aqui está a saída de apache2ctl -t -D DUMP_VHOSTS

empression@empression-server1:~$ apache2ctl -t -D DUMP_VHOSTS
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Mon Jul 12 14:29:01 2010] [warn] NameVirtualHost 127.0.0.1:80 has no VirtualHosts
VirtualHost configuration:
192.168.1.100:80       is a NameVirtualHost
         default server billmed.emp (/etc/apache2/sites-enabled/billmed:1)
         port 80 namevhost billmed.emp (/etc/apache2/sites-enabled/billmed:1)
Syntax OK
    
por tj111 22.05.2010 / 20:13

9 respostas

8

No arquivo de definição de host virtual, corrija a linha abaixo.

ServerRoot /home/empression/Projects/billmed/web/httpdocs para DocumentRoot /home/empression/Projects/billmed/web/httpdocs

Use a diretiva DocumentRoot para servir o host virtual. aqui está o link para mais informações link

Atualize sua definição de virtualhost (/ etc / apache2 / sites-enabled / billmed) da seguinte forma,

<VirtualHost *:80>
 ServerName billmed.emp
 DocumentRoot /home/empression/Projects/billmed/web/httpdocs

 <Directory "/home/empression/Projects/billmed/web/httpdocs">
  Order Allow,Deny
  Allow from All
 </Directory>
</VirtualHost>
    
por 22.05.2010 / 21:59
5

@yasin está correto; você precisa ter seu VirtualHosts especificar um DocumentRoot ('... o diretório a partir do qual O httpd servirá arquivos ... ') e não um ServerRoot (' ... o diretório em que o servidor reside.Em geral, ele conterá os subdiretórios conf / e logs / ... »<< p>

Pode haver outro problema também , mas essa parte está definitivamente errada.

    
por 18.06.2010 / 06:44
2

Qual é o seu mapeamento em /etc/hosts ou na configuração do DNS? Tente substituir * por 127.0.0.1 , quero dizer <VirtaulHost 127.0.0.1:80> e NameVirtualHost 127.0.0.1:80 . O que está no seu /etc/apache2/ports.conf ? Verifique se todos os links simbólicos estão no lugar. por exemplo: /etc/apache2/sites-enabled/<yoursite.emp>

EDITAR:

Tente isto: Em ports.conf :

NameVirtualHost 127.0.0.1:80
Listen 127.0.0.1:80

NameVirtualHost 192.168.1.100:80
Listen 192.168.1.100:80

Em 000-default : <VirtualHost 127.0.0.1:80> Em billmed : <VirtualHost 192.168.1.100:80

    
por 22.05.2010 / 20:34
2

Eu adicionaria máscara em vez de IP concreto ao arquivo host:

#/etc/hosts/

# custom-sites
127.0.0.1 emp
127.0.0.1 billmed.emp
    
por 22.05.2010 / 22:38
2

Altere o ServerRoot para DocumentRoot no arquivo billmed .

Adicione / Mova sua configuração vhost billmed em / etc / apache2 / sites-available /.

Em seguida, ative o vhost billmed assim:

sudo a2ensite billmed

Reinicie o apache:

sudo service apache2 restart

Editar: alterou o a2enmod para o a2ensite, erro de digitação estúpido:)

    
por 19.06.2010 / 15:38
1

Como parece que você já tentou de tudo, certifique-se de incluir a pasta habilitada para sites do arquivo principal de configuração do apache.

Além disso, se você desabilitar tudo, menos o host virtual faturado, poderá obtê-lo nos arquivos do servidor desse diretório?

    
por 16.06.2010 / 20:01
0

Existe alguma diretiva Alias que aponte / para / var / www que esteja na configuração global ao invés de estar dentro de uma seção virtualhost?

    
por 16.06.2010 / 20:08
0

NameVirtualHost está comentado.

Se você estiver configurando contêineres para cada um deles e usando o ServerName / ServerAlias, precisará remover o comentário, reinicie o apache.

    
por 23.06.2010 / 03:37
0

Você colocou o HUP em apache depois de criar o novo arquivo de site, para que o daemon em execução relesse sua configuração?

    
por 15.07.2010 / 10:01