Pesquisa de site

Como configurar hosts virtuais Apache no Ubuntu 18.04 LTS


O que são hosts virtuais Apache?

O termo Host Virtual refere-se ao método de execução de mais de um site, como host1.domain.com, host2.domain.com ou www.domain1.com, www.domain2.com etc., em um único sistema. Existem dois tipos de hospedagem virtual no Apache: hospedagem virtual baseada em IP e hospedagem virtual baseada em nome. Com a hospedagem virtual baseada em IP, você pode hospedar vários sites ou domínios no mesmo sistema, mas cada site/domínio possui um endereço IP diferente. Com hospedagem virtual baseada em nome, você pode hospedar vários sites/domínios no mesmo endereço IP. A hospedagem virtual pode ser útil se você deseja hospedar vários sites e domínios a partir de um único servidor físico ou VPS. Espero que você tenha entendido a ideia básica dos hosts virtuais Apache. Hoje veremos como configurar hosts virtuais Apache no Ubuntu 18.04 LTS.

Configurar hosts virtuais Apache no Ubuntu 18.04 LTS

O endereço IP da minha caixa de teste é 192.168.225.22 e o nome do host é ubuntuserver.

Primeiro, veremos como configurar hosts virtuais baseados em nomes no servidor web Apache.

Configurar hosts virtuais baseados em nome

1. Instale o servidor web Apache 

Certifique-se de ter instalado o servidor web Apache. Para instalá-lo no Ubuntu, execute:

sudo apt-get install apache2

Depois que o apache estiver instalado, teste se ele está funcionando ou não navegando na página de teste do apache no navegador.

Abra seu navegador da Web e acesse http://IP_Address ou http://localhost. Você deverá ver uma página como abaixo.

Bom! O servidor web Apache está instalado e funcionando!!

2. Crie um diretório web para cada host

Vou criar dois hosts virtuais, nomeadamente ostechnix1.lan e ostechnix2.lan.

Vamos criar um diretório para o primeiro host virtual ostechnix1.lan. Este diretório é necessário para armazenar os dados de nossos hosts virtuais.

Para fazer isso, digite:

sudo mkdir -p /var/www/html/ostechnix1.lan/public_html

Da mesma forma, crie um diretório para o segundo host virtual ostechnix2.lan conforme mostrado abaixo.

sudo mkdir -p /var/www/html/ostechnix2.lan/public_html

Os dois diretórios acima pertencem ao usuário root. Precisamos mudar a propriedade para o usuário normal.

Para fazer isso, execute:

sudo chown -R $USER:$USER /var/www/html/ostechnix1.lan/public_html
sudo chown -R $USER:$USER /var/www/html/ostechnix2.lan/public_html

Aqui, $USER refere-se ao usuário conectado no momento.

Em seguida, defina as permissões de leitura para o diretório raiz do Apache, ou seja, /var/www/html/ usando o comando:

sudo chmod -R 755 /var/www/html/

Fazemos isso porque já criamos um diretório separado para cada host virtual para armazenar seus dados. Portanto, tornamos o diretório raiz do Apache somente leitura para todos os usuários, exceto o usuário root.

Criamos diretórios necessários para armazenar dados de cada host virtual e configuramos as permissões adequadas. Agora é hora de criar algumas páginas de amostra que serão servidas em cada host virtual.

3. Crie páginas de demonstração para cada host

Vamos criar uma página de exemplo para o site ostechnix1.lan. Para fazer isso, execute:

sudo vi /var/www/html/ostechnix1.lan/public_html/index.html

Adicione as seguintes linhas nele:

<html>
 <head>
 <title>www.ostechnix.lan</title>
 </head>
 <body>
 <h1>Hello, This is a test page for ostechnix1.lan website</h1>
 </body>
</html>

Salve e feche o arquivo.

Da mesma forma, crie uma página de exemplo para o site ostechnix2.lan:

sudo vi /var/www/html/ostechnix2.lan/public_html/index.html

Adicione as seguintes linhas nele:

<html>
 <head>
 <title>www.ostechnix.lan</title>
 </head>
 <body>
 <h1>Hello, This is a test page for ostechnix2.lan website</h1>
 </body>
</html>

Salve e feche o arquivo.

4. Crie um arquivo de configuração para cada host

A seguir, precisamos criar arquivos de configuração para cada host virtual. Primeiro, vamos fazer isso para o site ostechnix1.lan.

Copie o arquivo de host virtual padrão chamado 000-default.conf conteúdo para os novos arquivos de host virtual como abaixo.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix1.lan.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix2.lan.conf

Lembre-se de que você deve salvar todos os arquivos de configuração com a extensão .conf no final, caso contrário não funcionará.

