O recurso de Virtual Host (Hospedagem Virtual) do Apache facilita a hospedagem de vários sites ou aplicativos da Web no mesmo servidor, cada um acessível com um nome de domínio diferente. Quando operamos o Apache como servidor Web de desenvolvimento, existem duas formas básicas de configurar mais de um site no mesmo servidor, e veremos os dois formatos aqui.
👉
IMPORTANTE!
Este conteúdo foi extraído e adaptado da documentação original do XAMPP, mas funciona com outros pacotes LAMP e também no caso da instalação dos pacotes separaramente (stand alone), ou seja, funiona em qualquer versão do Apache, inclusive no Windows e outros S.O.
A forma mais prática e rápida de hospedar muitos sites compartilhando configurações quase idênticas é usando subdomínios baseados em curingas ou "wildcards", que simplificam a manutenção e reduzem o esforço envolvido na adição de um novo host virtual.
Com subdomínios curinga, não é mais necessário editar o arquivo de configuração do Apache ou reiniciar o servidor para inicializar um novo virtual host. Em vez disso, você simplesmente precisa criar um subdiretório correspondente ao nome do subdomínio no servidor com seu conteúdo, e o Apache usará automaticamente esse diretório para atender às solicitações do subdomínio correspondente.
👉
IMPORTANTE!
Os hosts virtuais criados dessa maneira não serão acessíveis de outros sistemas, a menos que esses sistemas sejam configurados separadamente para associar os domínios personalizados usados pelos hosts virtuais com o endereço IP do servidor Web.
Vamos aos passos:
Inicie o servidor, se ainda não o fez e acesse um terminal de comandos;
Altere para o diretório de instalação do XAMPP (normalmente, "/opt/lampp"), comandando;
cd /opt/lamp
Abra o arquivo "httpd.conf" que fica no subdiretório "apache/conf/", usando um bloco de notas;
mousepad apache/conf/httpd.conf
Dentro do arquivo, localize a linha a seguir e remova o comentário removendo a cerquilha (#) no início da linha:
LoadModule vhost_alias_module modules/mod_vhost_alias.so
Salve e feche o arquivo;
Edite o arquivo "httpd-vhosts.conf" que fica no subdiretório "apache\conf\extra\" do diretório de instalação do XAMPP;
mousepad apache\conf\extra\httpd-vhosts.conf
Substitua o conteúdo deste arquivo pelas seguintes linhas:
UseCanonicalName Off
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.localhost
VirtualDocumentRoot "C:/xampp/htdocs/%1/"
</VirtualHost>
Nessa configuração, o primeiro bloco "<VirtualHost *:80>" configura como as solicitações são tratadas por padrão. O segundo bloco configura a hospedagem virtual curinga para subdomínios, de forma que as solicitações de "subdomain.localhost" sejam atendidas automaticamente pelo diretório "subdomain\" do diretório "/opt/lamp/htdocs". Em particular, observe o espaço reservado "%1", que corresponde ao nome do subdomínio da URL solicitada.
Reinicie o Apache usando o XAMPP Control Panel para que suas alterações entrem em vigor.
Neste ponto, seus subdomínios curinga estão configurados. Você pode testar isso facilmente driando dois novos subdiretórios "/opt/lamp/htdocs/app01/" e "/opt/lamp/htdocs/app02/". Dentro de cada subdiretório, crie um arquivo "index.html" e preencha-o com algum conteúdo HTML de amostra. Use conteúdo diferente para cada arquivo, para que você possa distinguir facilmente que eles estão sendo servidos em diretórios diferentes. Por exemplo:
mousepad /opt/lamp/htdocs/app01/index.html
<!-- index.html in app01 directory -->
<html>
<head></head>
<body>
<h1>Welcome to app01.localhost!</h1>
</body>
</html>
mousepad /opt/lamp/htdocs/app02/index.html
<!-- index.html in app02 directory -->
<html>
<head></head>
<body>
<h1>Hello from app02.localhost!</h1>
</body>
</html>
Às vezes, como esses domínios não existem na realidade, você também precisa mapeá-los para o endereço IP local. Se isso for necessário, abra o arquivo "/etc/hosts" em um editor de texto:
mousepad /etc/hosts
E, adicione a seguinte linha a ele:
127.0.0.1 app01.localhost app02.localhost
Você precisará fazer isso toda vez que desejar configurar um novo host virtual curinga, porque o arquivo de hosts do Windows e do Linux não oferecem suporte a entradas curinga. Para evitar essa etapa, você pode usar um servidor DNS ou um proxy DNS local que ofereça suporte a curingas e, portanto, resolva automaticamente as solicitações de *.localhost para o endereço IP local.
No windows, esse arquivo está em "C:\windows\system32\drivers\etc\hosts", mas, assim como no Linux, você não poderá editá-lo sem privilégios administrativos. Se não for administrador do Linux, você pode tentar algo como:
sudo mousepad /etc/hosts
Já no windows, você pode tentar editar o arquivo clicando com o botão direito do mouse no ícone do bloco de notas e selecionando a opção de menu "Executar como administrador", inserindo as credenciais do administrador (se necessário) e clicando em "OK" ou "Sim" para continuar. em seguida, abra normalmente o arquivo "C:\windows\system32\drivers\etc\hosts".
Neste ponto, você deve ser capaz de inserir os URLs "http://app01.localhost" ou "http://app02.localhost" na barra de endereço do seu navegador e, em seguida, deverá ver a página HTML correspondente.
Vimos que o Apache facilita a execução de vários sites ou aplicativos da Web no mesmo servidor físico usando o recurso de WildCards, porém, há uma limitação nele que é a obrigação de trabalhar com subdomínios criados dentro da pasta "htdocs". Existe outra possibilidade e o acesso a cada um usando um nome de domínio personalizado e hospedado em locais diferentes do sistema, ou seja, cada host virtual pode ser mapeado para um subdiretório diferente do servidor.
Esse recurso é especialmente útil em cenários de desenvolvimento, pois permite que os desenvolvedores isolem e acessem diferentes aplicativos usando nomes de domínio exclusivos. Por exemplo, os domínios "http://app01.localhost" e "http://app02.localhost" podem apontar para dois aplicativos separados no mesmo servidor. Ou você pode criar domínios separados, como "http://client1/", "http://client2/" e assim por diante, para vários sites de clientes hospedados no mesmo servidor.
Os hosts virtuais criados dessa maneira não serão acessíveis de outros sistemas, a menos que esses sistemas sejam configurados separadamente para associar o domínio personalizado usado pelo host virtual ao endereço IP do servidor Apache.
Vamos ver o processo de configuração de um novo host virtual com o Apache, criando e configurando um host de exemplo chamado "example.localhost" para um site PHP.
Vamos pressupor que você tenha um site PHP existente no diretório "/users/usuario/htdocs" e acessível por meio do URL "http://localhost/example".
Siga as etapas abaixo para criar um host virtual:
Altere para o diretório de instalação do XAMPP (normalmente, "/opt/lamp"), comandando no terminal;
cd /opt/lamp
Edite o arquivo "httpd-vhosts.conf" que está no subdiretório "apache/conf/extra/" usando seu editor de texto plano favorito;
mousepad apache/conf/extra/httpd-vhosts.conf
Substitua o conteúdo deste arquivo pelo seguinte:
<VirtualHost *:80>
DocumentRoot "/opt/lamp/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/users/usuario/htdocs"
ServerName example.localhost
<Directory "/users/usuario/htdocs">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Isso contém dois blocos de configuração de host virtual:
O primeiro bloco é o host virtual padrão ou de fallback, que é usado para todas as solicitações que não são correspondidas pelos blocos subseqüentes;
O segundo bloco configura um "Virtual Host" denominado "example.localhost". A diretiva "DocumentRoot" especifica o diretório a ser usado ao atender solicitações para este host virtual (neste caso, o diretório de instalação do site), enquanto a diretiva "ServerName" especifica o nome de domínio personalizado para o host virtual.
Para adicionar mais hosts virtuais, simplesmente duplique o segundo bloco de host virtual e modifique o número da porta, as diretivas "DocumentRoot" e "ServerName" de acordo com seus requisitos. Por exemplo, se você deseja usar SSL com seu nome de domínio personalizado, pode adicionar um novo bloco de host virtual para a porta 443.
Reinicie o Apache usando o painel de controle do XAMPP para que suas alterações entrem em vigor.
Neste ponto, seu host virtual está configurado. No entanto, se você tentar navegar para o domínio "example.localhost", pode ser que seu navegador mostre um aviso de falha, pois esse domínio não existe na realidade. Para resolver isso, é necessário mapear o domínio personalizado para o endereço IP local. Para fazer isso, abra o arquivo "/etc/hosts" e adicione a seguinte linha a ele:
127.0.0.1 example.localhost
Isso cuida do mapeamento do nome de domínio example.localhost para a máquina local, que sempre tem o endereço IP 127.0.0.1.
Lembre-se que em hosts Windows, este arquivo é "C:\windows\system32\drivers\etc\hosts" e na maioria dos sistemas, você precisa de privilégios elevados para editá-lo.
Neste ponto, você deve ser capaz de inserir a URL "http://example.localhost" na barra de endereços do seu navegador e ver a instalação do WordPress. Aqui está um exemplo do que você deve ver: