Configurando hosts virtual no Apache no Ubuntu 18.04

Introdução

O servidor web Apache é a forma mais popular de servir conteúdo web na Internet.
Ele representa mais da metade de todos os websites ativos na Internet e é extremamente poderoso e flexível.

O Apache divide suas funcionalidades e componentes em unidades individuais que podem ser personalizadas e configuradas independentemente. A unidade básica que descreve um determinado site ou um domínio é chamada virtual host.

Essas denominações permitem ao administrador utilizar um servidor para hospedar múltiplos sites e domínios a partir de uma simples interface ou IP através da utilização do mecanismo de correspondência . Isto é relevante para quem quer hospedar mais de um site em um único VPS (Virtual Private Server).

Cada domínio que esteja configurado irá direcionar o visitante para um diretório específico que mantém as informações daquele site, nunca indicando que o mesmo servidor também é responsável por outros sites. Este esquema é expansível sem qualquer limite de software desde que seu servidor possa suportar a carga.

Neste guia, vamos orientá-lo sobre como configurar Apache virtual hosts em um VPS Ubuntu 16.04. Durante este processo, você aprenderá como servir diferentes conteúdos para diferentes visitantes dependendo de qual domínio eles estão requisitando.

Pré-requisitos

Antes de você começar este tutorial, você deve criar um usuário não-root conforme descrito nos passos 1-4 aqui.

Você também precisará ter o Apache instalado a fim de trabalhar com estes passos. Se você não tiver feito isto, você poderá ter o Apache instalado em seu servidor através do apt-get:

sudo apt-get update
sudo apt-get install apache2
sudo apt-get install mysql-server
sudo apt-get install phpmyadmin

Após a conclusão dessas etapas, podemos começar.

Para os objetivos deste guia, nossa configuração fará um virtual host para teste.com e outro para teste2.com. Estes serão referenciados ao longo do guia, mas você deve substituir seus próprios domínios ou valores enquanto acompanha.

Iremos mostrar como editar seu arquivo hosts local posteriormente, para testar a configuração, se você estiver usando valores fictícios. Isto o permitirá testar sua configuração pelo seu computador doméstico, mesmo que seu conteúdo não esteja disponível através do nome de domínio para outros visitantes.

Passo um – Criar a estrutura de diretórios

O primeiro passo que vamos tomar é criar uma estrutura de diretórios que irá armazenar os dados do site que estará servindo aos visitantes.

Nosso document root (o diretório de nível superior que o Apache olha para encontrar o conteúdo para servir) será definido para diretórios individuais sob o diretório /var/www. Vamos criar um diretório aqui para ambos os virtual hosts que estamos planejando fazer.

Dentro de cada um desses diretórios, vamos criar o diretório teste que irá manter nossos arquivos reais. Isto nos dá certa flexibilidade em nossa hospedagem.

Por exemplo, para nossos sites, nós vamos criar nossos diretórios assim:

sudo mkdir -p /var/www/teste
sudo mkdir -p /var/www/teste2

Passo Dois – Conceder Permissões

Agora temos a estrutura de diretórios para nossos arquivos, mas eles são de propriedade de nosso usuário root. Se quisermos que nosso usuário regular esteja apto a modificar arquivos em nossos diretórios web, podemos alterar o proprietário fazendo isto:

sudo chmod  -R  777   /var/www/teste

sudo chmod  -R  777   /var/www/teste2

Passo Três – Criar as Páginas Demo para cada Virtual Host

Temos nossa estrutura de diretório no lugar. Vamos criar algum conteúdo para servir.

Vamos fazer apenas uma demonstração, assim nossas páginas serão bastante simples. Vamos apenas fazer uma página index.html para cada site.

Vamos começar com teste.com. Podemos abrir um arquivo index.html em nosso editor digitando:

nano /var/www/teste/index.html

Nesse arquivo, crie um documento HTML simples que indica o site que está conectado. Meu arquivo se parece com isso:

/var/www/teste/index.html
<html>
  <head>
    <title>BEM VINDO!</title>
  </head>
  <body>
    <h1>TESTE REALIZADO COM SUCESSO!</h1>
  </body>
</html>

Salve e feche o arquivo quando terminar.

Podemos copiar este arquivo para usá-lo como base para nosso segundo site digitando:

cp /var/www/teste/index.html     /var/www/teste2/index.html

Podemos, então, abrir o arquivo e modificar as informações pertinentes:

nano /var/www/teste2/index.html

/var/www/teste2/index.html
<html>
  <head>
    <title>BEM VINDO!</title>
  </head>
  <body>
    <h1>TESTE2 REALIZADO COM SUCESSO!</h1>
  </body>
</html>

Salve e feche o arquivo também. Agora você tem as páginas necessárias para testar a configuração de virtual host.

Passo Quatro – Criar novos arquivos de Virtual Hosts

Arquivos de virtual host são arquivos que especificam a configuração real do nosso virtual host e determina como o servidor web Apache irá responder às várias requisições de domínio.