Agora, modifique os arquivos de configuração para corresponder aos nossos hosts virtuais.

Edite o arquivo ostechnix.lan1.conf:

sudo vi /etc/apache2/sites-available/ostechnix1.lan.conf

Edite/modifique os valores ServerAdmin, ServerName, ServerAlias e DocumentRoot correspondentes ao host virtual.

<VirtualHost *:80>
 # The ServerName directive sets the request scheme, hostname and port that
 # the server uses to identify itself. This is used when creating
 # redirection URLs. In the context of virtual hosts, the ServerName
 # specifies what hostname must appear in the request's Host: header to
 # match this virtual host. For the default virtual host (this file) this
 # value is not decisive as it is used as a last resort host regardless.
 # However, you must set it for any further virtual host explicitly.
 #ServerName www.example.com

   ServerAdmin webmaster@ostechnix1.lan
   ServerName ostechnix1.lan
   ServerAlias www.ostechnix1.lan
   DocumentRoot /var/www/html/ostechnix1.lan/public_html

Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
 # error, crit, alert, emerg.
 # It is also possible to configure the loglevel for particular
 # modules, e.g.
 #LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

For most configuration files from conf-available/, which are
 # enabled or disabled at a global level, it is possible to
 # include a line for only one particular virtual host. For example the
 # following line enables the CGI configuration for this host only
 # after it has been globally disabled with "a2disconf".
 #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Salve e feche o arquivo.

Em seguida, edite o arquivo ostechnix2.lan.conf:

sudo vi /etc/apache2/sites-available/ostechnix2.lan.conf

Faça as alterações necessárias.

<VirtualHost *:80>
 # The ServerName directive sets the request scheme, hostname and port that
 # the server uses to identify itself. This is used when creating
 # redirection URLs. In the context of virtual hosts, the ServerName
 # specifies what hostname must appear in the request's Host: header to
 # match this virtual host. For the default virtual host (this file) this
 # value is not decisive as it is used as a last resort host regardless.
 # However, you must set it for any further virtual host explicitly.
 #ServerName www.example.com

    ServerAdmin webmaster@ostechnix2.lan
    ServerName ostechnix2.lan
    ServerAlias www.ostechnix2.lan
    DocumentRoot /var/www/html/ostechnix2.lan/public_html

Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
 # error, crit, alert, emerg.
 # It is also possible to configure the loglevel for particular
 # modules, e.g.
 #LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

For most configuration files from conf-available/, which are
 # enabled or disabled at a global level, it is possible to
 # include a line for only one particular virtual host. For example the
 # following line enables the CGI configuration for this host only
 # after it has been globally disabled with "a2disconf".
 #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Salve/feche o arquivo.

5. Habilitar arquivos de configuração de host virtual

Depois de fazer as alterações necessárias, desative o arquivo de configuração do host virtual padrão, ou seja, 000.default.conf, e ative todos os arquivos de configuração do host virtual recém-criados, conforme mostrado abaixo.

sudo a2dissite 000-default.conf
sudo a2ensite ostechnix1.lan.conf
sudo a2ensite ostechnix2.lan.conf

Reinicie o servidor web Apache para que as alterações tenham efeito.

sudo systemctl restart apache2

É isso. Configuramos hosts virtuais com sucesso no Apache. Vamos em frente e verificar se estão funcionando ou não.

6. Testar hosts virtuais

Abra o arquivo /etc/hosts em qualquer editor:

sudo vi /etc/hosts

Adicione todos os seus sites/domínios virtuais um por um, como abaixo.

[...]
192.168.225.22   ostechnix1.lan
192.168.225.22   ostechnix2.lan
[...]

Observe que se você deseja acessar os hosts virtuais de qualquer sistema remoto, você deve adicionar as linhas acima no arquivo /etc/hosts de cada sistema remoto.

Salve e feche o arquivo.

Abra seu navegador e acesse http://ostechnix1.lan ou http://ostechnix2.lan.

página de teste ostechnix1.lan:

página de teste ostechnix2.lan:

Parabéns! Agora você pode acessar todos os seus sites. A partir de agora, você pode fazer upload dos dados e servi-los em diferentes sites.

Como você notou, usamos o mesmo endereço IP (ou seja, 192.168.225.22) para hospedar dois sites diferentes (http://ostechnix1.lan e http://ostechnix2.lan). Isso é o que chamamos de hospedagem virtual baseada em nomes. Espero que isto ajude. Mostrarei como configurar a hospedagem virtual baseada em IP no próximo guia. Até então, fique ligado!

Recurso: 

  • Documentação do host virtual Apache

Artigos relacionados