Tutorial

Como configurar os hosts virtuais do Apache no Ubuntu 18.04

Published on April 10, 2020
Português
Como configurar os hosts virtuais do Apache no Ubuntu 18.04

Introdução

O servidor Web do Apache é um método popular para atender sites na Internet. Em 2019, as estimativas apontavam que o método atenderia 29% de todos os sites ativos, oferecendo robustez e flexibilidade aos desenvolvedores. Ao usar o Apache, um administrador pode configurar um servidor para hospedar vários domínios ou sites fora de uma única interface ou IP, usando um sistema correspondente.

Cada domínio ou site individual — conhecido como “host virtual” — configurado usando o Apache irá direcionar o visitante para um diretório específico que possui informações daquele site. Isso é feito sem indicar que o mesmo servidor também é o responsável por outros sites. Esse esquema pode ser expandido, sem qualquer limite de software, desde que o seu servidor consiga lidar com a carga. A unidade básica que descreve um site ou domínio individual é chamada de virtual host.

Neste guia, apresentaremos a você um passo a passo sobre como configurar os hosts virtuais do Apache em um servidor Ubuntu 18.04. Durante esse processo, você aprenderá como atender conteúdos diferentes para visitantes diferentes, dependendo de quais domínios que eles estiverem solicitando.

Pré-requisitos

Antes de iniciar este tutorial, você deve criar um usuário não root.

Você também precisará ter o Apache instalado para trabalhar através desses passos. Se ainda não tiver feito isso, é possível instalar o Apache no seu servidor através do pacote da ferramenta apt:

  1. sudo apt update
  2. sudo apt install apache2

Se quiser instruções mais detalhadas, bem como a configuração do firewall, consulte nosso guia sobre Como instalar o servidor Web do Apache no Ubuntu 18.04.

Para o nosso propósito neste guia, nossa configuração criará um host virtual para o example.com e outro para o test.com. Esses arquivos serão referenciados durante todo o guia, mas você deve substituir seus próprios domínios ou valores, enquanto estiver seguindo o guia.

Se estiver utilizando a DigitalOcean, você pode aprender como configurar domínios, seguindo a documentação do produto, Como adicionar domínios. Para outros provedores, consulte a documentação relevante dos respectivos produtos. Se você não tiver domínios disponíveis no momento, você poderá usar os valores de teste.

Mais adiante neste guia, vamos mostrar como editar seu arquivo de hosts locais para testar a configuração, se você estiver usando valores de teste. Isso permitirá que você valide sua configuração a partir do seu computador doméstico, embora seu conteúdo não ficará disponível através do nome de domínio para outros visitantes.

Passo 1 — Criar a estrutura de diretório

O primeiro passo que vamos dar será criar uma estrutura de diretório que reterá os dados do site que vamos oferecer aos visitantes.

Nosso document root (o diretório de nível superior que o Apache examina para encontrar conteúdo para atender) será configurado em diretórios individuais, sob o diretório /var/www. Aqui, criaremos um diretório para ambos os hosts virtuais que planejamos fazer.

Dentro de cada um desses diretórios, criaremos uma pasta public_html que reterá nossos arquivos reais. Isso nos possibilita uma certa flexibilidade em nossa hospedagem.

Por exemplo, em relação aos nossos sites, vamos fazer nossos diretórios como segue. Caso esteja usando domínios reais ou valores alternativos, troque o texto destacado por esses.

  1. sudo mkdir -p /var/www/example.com/public_html
  2. sudo mkdir -p /var/www/test.com/public_html

As partes em vermelho representam os nomes de domínios que queremos atender a partir do nosso VPS (Servidor virtual privado).

Passo 2 — Conceder permissões

Agora, temos a estrutura de diretório para nossos arquivos, mas eles são propriedade do nosso usuário root. Se quisermos que nosso usuário comum consiga modificar os arquivos em nossos diretórios Web, podemos alterar a propriedade, fazendo o seguinte:

  1. sudo chown -R $USER:$USER /var/www/example.com/public_html
  2. sudo chown -R $USER:$USER /var/www/test.com/public_html

