A configuração do virtualhost do Apache sempre falha após a reinicialização

2

Basta configurar um servidor web apache no Debian 6 e adicionar este seguinte virtualhost:

<VirtualHost 123.45.67.89:80> 
   ServerAdmin [email protected] 
   ServerName mysite.com 
   ServerAlias www.mysite.com 
   DocumentRoot /srv/www/mysite.com/public_html 
   ErrorLog /srv/www/mysite.com/logs/error.log 
   CustomLog /srv/www/mysite.com/logs/access.log combined 
</VirtualHost>

E eu o habilito (o vhost padrão também está habilitado):

a2ensite mysite.com 

Recarregue:

/etc/init.d/apache2 reload 

Meu / etc / hosts é o seguinte:

127.0.0.1      localhost.localdomain   localhost 
123.45.67.89   myhost.mysite.com       myhost

E então testei acessando meusite.com e www.mysite.com . Tudo funciona bem neste momento.

O problema é que, toda vez que eu reinicio, não consigo mais acessar meu site. Não funciona com mysite.com e www.mysite.com .

Após mexer e monitorar o log, parece que, após a reinicialização, o apache sempre procura arquivos em / etc / apache2 / htdocs . Que não é especificado em nenhum arquivo de configuração.

A única maneira de fazer com que funcione novamente após a reinicialização é emitindo /etc/init.d/apache2 reload .

Alguma sugestão?

Obrigado antecipadamente.

[UPDATE 1]

Este é o conteúdo de / etc / apache2 / sites-enabled /

lrwxrwxrwx 1 root root 26 May  4 13:41 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 29 May  4 11:12 mysite.com -> ../sites-available/mysite.com

E esta é a última linha do /var/log/apache2/error.log logo após a inicialização

[Wed May 04 13:43:17 2011] [notice] caught SIGTERM, shutting down
[Wed May 04 13:43:37 2011] [notice] Apache/2.2.16 (Debian) configured -- resuming normal operations

Como posso ter certeza de que o apache está iniciando na inicialização? Emissão:

update-rc.d apache2  defaults

A saída será:

update-rc.d: using dependency based boot sequencing

Devo colocar /etc/init.d/apache2 reload dentro de /etc/rc.loca l? (apenas para se certificar de que é executado)

[UPDATE 2]

Eu apenas fiz algo que acho que resolveu o problema. O que eu fiz foi mudar de volta:

NameVirtualHost 123.45.67.89:80

para

NameVirtualHost *:80

Em seguida, altere também todos os arquivos vhost de:

<VirtualHost 123.45.67.89:80>

para

<VirtualHost *:80>

Depois disso, simplesmente funciona. Eu tentei reiniciar 2-3 vezes e ainda funciona. Eu não sei se esse é um bom cenário.

A razão pela qual eu uso o endereço IP em primeiro lugar é porque o wiki / doc / library do meu provedor de VPS disse isso.

Então, acho que vou fechar o tópico por enquanto e fazer mais testes.

Obrigado pessoal.

    
por nightrod 04.05.2011 / 15:25

2 respostas

0

Você pode postar o seguinte:

Conteúdo de / etc / apache2 / sites-enabled /

Conteúdo do /var/log/apache2/error.log durante a reinicialização (uma vez que você tenha iniciado na parte inferior do log, deve ter os logs de inicialização.

Um nível muito baixo, não resolvendo realmente a solução do problema, seria apenas

put /etc/init.d/apaceh2 reload inside /etc/rc.local.

Finalmente, você tem certeza de que o apache está iniciando na inicialização? Execute o seguinte

update-rc.d apache2  defaults
    
por 04.05.2011 / 15:32
0

A solução é interessante, nightrod.

Minha conjetura é que no momento em que o Apache inicia seu IP ainda não está definido - seja porque a eth * está inativa ou porque você está usando DHCP estático e está esperando por uma resposta do servidor DHCP, etc. Então o Apache ( conjecture segue) não carrega a definição VirtualHost ou a diretiva NameVirtualHost, pois o IP não está configurado no servidor e, portanto, possivelmente não pode ser igualado. Eu estou supondo que ainda liga a porta como *: 80 porque o dispositivo de loopback é disponível e assim pode razoavelmente começar. O resultado é que depois de trazer o eth * up você tinha o apache escutando, mas não o VirtualHost configurado.

    
por 04.05.2011 / 17:44