mar
22
2011

Simulando Múltiplos Websites Localmente com Apache

Quem já desenvolve há algum tempo com certeza precisou trabalhar com mais de um website localmente, o que pode causar alguns problemas dependendo do tipo de projeto e das configurações do mesmo.

Geralmente quando isso acontece coloca-se cada projeto como se fosse uma pasta do localhost como http://localhost/site1 http://localhost/site2, e quando o projeto é colocado em produção ele passa a funcionar como http://www.site1.com e http://www.site2.com, onde já presenciei e também ouço relatos que determinadas funcionalidades ou ferramentas deixam de funcionar localmente ou no ambiente de produção.

Baseado nisso resolvi repassar uma forma de simular esses websites localmente como se fossem domínios reais (vou utilizar um domínio fictício .dev nos exemplos), como http://www.site1.devhttp://www.site2.dev, que nos possibilitem trabalhar localmente como se estivesse em produção.

1. Incluir Domínios no Arquivo Hosts

Primeiro precisamos alterar o arquivo hosts do sistema e incluir cada domínio que deseja-se trabalhar localmente. O local do arquivo depende do seu ambiente de desenvolvimento:

  • Windows - %SystemRoot%System32driversetc (normalmente c:windowssystem32driversetc)
  • Linux – /etc/hosts
  • Mac OS X - /private/etc/hosts ou /etc/hosts

Inclua os projetos, um em cada linha para melhor organização. Você pode ainda incluir aliases em uma mesma linha.

127.0.0.1 www.site1.dev site1.dev
127.0.0.1 www.site2.dev site2.dev

2. Adicionar Permissão a Pasta dos Projetos

Para que o apache possa interpretar os arquivos de uma pasta é necessário dar permissão para cada diretório, ou o diretório base dos projetos no arquivo <apache>/conf/httpd.conf. Como exemplo vou ter os projetos localizados em D:phpsite1 e D:phpsite2, pode posso dar permissão a cada diretório individualmente, ou simplesmente dar permissão a pasta base D:php.

<Directory "D:/php">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

3. Habilitar Domínios Virtuais no Apache

Precisamos agora habilitar que o apache trabalhe com hosts virtuais localmente, o que irá possibilitar simular um domínio local. Basta descomentar a linha a seguir no arquivo <apache>/conf/httpd.conf.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

4. Configurar os Domínios Virtuais

O último passo é criar os domínios virtuais no arquivo <apache>/conf/extra/httpd-vhosts.conf. É importante observar que o primeiro domínio virtual é o padrão caso o endereço acessado localmente não seja atribuído a nenhum outro domínio virtual. O conteúdo do arquivo httpd-vhosts.conf fica semelhante ao seguinte:

NameVirtualHost *:80

# Host padrão
<VirtualHost *:80>
  DocumentRoot "D:/php/localhost"
  ServerName localhost
</VirtualHost>
# Demais domínios virtuais
<VirtualHost *:80>
  DocumentRoot "D:/php/site1"
  ServerName site1.dev
  ServerAlias www.site1.dev
</VirtualHost>
<VirtualHost *:80>
  DocumentRoot "D:/php/site2"
  ServerName site2.dev
  ServerAlias www.site2.dev
</VirtualHost>
  • http://www.facebook.com/people/Alexandre-Américo-Fumes/1756764904 Alexandre Américo Fumes

    Muito bom!