Como configurar Apache Virtual Hosts no Linux Ubuntu

1 de agosto de 2022
Ronaldo B.

No último artigo nós aprendemos a criar Virtual Hosts no Windows. Você pode conferir esse conteúdo clicando aqui.

Neste artigo iremos aprender a criar um Virtual Host no Linux, mais especificamente no Ubuntu. Vamos ver que algumas configurações serão um pouco diferentes, mas o processo em si será similar ao que vimos no artigo anterior. Vamos criar os mesmos projetos do último artigo.

Processo de criação de um Virtual Host

Iremos trabalhar basicamente com o Terminal e linha de comando. Se você não possui o Apache instalado em sua máquina, poderá instalá-lo com o comando abaixo:

sudo apt-get install apache2

O Terminal irá realizar algumas perguntas durante a instalação. Pode responder “Sim” para todas elas.

Também precisamos instalar o PHP. Faremos isso com o seguinte comando:

sudo apt-get install php7.0

Vamos criar as pastas e arquivos de nossos projetos. Para isso, vamos entrar na pasta var/www e criar uma pasta para cada um. Executaremos os comandos abaixo:

cd /var/www

sudo mkdir restaurante
sudo mkdir restaurante/public_html

sudo mkdir noticias
sudo mkdir noticias/public_html

Explicando: Nós criamos um diretório para cada projeto e dentro de cada um deles criamos um outro diretório chamado public_html, que conterá os arquivos que serão identificados por nosso servidor.

O próximo passo é criar os arquivos index.php em cada diretório. Vamos começar com o projeto do restaurante. Executaremos os seguintes comandos:

cd restaurante/public_html/

sudo nano index.php

O editor Nano será aberto para nós. Basta colar o mesmo código desenvolvido no último artigo:

<?php
echo "<h2>Hello World! Sejam bem-vindo ao meu Projeto de Restaurante</h2>";

É importante salvar esse arquivo antes de fechá-lo. Vamos agora repetir esse mesmo processo para o projeto noticias. Segue os comandos:

cd ../../noticias/public_html/

sudo nano index.php

E por fim iremos adicionar o conteúdo do arquivo PHP:

<?php
echo "<h2>Hello World! Sejam bem-vindo ao meu Projeto de Notícias</h2>";

Ótimo. A estrutura de nossos códigos está finalizada. Iremos iniciar agora a configuração de fato dos Virtual Hosts. Primeiro, iremos dar a permissão necessária para que o usuário de nosso servidor consiga realizar as devidas configurações nas pastas dos dois projetos. Iremos executar o abaixo:

cd ../../
sudo chown -R $USER:$USER restaurante/public_html/
sudo chown -R $USER:$USER noticias/public_html/

A próxima permissão necessária que devemos conceder é a permissão de escrita nesses diretórios. Para isso, usaremos os comandos abaixo:

sudo chmod -R 755 restaurante/public_html/
sudo chmod -R 755 noticias/public_html/

Depois de conceder essas permissões, iremos criar o arquivo necessário para os Virtual Hosts. O diretório que contém os arquivos de configuração está dentro do diretório etc. Iremos acessá-lo com o comando abaixo:

cd /etc/apache2/sites-available/

Esse diretório possui um arquivo chamado 000-default.conf. Ele contém a estrutura padrão de um Virtual Host. Assim, iremos copiar esse arquivo e colá-lo no mesmo diretório, alterando o nome para o nosso projeto. Vamos fazer esse processo primeiro pensando no Restaurante. Iremos executar o seguinte no Terminal:

sudo cp 000-default.conf restaurante.conf
sudo nano restaurante.conf 

Explicando: nós criamos o arquivo de configuração restaurante.conf. Lembrando que podemos escolher o padrão que considerarmos melhor para o nome desse arquivo. Depois de criar o arquivo, nós o acessamos com o Nano. Veremos uma estrutura já definida. Iremos adaptá-la para nosso projeto. No fim, o conteúdo do arquivo ficará assim:

<VirtualHost *:80>
	ServerName www.projeto.restaurante.com.br
	ServerAlias projeto.restaurante.com.br
	DocumentRoot /var/www/restaurante/public_html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Explicando: ServerName e ServerAlias representam o domínio principal do projeto e um nome alternativo para ele. DocumentRoot define o caminho para nosso projeto. ErrorLog e CustomLog definem os arquivos onde os erros e exceções serão armazenados.

Vamos repetir o mesmo processo com o projeto de Notícias, com os seguintes comandos:

sudo cp restaurante.conf noticias.conf
sudo nano noticias.conf

Um detalhe interessante é que criamos o arquivo de configuração de notícias nos baseando no arquivo do restaurante, não mais no arquivo default. O conteúdo do arquivo de configuração ficará assim:

<VirtualHost *:80>
	ServerName www.projeto.noticias.com.br
	ServerAlias projeto.noticias.com.br
	DocumentRoot /var/www/noticias/public_html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Estamos quase no final. Precisamos apenas habilitar esses arquivos de configuração, para que o Apache consiga encontrá-los. Para isso, vamos executar os comandos abaixo:

sudo a2ensite restaurante.conf
sudo a2ensite noticias.conf

É necessário também desabilitar o arquivo padrão. Por isso, iremos executar o comando abaixo:

sudo a2dissite 000-default.conf

Precisamos reiniciar o Apache para que as mudanças sejam refletidas. Para isso, executaremos o comando abaixo:

sudo service apache2 restart

Essa é a configuração necessária para o Virtual Host funcionar no Apache. Contudo, como comentamos no artigo anterior, é necessário configurar o arquivo hosts de nosso Sistema Operacional, para que os projetos sejam encontrados em nosso Ambiente Local. No Ubuntu, o arquivo de hosts está dentro do diretório etc. Vamos acessar esse arquivo com os comandos abaixo:

cd /etc
sudo nano hosts

Basta adicionar neste arquivo o mesmo conteúdo que definimos no ambiente Windows:

127.0.0.1 www.projeto.restaurante.com.br
127.0.0.1 www.projeto.noticias.com.br

Configuração finalizada. Com isso você poderá testar seus Virtual Hosts também no Ambiente Linux.

Gostou desse artigo? Teria algum outro tema que você gostaria de poder ler aqui em nosso Blog? Você pode enviar suas sugestões clicando aqui. Muito obrigado por ter esta matéria e até o próximo artigo! :)

Hcode: Utilizamos cookies para a personalização de anúncios e experiências de navegação dentro de nosso site. Ao continuar navegando, você concorda com as nossas Política de Privacidade.