Apache - Compartilhamento de Recursos - VirtualHosts

O presente artigo tem como objetivo principal elucidar brevemente o leitor a respeito da diretiva "VirtualHost" do Apache Web Server e possibilidade de configuração de múltiplos sites/sistemas usando uma única instalação da ferramenta, possibilitando o uso de domínios ou subdomínios distintos sem o envolvimento de outras ferramentas e soluções. Um exemplo simples de um ambiente assim, é a hospedagem da versão de desenvolvimento e da versão de produção/versão "final" de um site ou sistema em um único servidor usando endereços DNS diferentes.

[ Hits: 7.779 ]

Por: Lucas Roberto Daldegan em 09/05/2018 | Blog: http://lucasroberto.com


Diretrizes do Apache, VirtualHost



Conforme visto anteriormente, as configurações de site no Apache se dão por meio do uso das diretrizes de configuração da ferramenta. O pessoal da Apache Software Foundation disponibiliza a documentação destas no seguinte link: https://httpd.apache.org/docs/2.4/mod/directives.html

Dentre todas as diretrizes disponíveis, vamos nos atentar à VirtualHost, apresentada anteriormente, e à Directory, que é usada para determinar configurações em um diretório específico.

A diretriz 'VirtualHost' deve usada sempre que for referenciar um endereço de site, ou seja, um endereço DNS. Para cada configuração de site é necessário criar um arquivo de configuração para o mesmo. "Mas, Lucas, não só 'jogar' a pasta lá em '/var/www/html' e acessar usando 'ip/site'?" Isso funciona e dependendo da ocasião, isso atende bem, mas, em nosso caso, só adicionar as pastas não bastaria.

Continuando, precisamos criar os arquivos 'biblioteca.conf' e 'panificadora.conf', ambos no diretório '/etc/apache2/sites-available', assim como o arquivo de configuração default mostrado anteriormente. Um detalhe aqui é que os arquivos não precisam ter o nome do projeto que ele referencia, mas será muito mais fácil dar suporte e manutenção se estes receberem o mesmo nome que o seu site/sistema, tendo em vista que você pode configurar quantos sites o hardware do seu servidor suportar processar. Criados os arquivos, o conteúdo destes deverá ficar assim:

biblioteca.conf:

<VirtualHost *:80>
        ServerName biblioteca.empresa.local

        <Directory /var/www/html/biblioteca/public>
                AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

panificadora.conf:

<VirtualHost *:80>
        ServerName panificadora.empresa.local

        <Directory /var/www/html/panificadora>
                AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Onde:
  • ServerName -> Nome do site/sistema, que pode ser o mesmo nome do servidor. Aqui é configurado o DNS que vai referenciar o servidor na URL;
  • panificadora.empresa.local / biblioteca.empresa.local -> DNS que será usado;
  • <Directory /var/www/html/biblioteca> ou <Directory /var/www/html/panificadora> -> É a diretriz que referencia qual é o diretório do site/sistema. Nela devem conter as 'regras' para aquele diretório;
  • AllowOverride -> Diretriz que possibilita a reescrita de configurações para o diretório especificado usando, por exemplo, um arquivo '.httpaccess' na raiz do diretório em questão.

Obs.: o DNS informado deve estar devidamente registrado para o IP do servidor.

Feito isto, precisamos habilitar estas configurações, tendo em vista que isto não é feito automaticamente. Para tal, precisamos usar os comandos:

# a2ensite biblioteca.conf
# a2ensite panificadora.conf


Você será notificado se tudo correu bem e, neste caso, será orientado a recarregar o serviço do Apache usando o comando

# service apache2 reload

Obs.: caso queira desabilitar uma configuração de site use o comando 'a2dissite arquivo_de_configuração', por exemplo: 'a2dissite biblioteca.conf'. Da mesma forma, o serviço do Apache deverá ser recarregado.

