Pesquisa de site

Crie hosts virtuais baseados em nomes e IP do Apache no Linux


Hospedagem Virtual é um conceito em que vários sites ou domínios são hospedados em um único servidor, o que é feito para reduzir a sobrecarga de recursos e os custos operacionais de uma empresa ou organização.

O servidor web Apache simplifica a hospedagem de vários sites, permitindo que os administradores de sistema configurem facilmente hosts virtuais para cada site. A hospedagem virtual pode ser baseada em IP ou em nome.

Neste tutorial, exploramos como configurar hospedagem virtual em distribuições baseadas em RHEL, como Fedora, CentOS Stream, Rocky Linux e Alma Linux usando hosts virtuais baseados em IP e baseados em nomes no Linux.

Os conceitos de Hospedagem Web Compartilhada e Hospedagem Web de Revenda são baseados principalmente neste recurso do Apache.

Tipos de hospedagem virtual Apache no Linux

Existem dois tipos de hospedagem virtual disponíveis com o Apache.

Hospedagem Virtual Baseada em Nome

Neste tipo de hospedagem, vários domínios ou sites podem ser hospedados em um único servidor utilizando apenas um único endereço IP. Simplificando, todos os domínios compartilharão um único endereço IP. Este é o tipo de hospedagem virtual mais fácil de configurar, pois tudo o que você precisa fazer é mapear os nomes de domínio para o endereço IP e, em seguida, configurar hosts virtuais Apache para cada um dos nomes de domínio.

Hospedagem Virtual Baseada em IP

A hospedagem virtual baseada em IP é onde cada domínio recebe um endereço IP exclusivo. Esses endereços IP podem ser anexados ao servidor usando várias placas NIC ou uma única placa NIC.

Ambiente de teste

  • SOFedora 34
  • AplicativoServidor Web Apache
  • Endereço IP192.168.2.105
  • Endereço IP192.168.2.106
  • Domíniowww.meudominio1.com
  • Domíniowww.meudominio2.com

Como configurar hosts virtuais Apache baseados em IP e baseados em nome

Antes de começar, certifique-se de que o servidor web Apache esteja instalado em seu sistema usando o comando dnf conforme mostrado.

sudo dnf install httpd -y

Configurar hospedagem virtual baseada em nome

A primeira etapa na configuração da hospedagem virtual baseada em nome é configurar a resolução de nome de domínio no arquivo /etc/hosts. Portanto, execute os seguintes comandos como usuário root para adicionar as entradas de nome de domínio apontando para o endereço IP do host.

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.105 www.mydomain2.com' >> /etc/hosts

A próxima etapa é criar um diretório que conterá os arquivos do site. Portanto, criaremos dois diretórios para os hosts virtuais na raiz do documento que é a pasta /var/www/html na configuração do Apache.

sudo mkdir /var/www/html/mydomain1.com/
sudo mkdir /var/www/html/mydomain2.com/

A próxima etapa é modificar o arquivo host virtual que instruirá o Apache ao IP para escutar as solicitações recebidas do servidor web Apache para todos os nomes de domínio. Portanto, abra o arquivo de configuração do Apache usando seu editor de texto preferido.

sudo vim /etc/httpd/conf/httpd.conf

Adicione os seguintes blocos de código para os dois hosts virtuais.

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.105:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

Salve as alterações e saia. A seguir, verifique se a sintaxe está correta e se não há erros.

httpd -t

A seguir, criaremos páginas de teste HTML para cada um dos domínios e adicionaremos algum conteúdo como forma de confirmar se tudo está funcionando corretamente no navegador.

Para meudominio1.com

Crie um arquivo index.html no diretório meudominio1.com.

sudo vim /var/www/html/mydomain1.com/index.html 

Cole as seguintes linhas.

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain1.com.</h1>
  </body>
</html>

Salve as alterações e saia do arquivo.

Para meudominio2.com

Crie um arquivo index.html no diretório meudominio2.com.

sudo vim /var/www/html/mydomain2.com/index.html 

Cole as seguintes linhas.

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain2.com.</h1>
  </body>
</html>

Salve as alterações e saia do arquivo.

Agora inicie o servidor web Apache e confirme se ele está em execução.

sudo systemctl start httpd
sudo systemctl status httpd

Se você tiver um firewall habilitado, permita o tráfego HTTP e HTTPS (quando necessário).

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --add-service=https --zone=public --permanent
sudo firewall-cmd --reload

Agora teste os domínios em um navegador.

Configurar hospedagem virtual baseada em IP Linux

A hospedagem virtual baseada em IP, como o nome sugere, envolve vários endereços IP atribuídos ao seu servidor Linux. Na maioria dos casos, duas ou mais placas NIC são conectadas ao sistema para fornecer vários endereços IP.

O objetivo da hospedagem virtual baseada em IP é atribuir a cada domínio um endereço IP exclusivo que não será usado por nenhum outro domínio.

Isto é ideal para situações em que você tem sites criptografados com um certificado SSL (mod_ssl) ou executados em portas diferentes. Em nossa configuração, temos dois adaptadores NIC.

Para visualizar a configuração IP em seu sistema, execute o comando ifconfig ou ip a.

ifconfig
OR
ip addr

Nosso servidor possui dois endereços IP, cada um atribuído a uma NIC. O IP 192.168.2.106 é atribuído a ens160 e 192.168.2.105 é atribuído a ens224.

Mais uma vez, vamos configurar o arquivo httpd.conf.

sudo vim /etc/httpd/conf/httpd.conf

Crie hosts virtuais para ambos os domínios conforme mostrado. Certifique-se de que cada endereço IP esteja atribuído à sua respectiva configuração de host virtual.

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.106:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

Salve e saia do arquivo de configuração. Em seguida, modifique o arquivo /etc/hosts conforme mostrado.

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.106 www.mydomain2.com'>> /etc/hosts

Confirme as entradas:

cat /etc/hosts

192.168.2.105 www.mydomain1.com
192.168.2.106 www.mydomain2.com

Em seguida, reinicie o servidor Apache para que as alterações tenham efeito.

sudo systemctl restart httpd

Por fim, teste sua configuração de hospedagem virtual baseada em IP acessando os URLs conforme mostrado.

http://192.168.2.105
http://192.168.2.106

Este teste confirma que a hospedagem virtual baseada em IP está funcionando conforme o esperado!

Conclusão

E é isso nesta palestra. Esperamos que você possa configurar perfeitamente os dois tipos de hospedagem virtual sem muitos problemas. Seus comentários sobre este guia são muito apreciados.