A variável $USER utilizará o valor do usuário que estiver conectado no momento, assim que pressionar ENTER. Ao fazer isso, nosso usuário comum será o proprietário dos subdiretórios public_html, onde iremos armazenar nosso conteúdo.

Também devemos modificar as permissões para garantir o acesso de leitura ao diretório Web geral e a todos os arquivos e pastas que ele contenha, para que páginas possam ser atendidas corretamente:

  1. sudo chmod -R 755 /var/www

Agora, seu servidor Web deve ter as permissões necessárias para oferecer conteúdo e seu usuário deve conseguir criar conteúdo nas pastas necessárias.

Passo 3 — Criar páginas de demonstração para cada host virtual

Agora, temos a estrutura de nosso diretório está em funcionamento. Vamos criar um conteúdo para oferecer.

A título de demonstração, vamos criar uma página index.html para cada site.

Vamos começar com o example.com. Podemos abrir um arquivo index.html em um editor de texto. Neste caso, usaremos o nano:

  1. nano /var/www/example.com/public_html/index.html

Dentro desse arquivo, crie um documento HTML que indique o site ao qual ele está conectado, como o seguinte:

/var/www/example.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

Salve e feche o arquivo (no nano, pressione CTRL + X e, depois, Y e, finalmente, ENTER) quando terminar.

Podemos copiar esse arquivo para usar como base para nosso segundo site, digitando:

  1. cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Na sequência, podemos abrir o arquivo e modificar as informações relevantes:

  1. nano /var/www/test.com/public_html/index.html
/var/www/test.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Test.com!</title>
  </head>
  <body> <h1>Success! The test.com virtual host is working!</h1>
  </body>
</html>

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

Passo 4 — Criar novos arquivos do host virtual

Os arquivos do host virtual são os arquivos que especificam a configuração real dos nossos hosts virtuais e determinam o modo como o servidor Web Apache responderá às solicitações de vários domínios.

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

Começaremos com um domínio, configurando-o e copiando-o para nosso segundo domínio e, em seguida, faremos alguns outros ajustes necessários. A configuração padrão do Ubuntu exige que cada arquivo de host virtual termine em .conf.

Crie o primeiro arquivo de host virtual

Comece copiando o arquivo para o primeiro domínio:

  1. sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

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

  1. sudo nano /etc/apache2/sites-available/example.com.conf

Com os comentários removidos, o arquivo ficará parecido com este:

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Dentro desse arquivo, vamos personalizar os itens para nosso primeiro domínio e adicionar algumas diretivas. Esta seção do host virtual corresponde a quaisquer pedidos que forem feitos na porta 80, que é a porta padrão do HTTP.

Primeiro, precisamos alterar a diretiva ServerAdmin para um e-mail que o administrador do site possa receber e-mails.

ServerAdmin admin@example.com

Depois disso, precisamos adicionar duas diretivas. A primeira, chamada ServerName, estabelece o domínio base que deve corresponder à definição desse host virtual. Esse provavelmente será o seu domínio. A segunda, chamada de ServerAlias, define os outros nomes que devem corresponder como se fossem o nome base. Isso é útil para os hosts correspondentes que você definiu, como www:

ServerName example.com
ServerAlias www.example.com

A única outra coisa que precisamos alterar em nosso arquivo de host virtual é a localização do diretório base desse domínio. Já criamos o diretório que precisamos, então precisamos apenas alterar a diretiva DocumentRoot para refletir o diretório que criamos:

DocumentRoot /var/www/example.com/public_html

Quando estiver concluído, nosso arquivo de host virtual deverá ter a seguinte aparência:

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Neste ponto, salve e feche o arquivo.

Copiar o primeiro host virtual e personalizar para o segundo domínio

Com o nosso primeiro arquivo de host virtual estabelecido, agora podemos criar nosso segundo host virtual, copiando aquele arquivo e ajustando-o, conforme necessário.

Comece copiando-o:

  1. sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

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

  1. sudo nano /etc/apache2/sites-available/test.com.conf

