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