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
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!!
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.
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.
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.
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.
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