Agora, você precisará modificar todas as informações para referenciar seu segundo domínio. Quando tiver terminado, ele deverá ter a seguinte aparência:

/etc/apache2/sites-available/test.com.conf
<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Salve e feche o arquivo quando você terminar.

Passo 5 — Habilitar os novos arquivos de host virtual

Agora que criamos os arquivos de host virtual, precisamos habilitá-los. O Apache inclui algumas ferramentas que nos permitem fazer isso.

Vamos usar a ferramenta a2ensite para habilitar cada um dos nossos sites. Caso queira ler mais a respeito deste script, consulte a documentação a2ensite.

  1. sudo a2ensite example.com.conf
  2. sudo a2ensite test.com.conf

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

  1. sudo a2dissite 000-default.conf

Quando tiver terminado, você precisará reiniciar o Apache para as alterações entrem em vigor e usar o systemctl status para verificar o sucesso da reinicialização.

  1. sudo systemctl restart apache2
  2. sudo systemctl status apache2

Agora, seu servidor deve estar configurado para atender dois sites.

Passo 6 — Configurar o arquivo de hosts locais (opcional)

Se você não usou nomes de domínios reais - de sua propriedade - para testar esse procedimento mas, em vez disso, usou alguns domínios de exemplo, pelo menos você conseguirá testar a funcionalidade desse processo, alterando temporariamente o arquivo hosts em seu computador local.

Isso interceptará quaisquer pedidos para os domínios que você configurou e irá apontá-los para seu servidor VPS, da mesma forma que o sistema DNS faria caso estivesse usando domínios registrados. Entretanto, isso somente funcionará a partir do seu computador local e somente para fins de teste.

Certifique-se de que esteja operando em seu computador local para esses passos e não em seu servidor VPS. Você precisará saber a senha administrativa do computador ou, então, ser membro do grupo administrativo.

Caso esteja em um computador Mac ou Linux, edite seu arquivo local com privilégios administrativos, digitando:

  1. sudo nano /etc/hosts

Caso esteja em uma máquina em Windows, você pode encontrar as instruções sobre como alterar seu arquivo hosts aqui.

Os detalhes que você precisará adicionar são o endereço IP público do seu servidor, seguido do domínio que quiser usar para acessar aquele servidor.

Utilizando os domínios usados neste guia e substituindo o IP do seu servidor pelo texto your_server_IP, seu arquivo deverá ficar com a seguinte aparência:

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

Salve e feche o arquivo.

Isso direcionará quaisquer pedidos para o example.com e o test.com em nosso computador e os enviará para nosso servidor. Isso é o que queremos, caso não sejamos os proprietários desses domínios, para podermos testar nossos hosts virtuais.

Passo 7 — Testar seus resultados

Agora que você tem seus hosts virtuais configurados, poderá testar suas configurações, acessando os domínios que configurou em seu navegador Web:

http://example.com

Você deve ver uma página que se parece com esta:

Apache virtual host example

Também é possível visitar sua segunda página e ver o arquivo criado para seu segundo site.

http://test.com

Teste do host virtual do Apache

Caso ambos esses sites funcionarem conforme o esperado, significa que você configurou com sucesso os dois hosts virtuais no mesmo servidor.

Caso tenha ajustado o arquivo hosts do seu computador doméstico, talvez queira excluir as linhas que adicionou, agora que verificou que sua configuração funciona. Isso impedirá que seu arquivo hosts seja preenchido com entradas que não são mais necessárias.

Caso precise acessar isso por longo prazo, considere adicionar um nome de domínio para cada site que precisar e configurá-lo para apontar para seu servidor.

Conclusão

Se você acompanhou este guia, agora deverá ter um único servidor manipulando dois nomes de domínio separados. Você pode expandir esse processo, seguindo os passos que definimos acima para fazer hosts virtuais adicionais.

Não há uma limitação do software quanto ao número de nomes de domínios que o Apache consegue gerenciar. Assim, fique à vontade para criar tantos domínios quantos o seu servidor conseguir manipular.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.