Criando Virtual Hosts Dinamicamente com o apache*

Neste guia criaremos uma configuração apache para carregar de maneira “automática” novos virtual-hosts utilizando subdomínios de um domínio no seu servidor.

Caso você tenha um servidor de desenvolvimento utilizando um domínio próprio como “exemplo.com.br”, e seus projetos estejam hospedados em subdomínios desse domínio como “testes.exemplo.com.br” ou “projeto.exemplo.com.br” eh possível criar uma configuração única no apache que retira a necessidade de fazer uma configuração por subdomínio.

O primeiro passo eh desativar o SELinux ou configurar as pastas e subpastas de maneira apropriada ( a configuração correta do SELinux não esta no escopo desse guia ).

Apos desativar/configurar corretamente o SELinux, adicione o conteúdo abaixo ao final da sua configuração base do apache.


UseCanonicalName    Off
#liberando acesso para as pastas public_html
<Directory "/srv/apache/*/public_html/">
    AllowOverride All
    Order allow,deny
    Allow from all
    # Allow open access:
    Require all granted
</Directory>

 
O que essas linhas fazem eh habilitar qualquer pasta no caminho ‘/srv/apache/*/public_html/’ para serem usadas com a pasta raiz de um virtual host pelo apache

Com essas mudanças feitas agora podemos seguir e criar o virtual host principal do nosso servidor.
Crie um arquivo de configuração na pasta “/etc/apache2/sites-avaliable” se estiver utilizando Debian/Ubuntu ou “/etc/httpd/conf.d/” se estiver utilizando Centos/RHEL/Fedora com o seguinte conteúdo.


#Configuracao do dominio primario
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName exemplo.com.br
    Options +FollowSymLinks
    DocumentRoot /srv/apache/domain/public_html/
</VirtualHost>


 

O próximo passo eh adicionar outro arquivo de configuração na mesma pasta para criação “automática” dos virtual hosts


#Criando a entrada para *.exemplo.com.br
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerAlias *.exemplo.com.br
    Options +FollowSymLinks
    VirtualDocumentRoot /srv/apache/%1/public_html/
</VirtualHost>

 
Se você seguiu corretamente os passos de configuração, agora para criar um novo virtual host você somente necessita criar uma pasta em ‘/srv/apache/’ com o nome do subdomínio e contendo uma pasta public_html, por exemplo ‘/srv/apache/vhost/public_html/’ fazendo isso a pasta ficaria acessível no link link http://vhost.exemplo.com.br/

Fontes:

https://httpd.apache.org/docs/2.4/mod/mod_vhost_alias.html
https://httpd.apache.org/docs/2.4/vhosts/mass.html
https://httpd.apache.org/docs/current/mod/core.html.en
https://httpd.apache.org/docs/current/bind.html
https://httpd.apache.org/docs/current/configuring.html