Subdomínios no Apache

De um tempo pra cá eu tenho sido requisitado a criar subdomínios para diversos projetos que tem surgido lá na instituição que trabalho, como eu nunca tinha feito isso precisei fazer umas pesquisas e descobri que a parte principal é bem simples.

Configurando o Apache

Como estou usando o Apache 2 o procedimento torna-se até mais simples devido a estrutura modular do arquivo de configuração que ao invés de ser um monstrengo foi dividida em vários arquivinhos menores.

A primeira coisa a fazer é entrar no diretório /etc/apache2/sites-avaliable e criar um arquivo com o nome do seu subdomínio – não é obrigatório esse nome mas facilita quando você tiver vários subdomínios.

Por exemplo para um subdomínio chamado “projetos” você poderia simplesmente fazer:

# vi /etc/apache2/sites-avaliable/projetos

O conteúdo deste arquivo pode ser o que segue abaixo (mude as informações conforme necessário):

<VirtualHost *>
ServerAdmin webmaster@meudominio.gov.br
DocumentRoot /var/www/projetos
ServerName projetos.meudominio.gov.br
ServerAlias *.projetos.meudominio.gov.br
ErrorLog /var/log/apache2/projetos-error.log
CustomLog /var/log/apache2/projetos-access.log combined
</VirtualHost>

Uma vez que tenha digitado e salvo o arquivo, crie um link para este arquivo em /etc/apache2/sites-enabled com um número maior do que os que já estiverem lá.

Por exemplo:

# ln -s /etc/apache2/sites-avaliable/projetos /etc/apache2/sites-enabled/054projetos

Agora você pode reiniciar o Apache para aplicar as alterações:

# invoke-rc-d apache2 restart

Configurando o seu DNS

Configure o seu DNS para que este subdominio seja redirecionado para o IP desta máquina. No caso de usar o Bind como DNS, basta duas linha como essas:

www.projetos.meudominio.gov.br    IN    A    201.201.201.201
projetos.meudominio.gov.br    IN    A    201.201.201.201

Claro que dependendo da sua configuração isso poderá ser diferente, por exemplo eu poderia ter um servidor especifico para subdomínios chamado www11 e ali criar CNAMES para cada subdomínio, assim:

www.meudominio.gov.br    IN    A    201.201.201.201
projetos            CNAME        www.meudominio.gov.br
www.projetos            CNAME        www.meudominio.gov.br
estatisticas            CNAME        www.meudominio.gov.br
www.estatisticas            CNAME        www.meudominio.gov.br

Dessa forma o bind mandará a requisição para o servidor 201.201.201.201 e o Apache se encarregará de mandar o usuáio para a página certa.

Referências

  • http://httpd.apache.org/docs/2.0/vhosts/name-based.html
  • http://www.techmongrel.com/05/setting-up-a-virtual-host-using-apache-2-on-ubuntu-710/
  • Linux Magazine 23, “Forte Apache” por  Jorge Pereira, pág. 32-35 – http://www.linuxmagazine.com.br

8 thoughts on “Subdomínios no Apache”

  1. Olá, estou encontrando dificuldades com subdominios e gostaria de uma ajuda.

    Trabalho na Prefeitura de minha cidade e fiquei encarregado de colocar o site dela no ar, até aí tudo bem. Pedi à ETICE detentora do dominio CE.GOV.BR para liberar e passei os DNS 1 e 2 do provedor aqui da cidade. O site já esta com o endereço exemplo:
    prefeitura.ce.gov.br funcionando perfeitamente.

    Tambem existe a Caixa de Previdencia da Prefeitura que quer colocar o site no ar. Pedi a ETICE para liberar um subdominio caixa.prefeitura.ce.gov.br, e ela disse que isso só pode ser feito pelo provedor onde esta o site da Prefeitura.

    Essa Caixa de Previdencia quer hospedar no UOLHOST com o endereço:
    caixa.prefeitura.ce.gov.br, pois ela tem que mostrar as contas aos funcionários publicos (assim como uma empresa governamental).
    O provedor local disse que não consegue colocar mais de um redirecionamento para o UOL para o endereço caixa.prefeitura.ce.gov.br.

    Como se faz esse redirecionamento de um subdominio (caixa) de um subdominio (prefeitura) no provedor local para o UOLHOST?

    Onde tem que ser feita essa configuração para os ns1.dominios.uol.com.br, ns2.dominios.uol.com.br e ns3.dominios.uol.com.br. para o site caixa.prefeitura.ce.gov.br?

    Não sei se fui claro, mas agradeço se me ajudar, Carlos.

  2. @Carlos ,

    Vamos por parte para que você possa entender a ideia e assim, se os meus exemplo não servirem de nada, pelo menos as explicações teóricas poderão ser úteis 😉

    Em uma definição simplória, o DNS é uma base de dados hierárquica, onde cada servidor DNS é responsável por um ramo desta árvore. Quando uma requisição DNS é solicitada ela é resolvida “nó” por “nó”, descendo o ramo solicitado, até chegar no servidor desejado.

    De forma simplificada, neste seu caso “.br” é resolvido nos servidores raiz, “.gov” pelos servidores do NIC-br, “.ce” pelos servidores da ETICE e “.prefeitura” é resolvida por você, ou melhor, pelos servidores da UOLHOST – empresa que você contratou.

    Como você é o administrador do domínio “prefeitura.ce.gov.br”, é perfeitamente possível criar subdomínios, desde que o sistema de gerenciamento do DNS do seu provedor permita isso (a maioria permite, mas não conheço como funciona da UOLHOST). Uma vez que “prefeitura.ce.gov.br” é “jogada” para os servidores da UOLHOST resolverem, basta ter acesso ao sistema de gerenciamento do DNS que você cria todos os subdomínios que desejar.

    Em resumo é isso, você precisa configurar “prefeitura” e “caixa.prefeitura” no seu DNS (na uolhost) para resolver estes endereços para o seu servidor Web. Após isso é preciso ter acesso a configuração do seu servidor web para indicar qual pasta deve ser acessada de acordo com o endereço digitado (tal como mostrei neste artigo), caso isso não seja feito, ao digitar “caixa.prefeitura” o visitante vai para a raiz do seu site que neste caso é o conteúdo de “prefeitura”.

    Acho que é isso, não sei se consegui ser claro o o suficiente. Qualquer dúvida avise.

    Abraço.

  3. Caro Welington, compreendi perfeitamente a sua dica. E irei passar ao provedor da cidade que já hospeda o site da prefeitura que é http://www.prefeitura.ce.gov.br, pois eu não consigo fazer isso pelo cPanel, e esse provedor da cidade na realidade não tem experiência com hospedagem,só com internet a rádio, daí a dificuldade deles configurarem um subdominio, agora para o Uolhost, que seria o http://www.caixa.prefeitura.ce.gov.br, para os servidores DNS 1, 2 e 3 do Uolhost.
    Valeu pela dica e um Bom Natal e Feliz e Próspero 2010.

    Carlos.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.