Saudações a todos que desejam prosseguir com a capacitação no melhor servidor http de todos os tempos! Hoje continuamos nosso tutorial de apache com foco em uma sessão simples, porém vital para o funcionamento da ferramenta, os virtualhosts.
VirtualHosts são domínios virtuais configurados no apache, para que o mesmo servidor possa responder por diferentes domínios. Através das tags <VirtualHost> e </VirtualHost> no arquivo de configuração, determinaremos qual o comportamento do apache para cada domínio.
Vamos colocar a mão na massa.
Como não possuímos um servidor DNS em nossa máquina virtual, vamos adicionar as seguintes entradas no arquivo hosts, domain1.com.br e domain2.com.br. Para fazer isso, vamos editar o arquivo de hosts:
vim /etc/hosts
Adicionamos as entradas :
127.0.0.1 domain1.com.br domain2.com.br
Basta salvar o arquivo e sair. Para testar, podemos pingar os domínios:
ping domain1.com.br ping domain2.com.br
Se o ping respondeu, o ambiente já está OK. Vamos partir para a configuração do apache.
O arquivo de configuração principal do apache é o httpd.conf, vale a pena dar uma estudada geral neste arquivo e nos exemplos que temos comentados nele, pois é uma ótima fonte de aprendizado.
Vamos editar o arquivo httpd.conf
vim /etc/httpd/conf/httpd.conf
Precisamos localizar no arquivo a linha responsável pela ativação dos virtualhosts e retirar o comentário:
NameVirtualHost *:80
Examinando um pouco mais o arquivo de configuração, encontramos algumas linhas abaixo um exemplo perfeito de virtualhost:
#<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot /www/docs/dummy-host.example.com # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost>
Basta retirar o comentário deste exemplo, e adequá-lo aos nossos domínios:
<VirtualHost *:80> ServerAdmin admin@domain1.com.br DocumentRoot /var/www/html/domain1 ServerName domain1.com.br ErrorLog /var/log/httpd/domain1_error CustomLog /var/log/httpd/domain1-access_log common </VirtualHost> <VirtualHost *:80> ServerAdmin admin@domain2.com.br DocumentRoot /var/www/html/domain2 ServerName domain2.com.br ErrorLog /var/log/httpd/domain2_error CustomLog /var/log/httpd/domain2-access_log common </VirtualHost>
Podemos examinar que foram criados dois virtualhosts diferentes, um respondendo pelo domínio domain1.com.br e outro respondendo pelo domain2.com.br. Cada virtualhost aponta para um document root diferente, e também possui logs separados dos arquivos padrão do apache, que são o access_log e o error_log.
Agora precisamos testar nossa configuração! Para isso, vamos criar fisicamente os document root no servidor:
mkdir /var/www/html/domain1 mkdir /var/www/html/domain2
E vamos popular estes diretórios com arquivos index diferentes:
echo "domain1" > /var/www/html/domain1/index.html echo "domain2" > /var/www/html/domain2/index.html
Feito isto, precisamos de um passo muito importante e que muitas vezes é esquecido pelos administradores, rodar um configtest:
service httpd configtest
Se o resultado for OK, podemos prosseguir, senão, revise sua configuração pois existe algum erro na mesma e, neste caso, o apache não conseguirá recarregar, resultando em indisponibilidade do serviço.
Para recarregar o apache:
service httpd reload
Agora tudo que precisamos fazer é abrir o Firefox da nossa máquina virtual, e testar as configurações no navegador:
Revisando, na parte de hoje do tutorial aprendemos a configurar os virtualhost para que um mesmo servidor apache possa responder por vários domínios. Não deixem de conferir a parte seguinte do tutorial, onde aprenderemos um pouco sobre mod_ssl, fazendo o apache trabalhar sobre https.
Também gostaria de lembrar que possuímos uma máquina virtual criada para este treinamento. Caso você não o tenha feito, leia também:
Até a próxima!
Olá Fábio,
Quando eu rodo o configtest tenho o seguite warn:
[root@localhost ~]# service httpd configtest
[Tue Mar 06 15:00:40 2012] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
Syntax OK
O resultado é que só vejo a página do domain1 no firefox, independentemente do endereço que testo (domain1.com.br ou domain2.com.br).
Onde está o erro?
Att Sergio.
CurtirCurtir
Sergio,
O que está acontecendo provavelmente é algum erro no virtualhost do domain2.com.br.
O domain.com.br, como é o primeiro virtualhost, torna-se o padrão. Caso você chame por algum dominio pelo qual o apache não está respondendo corretamente, ele vai te redirecionar para o vh default, no caso, o domain1.com.br
Recomendo também revisar o conteúdo dos arquivos index.html, para ter certeza que eles não estão com os conteúdos iguais.
Estou a disposição!
CurtirCurtir
Achei!
Faltou descomentar a linha “NameVirtualHost *:80” do httpd.conf.
Obrigado.
CurtirCurtir
Quando voce vai falar de apache com selinux?
CurtirCurtir
Juarez, iremos abordar SELinux no tópico sobre segurança. Mas como é um pouco mais avançado, vai ser lá para a parte 6 ou 7.
Obrigado pela visita!
CurtirCurtir
Valeu Fabio, estarei aguardando ansiosamente!
Uma pergunta: vi que você é RHCE, onde você fez a prova? É muito difícil?
Grande abraço!!
CurtirCurtir
Juarez,
A prova RHCE é focada em serviços e é bem chatinha sim. Tem a prova pré-requisito anterior que é a RHCSA que é focada em administração e um pouco mais light, mas as duas são práticas e o tempo é curto.
Fiz as provas na própria RedHat, em São Paulo capital.
Obrigado pela visita!
CurtirCurtir
Excelente tutorial. Gostaria de saber se voce vai abordar sobre WebDav com multi-conexoes.
CurtirCurtir
Oi Fábio, quando você pretende publicar a parte 3 deste tutorial?
CurtirCurtir
Sergio, esta semana esta um pouco corrida, mas acredito que no máximo segunda ou terça o tutorial esteja no ar!
Obrigado pela visita
CurtirCurtir
Verdade heim….vicia e depois esconde o pó…huahuahua
CurtirCurtir
Obrigado pelas respostas Fabio! Ainda sobre a prova, você fez algum tipo de treinamento? Sabe dizer mais ou menos o que cai na prova? O que você achou mais difícil?
Abraço!
CurtirCurtir