Para o post de hoje eu assumo que você sabe instalar, ou, já tem instalado uma configuração LAMP em sua máquina Ubuntu, logo, eu vou descrever os passos para criar virtual host no ubuntu 12.10 (Quantal Quetzal), você pode criar uma para cada site que você está develvlvendo ou estudando.

Você vai ensinar a instalar o apache com php?

Não. Eu presumo também que você tenha o módulo mod_rewrite do Apache ativado. Mas, para ativar esse módulo o processo é bastante simples, é só você executar a linha abaixo no seu console:

$ sudo a2enmod rewrite

Mas, por onde eu começo?

Para continuar o processo de criação de nossos virtual host’s, você deve criar algumas pastas em seu Document root, que é a raiz do seu servidor web, no Ubuntu 12.10, ele está localizado em /var/www. Nesse guia vamos criar dois virtual host’s neste tutorial que estamos criando três locais: dev.teste, dev.producao. Você pode, facilmente, criar esses diretórios através do terminal digitando:

$ sudo mkdir /var/www/teste
$ sudo mkdir /var/www/producao

Como eu faço pra saber se o diretório já está funcioando?

Você pode criar um arquivo index.html em cada uma dessas pastas apenas para fins de teste. Utilizando os comandos:

$ sudo echo "<h1>Ambiente de teste!</h1>" > /var/www/teste/index.html
$ sudo echo "<h1>Ambiente de teste!</h1>" > /var/www/producao/index.html

Agora, se você abrir o seu navegador com as URL’s http://localhost/teste ou etc http://localhost/producao você será capaz de ver as respectivas páginas HTML que criamos ainda pouco. Mas, meu objetivo aqui é que você seja capaz de carregar esses endereços em seu navegador utilizando URL’s diferentes, como por exemplo: http://dev.teste/ ou http://dev.producao.

Então, agora vamos criar os virtual host’s?

Exatamente, então, vamos colocar a mão na massa. É realmente um processo muito simples.

  1. Adicione seus sites no arquivo /etc/hosts

Você precisa abri-lo como root com o editor de texto de sua escolha. Eu vou usar nano, apresar de preferir o vim:

$ sudo nano /etc/hosts

Você vai possuir pelo menos uma linha em seu arquivo hosts, o meu está assim:

127.0.0.1    localhost  
127.0.1.1    insomniac

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet  
ff00::0 ip6-mcastprefix  
ff02::1 ip6-allnodes  
ff02::2 ip6-allrouters  

Repare na primeira linha, ela configura o seu endereço localhost para o seu endereço de IP local. Você precisa criar outra linha, para os nosos dois virtual host’s. Logo, você deve deixar o seu arquivo hosts desse jeito:

127.0.0.1    localhost  
127.0.1.1    insomniac  
127.0.0.1     dev.teste dev.producao

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet  
ff00::0 ip6-mcastprefix  
ff02::1 ip6-allnodes  
ff02::2 ip6-allrouters  

Basicamente isso diz que quando você acessar a url dev.teste, por exemplo, ele vai resolver localmente, utilizando o seu servidor web local.

  1. Hora de configurar o Apache
    Agora você precisa alterar as configurações do seu apache, para que o Apache saiba o que fazer para os seus novos sites. Se você listar o conteúdo da pasta /etc/apache2/sites-available você verá dois arquivos lá: default e default-ssl. Você precisa adicionar os arquivos correspondentes aos virtual host’s que você deseja criar aqui, com seus respectivos conteúdos. Logo, a partir do terminal:
$ sudo nano /etc/apache2/sites-available/dev.teste

Neste novo arquivo, digite o código a seguir, lembrando-se de substituir todas as referências a dev.teste com o nome do seu próprio virtual host.

    <VirtualHost *:80>
        DocumentRoot /var/www/teste
        ServerName dev.teste
    </VirtualHost>

Esse conjunto de diretrizes configura o nosso virtual host:
Abrimos a tag VirtualHost e isso diz ao apache para ficar escutando na porta 80.
A diretiva DocumentRoot diz apache onde os arquivos do seu site estão armazenados.
ServerName é o nome do seu virtual host, ou seja, a url que irá utilizar para navegar no site.

Você pode adicionar apelidos (alias), mas este é o mais simples. Existem outras diretivas que você pode adicionar a este arquivo, tais como, informações de log de ​​erro, e-mail do administrador e etc…

Agora que tudo já foi explicado, crie um arquivo para o virtual host dev.producao.

  1. Habilitando os virtual hosts e reiniciando o Apache

Agora que você criou o arquivo, é necessário habilitá-los no Apache utilizando o comando a2ensite. No terminal, digite:

$ sudo a2ensite dev.teste

Você deverá receber uma mensagem de que o virtual host foi habilitado, e um aviso para reiniciar o apache. Se você tem mais de um virtual host para habilitar, você pode continuar utilizando o a2ensite para habilitá-lo(s), antes de reiniciar o apache. Quando estiver tudo pronto, você pode reiniciar o apache para que as alterações comecem a funcionar. Para reiniciar o apache, no terminal, digite:

$ sudo /etc/init.d/apache2 reload