Implantação de servidor web com hosts virtuais e SSL
1. Preparação do ambiente
Chegou a hora de juntar tudo. Hoje, vamos fazer o deploy de um servidor com múltiplos hosts virtuais e conectar HTTPS a eles. Vamos testar, fazer debug e ajustar a configuração final.
Nosso objetivo
Neste projeto, vamos configurar dois sites em um servidor web:
- example.com
- test.com
Para cada site, vamos configurar um host virtual, conectar HTTPS e também mostrar os passos de debug e verificação do funcionamento. Tá preparado? Vamos lá!
Preparação
Antes de começar, vamos garantir que tudo está configurado corretamente:
Você já tem um servidor web instalado (Nginx ou Apache).
Se você usa Nginx:
sudo apt-get update sudo apt-get install nginx
Ou Apache:
sudo apt-get update sudo apt-get install apache2
O pacote Certbot para trabalhar com SSL está instalado.
Para Nginx:
sudo apt-get install certbot python3-certbot-nginx
Para Apache:
sudo apt-get install certbot python3-certbot-apache
Você tem acesso ao servidor onde os DNS para os domínios example.com e test.com estão configurados, ou pode usar o
/etc/hosts
para testes.
2. Configurando diretórios para cada site
Vamos começar criando os diretórios e arquivos para nossos sites.
Passo 1: Criando pastas para os sites
sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com
Passo 2: Criando arquivos HTML de teste
Vamos criar um arquivo HTML simples para cada site:
example.com
sudo nano /var/www/example.com/index.html
Conteúdo:
<!DOCTYPE html>
<html>
<head>
<title>Bem-vindo ao example.com</title>
</head>
<body>
<h1>Este é o example.com</h1>
<p>Bem-vindo ao example.com! O site está no ar e seguro com SSL!</p>
</body>
</html>
test.com
sudo nano /var/www/test.com/index.html
Conteúdo:
<!DOCTYPE html>
<html>
<head>
<title>Bem-vindo ao test.com</title>
</head>
<body>
<h1>Este é o test.com</h1>
<p>Bem-vindo ao test.com! O site está no ar e seguro com SSL!</p>
</body>
</html>
3. Configuração de hosts virtuais
Vamos criar um arquivo de configuração separado para cada site.
Passo 1: Configuração para Nginx
example.com
sudo nano /etc/nginx/sites-available/example.com
Conteúdo:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
test.com
sudo nano /etc/nginx/sites-available/test.com
Conteúdo:
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Ativamos a configuração:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Reiniciamos o servidor:
sudo nginx -t
sudo systemctl reload nginx
Passo 2: Configuração para Apache
example.com
sudo nano /etc/apache2/sites-available/example.com.conf
Conteúdo:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
test.com
sudo nano /etc/apache2/sites-available/test.com.conf
Conteúdo:
<VirtualHost *:80>
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com
<Directory /var/www/test.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Ativamos as configurações:
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2
4. Configurando HTTPS para sites
Agora vamos conectar o SSL para ambos os sites usando o Let’s Encrypt.
sudo certbot --nginx
# ou para Apache:
sudo certbot --apache
O processo vai perguntar quais sites você deseja emitir certificados. Selecione example.com
e test.com
. O Certbot vai atualizar automaticamente a configuração dos servidores.
5. Testando os sites
Depois de finalizar a configuração, visite seus sites:
Você deve ver as páginas HTML criadas. Verifique se o navegador está mostrando "Seguro" (Secure) na barra de endereços.
6. Depuração e Verificação
Se algo deu errado, dá uma olhada nos logs:
Para Nginx:
sudo tail -f /var/log/nginx/error.log
Para Apache:
sudo tail -f /var/log/apache2/error.log
Ou verifica a acessibilidade com curl
:
curl -I http://example.com
curl -I https://example.com
7. Renovação de certificados
O Certbot renova automaticamente os certificados usando o cron
do sistema. Para verificar, você pode rodar manualmente:
sudo certbot renew --dry-run
E é isso aí, passo a passo, configuramos o servidor web com suporte a múltiplos sites e HTTPS. Você acabou de passar de um servidor vazio para um totalmente funcional com hosts virtuais e SSL. Agora o seu servidor está pronto para mostrar seus sites para o mundo. Não é massa isso?
GO TO FULL VERSION