O Apache vem com um arquivo padrão de virtual host chamado 000-default.conf que podemos usar como ponto de partida. Vamos copiá-lo para criar um arquivo de virtual host para cada um de nossos domínios.

Vamos começar com um domínio, configurá-lo, copiá-lo para nosso segundo domínio, e então fazer os pequenos ajustes necessários. A configuração padrão do Ubuntu requer que cada arquivo de virtual host termine em .conf.

Crie o primeiro arquivo de Virtual Host

Comece copiando o arquivo para o primeiro domínio:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/teste.conf

Abra o novo arquivo em seu editor com privilégios de root:

sudo nano /etc/apache2/sites-available/teste.conf

O arquivo será algo parecido com isso (eu removi os comentários aqui para tornar o arquivo mais legível):

/etc/apache2/sites-available/teste.conf

 

<VirtualHost *:80>
ServerAdmin suporte@tecsysteminformatica.com
ServerName teste.com
ServerAlias www.teste.com
DocumentRoot /var/www/teste
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/teste>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

</VirtualHost>

As configurações do primeiro dominio esta quase pronta, mas primeiro vamos configuara o segundo dominio , para habilitalos .

Agora que temos nosso primeiro arquivo de virtual host criado, podemos criar nosso segundo copiando esse arquivo e ajustando-o conforme necessário.

Agora você precisa modificar todas as informações pertinentes para referenciar seu segundo domínio. Quando terminar, ele será algo parecido com isto:

/etc/apache2/sites-available/teste2.conf

<VirtualHost *:80>
ServerAdmin suporte@tecsysteminformatica.com
ServerName teste.com
ServerAlias www.teste.com
DocumentRoot /var/www/teste
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/teste>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

</VirtualHost>

Salve e feche o arquivo quando terminar.

Passo Cinco – Ativar os novos arquivos de Virtual Host

Agora que criamos nossos arquivos de virtual host, devemos ativá-los. O Apache inclui algumas ferramentas que nos permitem fazer isto.

Podemos utilizar a ferramenta a2ensite para ativar cada um de nossos sites assim:

sudo a2ensite teste.conf

sudo a2ensite teste2.conf

Depois, desabilite o site padrão definido em 000-default.conf:

sudo a2dissite 000-default.conf

Quando terminar, você precisará reiniciar o Apache para fazer com que estas alterações tenham efeito:

sudo systemctl restart apache2

Em outras documentações, você também poderá ver um exemplo usando o comando service:

Antes de reiniciar o Apache Adicione o seguimte usuario para que possa subir imagens e alteras arquivos via web:

chown  -R  www-data:www-data  /var/www/teste

chown  -R  www-data:www-data  /var/www/teste2

 

sudo service apache2 restart

Esse comando ainda funcionará, mas pode não dar a saída que você está acostumado a ver em outros sistemas, uma vez que agora ele é vinculado ao comando systemctl do systemd.

Tambem precisamos alteras o arquivo hosts

sudo nano /etc/hosts

Se você estiver em uma máquina Windows, você poderá encontrar instruções para alteração do seu arquivo hosts aqui.

Os detalhes que você precisa adicionar são o endereço IP público do seu servidor VPS seguido pelo domínio que você quer usar para alcançar esse VPS.

Para os domínios que eu utilizei neste guia, assumindo que o endereço IP do meu servidor VPS é 111.111.111.111, eu poderia adicionar as seguintes linhas no final do meu arquivo hosts:

/etc/hosts
127.0.0.1   localhost
127.0.1.1   guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com

Isso irá direcionar quaisquer requisições para teste.com e teste2.com em nosso computador e enviá-las para nosso servidor em 111.111.111.111. Isso é o que queremos se não somos na verdade os proprietários desses domínios, de forma a testar nossos virtual hosts.

Salve e feche o arquivo.

Passo Sete – Teste seus resultados

Agora que você tem seus virtual hosts configurados, você pode testar sua configuração facilmente indo para os domínios que você configurou em seu navegador web:

http://teste.com

Você deve ver uma página parecida com esta:

TESTE REALIZADO COM SUCESSO!

 

Da mesma forma, você puder visitar sua segunda página:

TESTE2 REALIZADO COM SUCESSO!

 

http://teste2.com

Você verá o arquivo que você criou para seu segundo site:

 

Se ambos os sites funcionaram bem, você configurou com sucesso dois virtual hosts no mesmo servidor.

Se você ajustou o arquivo hosts do seu computador doméstico, você pode querer apagar as linhas que você adicionou, agora que você verificou que a sua configuração funciona. Isto irá evitar que seu arquivo hosts fique cheio de entradas que não são realmente necessárias.

Observaço: Para acessa localmente e so digitar no navegador:  127.0.0.1/teste ou teste2

 

 

Por Paulo Pereira
E-mail: paulo@tecsysteminformatica.com