Um detalhe bem interessante sobre o funcionamento da ferramenta pode ser observado agora. Se você listar os arquivos contidos no diretório '/etc/apache2/sites-enabled', verá links para os arquivos de configuração criados em '/etc/apache2/sites-available'. "Lucas, consigo fazer esse processo manualmente então?" Sim, como boa parte das coisas que podemos fazer no Linux.

Neste ponto, parte da solução já foi implementada. Já é possível acessar os sites de acordo com o endereço informado conforme o exemplo:
  • Se o usuário indicar 'http://bliblioteca.empresa.local', acessará o site/sistema 'biblioteca' em '/var/www/html/biblioteca/public';
  • Se o usuário indicar 'http://panificadora.empresa.local', acessará, de forma semelhante, 'panificadora' em '/var/www/html/panificadora'.

Mas, por exemplo, se eu quiser acessar ainda, um outro site/sistema ou um subsistema do meu projeto referenciando com '/subsistema' no final de uma URL específica? Exemplificando pra ficar mais claro:

Temos os sites 'biblioteca' e 'panificadora', mas também tenho instalado o PhpMyAdmin no servidor e quero acessar ele usando "caminhos" distintos para o sistema 'biblioteca', até para não usar o padrão '/phpmyadmin'.

Estes "caminhos" podem ser referenciados nos arquivos de configuração usando a diretriz 'Alias' do Apache. Sua implementação é extremamente simples. Ainda no exemplo, adotemos que para acessar o PhpMyAdmin usando o endereço do site biblioteca eu queria usar o alias "bibliotecaAdm", o arquivo de configuração deverá ficar assim:

biblioteca.conf:

<VirtualHost *:80>
        ServerName biblioteca.empresa.local

        Alias /bibliotecaAdm /usr/share/phpmyadmin

        <Directory /usr/share/phpmyadmin>
                AllowOverride All
        </Directory>

        <Directory /var/www/html/biblioteca/public>
                AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Desta forma, após salvar o arquivo e recarregar novamente o serviço do Apache, será possível acessar a ferramenta PHPMyAdmin usando o endereço 'http://biblioteca.empresa.local/bibliotecaAdm'. Fácil, não?

Obs.: neste caso específico da ferramenta PHPMyAdmin também é possível alterar essa configuração de alias em '/etc/apache2/config-enabled/phpmyadmin.conf', porém, muito cuidado!

Conclusão

Este artigo é mais um que descreve uma das várias formas de se administrar recursos e ferramentas no Linux e é bem provável que seja possível realizar as mesmas configurações de forma diferente e até, implementando soluções diferentes, como mencionado no início do artigo.

A minha apreciação por programação assim como a liberdade prevista pela "Filosofia do Software Livre" se dá pelo infinito número de possibilidades para solucionar e facilitar tarefas cotidianas.

Esta foi a forma mais simples que encontrei - com algumas horas de pesquisa - para solucionar o "problema" relatado no início do artigo. Se você conhece uma solução melhor ou notou que esqueci algum detalhe, deixe seu comentário, colabore!

O conhecimento cria oportunidades e jamais deve ser desprezado!!!

Até logo!

Página anterior    

Páginas do artigo
   1. Instalação e Configurações do Apache
   2. Diretrizes do Apache, VirtualHost
Outros artigos deste autor

Automatizando relatórios GLPI usando PHP e Shell Script

PROXMOX Overview - Virtualização Leve e Eficiente

Leitura recomendada

soundKonverter - o maravilhoso conversor de áudio

Snort - Gerenciamento de redes

NXServer - Uma solução em remote desktop

Conhecendo o Slpkg (gerenciador de pacotes para Slackware)

Slax - O seu Slackware de bolso

  
Comentários
[1] Comentário enviado por jeffersonmartins em 11/05/2018 - 11:23h

Parabéns pelo artigo!!

Talvez uma dica interessante para alguns é separar os logs por cada domínio a nível de debug:

ErrorLog "/path/projeto/logApache.log"
LogLevel debug

Assim terá um maior controle de logs sobre cada dominio apontado, seja erros de permissão e outros...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts