Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hinom

Configurando Virtual Hosts no Apache

Recommended Posts

1. Hosts

 

Em ambiente Windows, usando um editor de textos em modo "Administrator", abra o arquivo:

 

C:\windows\system32\drivers\etc\hosts

(*Troque C: pela unidade correspondente do seu sistema, se necessário.)

 

Adicione a linha

127.0.0.1   foo.bar

 

Exemplo para ambiente Unix Based (Linux, Mac OSX), o arquivo hosts está em /etc/hosts

 

 

Para testar, faça o ping no console ou prompt (windows)

 

ping foo.bar

Deve retornar o IP 127.0.0.1

 

 

2. Apache httpd.conf

 

Na pasta conf/ do diretório de instalação do Apache, abra o arquivo "httpd.conf". Adicione ou edite conforme abaixo:

 

NameVirtualHost *:80


# Virtual hosts
Include conf/vhosts/*.conf

* A instrução "Include conf/vhosts/*.conf" fará com que sejam inclusos todos os arquivos com extensão ".conf" dentro do diretório "conf/vhosts/".

 

 

3. host exemplo foo.bar

 

 

No diretório "conf/vhosts/", salve como "foo.bar.conf"

<VirtualHost *:80>
    ServerAdmin info@foo.bar
    DocumentRoot "C:\_w\vhosts\foo.bar\public"
    ServerName foo.bar
    ServerAlias foo.bar

    AccessFileName .htaccess

    ErrorDocument 401 "/401/"
    ErrorDocument 403 "/403/"
    ErrorDocument 404 "/404/"

    AddType application/x-httpd-php .php

    LogLevel warn

        SetEnvIf Request_URI \.xml  dontlog
        SetEnvIf Request_URI \.jpg  dontlog
        SetEnvIf Request_URI \.jpeg dontlog
        SetEnvIf Request_URI \.gif  dontlog
        SetEnvIf Request_URI \.css  dontlog
        SetEnvIf Request_URI \.js   dontlog
        SetEnvIf Request_URI \.png  dontlog
        SetEnvIf Request_URI \.swf  dontlog
        SetEnvIf Request_URI \.ico  dontlog

    ErrorLog  "|bin/rotatelogs C:/_w/vhosts/foo.bar/logs/errors/log_error-%Y-%m-%d.txt 86400 +000"

    <IfModule log_config_module>
        LogFormat "%h %l %u %{%Y-%m-%d %H:%M:%S}t \"%r\" %>s %b \"%{Referer}i\"" combined
        CustomLog "|bin/rotatelogs C:/_w/vhosts/foo.bar/logs/access/log_access-%Y-%m-%d.txt 86400 +000" combined env=!dontlog
    </IfModule>

    <Directory "C:\_w\vhosts\foo.bar\public">

        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
        DirectoryIndex index.php index.html

        php_value expose_php Off

    </Directory>
</VirtualHost>

 

O escopo é o mesmo para criação de novos hosts sob uma configuração básica.

Basta editar os parâmetros abaixo:

 

 

 

DocumentRoot "C:\_w\vhosts\foo.bar\public"

ErrorLog  "|bin/rotatelogs C:/_w/vhosts/foo.bar/logs/errors/log_error-%Y-%m-%d.txt 86400 +000"

CustomLog "|bin/rotatelogs C:/_w/vhosts/foo.bar/logs/access/log_access-%Y-%m-%d.txt 86400 +000" combined env=!dontlog

<Directory "C:\_w\vhosts\foo.bar\public">

Importante!

Mesmo em ambiente Windows, para setar os paths para o rotatelogs, utilize barra normal.

 

 

 

*Exemplo de configuração de paths para ambiente unix (linux, mac osx):

/var/www/vhosts/foo.bar/public

/var/www/vhosts/foo.bar/logs/access

/var/www/vhosts/foo.bar/logs/errors

 

 

 

4. Diretórios do site


Crie os diretórios:

C:
\_w\vhosts\foo.bar\public
C:\_w\vhosts\foo.bar\logs\access
C:\_w\vhosts\foo.bar\logs\errors

 

*Exemplo para ambiente unix (linux, mac osx):

/var/www/vhosts/foo.bar/public

/var/www/vhosts/foo.bar/logs/access

/var/www/vhosts/foo.bar/logs/errors

 

 

 

 

5. Páginas do site

 

No diretório C:\_w\vhosts\foo.bar\public (windows) ou /var/www/vhosts/foo.bar/public (unix), crie um arquivo "index.html"

 

index.html

 

foo.bar

 

6. Acessando o site

Usando um browser, acesse o endereço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Três perguntas:

 

Antes desse tutorial aparecer aqui eu fui tentar fazer sozinho e quando defini o VirtualHost como *:80 nenhum diretório ou script com excessão daqueles localizados no diretório definido para VirtualHost executava mais, todos retornando Forbidden 403.

 

Mudei o * pelo endereço de acesso e todos voltaram a funcionar. Por quê?

 

Segundo: Os arquivos .conf do Virtual Host precisam obrigatóriamente estar sob o diretório de configurações do Apache ou se eu ajustar os paths apontando para um lugar "mais fácil de achar" também funciona?

 

Terceiro:É possível definir algum wildcard no arquivo hosts? Algo como *.localhost, para não ter de editá-lo toda vez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. Difícil dizer. Pode ser N cousas.

Normalmente é gerado o erro detalhado no log de erros.

 

2. Podem estar em qualquer outro path, até mesmo outro disco.

 

3. http://stackoverflow.com/questions/138162/wildcards-in-a-hosts-file

 

 

Um complemento para Apache 2.4 ou superior.

 

Para configurar o VirtualHosts, segue o mesmo exemplo desse tópico com algumas exceções

 

 

1- remover NameVirtualHost

Está em desuso desde o lançamento do 2.4 e será removido por completo nas próximas versões.

 

 

2- Listen

 

Informe o endereço IP + porta.

Exemplo para ambiente local:

Listen 127.0.0.1:80

*Para ambiente de produção ou mesmo ambiente local com múltiplos IPs ou portas

Listen 127.0.0.1:80 Listen 127.0.0.1:443 Listen 127.0.0.2:80 Listen 127.0.0.3:8080

 

 

3- <VirtualHost>

 

Troque o asterisco <VirtualHost *:80> pelo IP correspondente ao host

 

 

 

<VirtualHost 127.0.0.1:80>

 

Essas configurações são chamadas de "IP-based Virtual Host".

Recomendado pela equipe de desenvolvimento do Apache por razões de segurança básica e outros permonores:

http://httpd.apache.org/docs/2.4/en/vhosts/ip-based.html

 

 

----------

 

Comigo só funcionou quando meio que acidentalmente fiz a #1 e a #3.

 

A segunda, como é a porta padrão no meu Apache pude omitir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Configurei para fazer virtual host, só que o apache só pega o primeiro virtual host, o segundo ele não identifica, qual pode ser o problema?

PS: tento dar um ping no virtual host que criei e ele não reconhece.

 

estou utilizando: XAMPP + Windows 7

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.