14. Hospedar vários sites em um único servidor Ubuntu: dicas úteis

Introdução

Hospedar vários sites em um único servidor Ubuntu é uma solução econômica para desenvolvedores, pequenas empresas e entusiastas. Este guia mostrará como configurar hosts virtuais em Apache e Nginx para hospedar vários sites no mesmo servidor. Ao final deste tutorial, você poderá configurar o seu servidor para lidar com vários domínios ou subdomínios de forma eficiente.


Artigos anteriores:

01. Introdução ao servidor Ubuntu – SysOSX: AI & Cloud

02. Como configurar o seu primeiro servidor Ubuntu: guia para iniciantes – SysOSX: AI & Cloud

03. Dominando a linha de comando do Linux para o servidor Ubuntu – SysOSX: AI & Cloud

04. Gerenciar usuários e permissões no servidor Ubuntu: guia completo – SysOSX: AI & Cloud

05. Fundamentos de rede para o servidor Ubuntu: guia completo – SysOSX: AI & Cloud

06. Instalar e gerenciar software no servidor Ubuntu: guia completo – SysOSX: AI & Cloud

07.Aplicar patches e atualizar o servidor Ubuntu: guia completo – SysOSX: AI & Cloud

08. Proteger o seu servidor Ubuntu: passos práticos de hardening e proteção – SysOSX: AI & Cloud

09. Auditoria e registro de servidores Ubuntu

10. Ferramentas de monitoramento de sistema para o servidor Ubuntu: guia completo – SysOSX: AI & Cloud

11. Registro centralizado para o servidor Ubuntu: um guia indispensável – SysOSX: AI & Cloud

12. Auditoria e conformidade para o servidor Ubuntu: práticas recomendadas – SysOSX: AI & Cloud

13. Configurar o seu servidor Ubuntu para hospedagem e aplicações web: guia definitivo – SysOSX: AI & Cloud



Pré-requisitos

Para seguir este guia, verifique se você tem:

  • Um servidor Ubuntu (versão 20.04 ou posterior é recomendada).
  • Uma conta de usuário com privilégios sudo .
  • Vários nomes de domínio apontando para o endereço IP do seu servidor.
  • Conhecimento básico de comandos do Linux.

Parte 1: hospedar vários sites com o Apache


Etapa 1: instalar o servidor web Apache

Se o Apache ainda não estiver instalado, execute o comando a seguir:

sudo apt update && sudo apt install apache2 -y


Etapa 2: configurar hosts virtuais para cada site

O Apache usa hosts virtuais para servir vários sites a partir de um servidor. Cada site terá o seu próprio arquivo de configuração de host virtual.

Criar diretórios para os sites

  • Crie diretórios separados para cada site:
sudo mkdir -p /var/www/website1.com /var/www/website2.com
  • Atribua a propriedade desses diretórios à sua conta de usuário:
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com

Criar arquivos de configuração de hosts virtuais

  • Crie um arquivo de configuração para o primeiro site:
sudo nano /etc/apache2/sites-available/website1.com.conf
  • Adicione a seguinte configuração:
<VirtualHost *:80>
    ServerName website1.com
    ServerAlias www.website1.com
    DocumentRoot /var/www/website1.com
    ErrorLog ${APACHE_LOG_DIR}/website1_error.log
    CustomLog ${APACHE_LOG_DIR}/website1_access.log combined
</VirtualHost>

  • Crie um arquivo de configuração para o segundo site:
sudo nano /etc/apache2/sites-available/website2.com.conf
  • Adicione a seguinte configuração:
<VirtualHost *:80>
    ServerName website2.com
    ServerAlias www.website2.com
    DocumentRoot /var/www/website2.com
    ErrorLog ${APACHE_LOG_DIR}/website2_error.log
    CustomLog ${APACHE_LOG_DIR}/website2_access.log combined
</VirtualHost>

Habilitar hosts virtuais

  • Habilite as configurações de hosts virtuais:
sudo a2ensite website1.com.conf
sudo a2ensite website2.com.conf
  • Recarregue o Apache para aplicar as alterações:
sudo systemctl reload apache2

Etapa 3: testar a configuração do Apache

  • Crie um arquivo index.html simples para cada site:
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html


  • Acesse http://website1.com e http://website2.com no seu navegador para verificar a configuração.

Etapa 4: proteger os sites com SSL/TLS

Instalar o Certbot

Instale o Certbot com o plugin do Apache:

sudo apt install certbot python3-certbot-apache -y

Obter certificados SSL

Execute o Certbot para cada site:

sudo certbot --apache -d website1.com -d www.website1.com
sudo certbot --apache -d website2.com -d www.website2.com

O Certbot configurará o SSL automaticamente para ambos os sites e redirecionará o tráfego HTTP para HTTPS.


Parte 2: hospedar vários sites com o Nginx


Etapa 1: instalar o servidor web Nginx

Se o Nginx ainda não estiver instalado, execute:

sudo apt update && sudo apt install nginx -y


Etapa 2: configurar blocos de servidor para cada site

O Nginx usa blocos de servidor (semelhantes aos hosts virtuais do Apache) para servir vários sites a partir de um servidor.

Criar diretórios para os sites

  • Crie diretórios separados para cada site:
sudo mkdir -p /var/www/website1.com /var/www/website2.com
  • Atribua a propriedade desses diretórios à sua conta de usuário:
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com

Criar arquivos de configuração de blocos de servidor

  • Crie um arquivo de configuração para o primeiro site:
sudo nano /etc/nginx/sites-available/website1.com

  • Adicione a seguinte configuração:
server {
    listen 80;
    server_name website1.com www.website1.com;

    root /var/www/website1.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/website1_error.log;
    access_log /var/log/nginx/website1_access.log;
}

  • Crie um arquivo de configuração para o segundo site:
sudo nano /etc/nginx/sites-available/website2.com

  • Adicione a seguinte configuração:
server {
    listen 80;
    server_name website2.com www.website2.com;

    root /var/www/website2.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/website2_error.log;
    access_log /var/log/nginx/website2_access.log;
}

Habilitar blocos de servidor

  • Crie links simbólicos para habilitar os blocos de servidor:
sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/

  • Teste a configuração do Nginx:
sudo nginx -t
  • Recarregue o Nginx para aplicar as alterações:
sudo systemctl reload nginx

Etapa 3: testar a configuração do Nginx

  • Crie um arquivo index.html simples para cada site:
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html

  • Acesse http://website1.com e http://website2.com no seu navegador para verificar a configuração.

Etapa 4: proteger os sites com SSL/TLS

Instalar o Certbot

Instale o Certbot com o plugin do Nginx:

sudo apt install certbot python3-certbot-nginx -y

Obter certificados SSL

Execute o Certbot para cada site:

sudo certbot --nginx -d website1.com -d www.website1.com
sudo certbot --nginx -d website2.com -d www.website2.com

O Certbot configurará o SSL automaticamente para ambos os sites e redirecionará o tráfego HTTP para HTTPS.


Referências

Conclusão

Hospedar vários sites em um único servidor Ubuntu é uma maneira prática e econômica de gerenciar aplicações web ou domínios. Quer você use Apache ou Nginx, o processo envolve criar diretórios, configurar hosts virtuais ou blocos de servidor e proteger os seus sites com certificados SSL/TLS usando o Certbot. Ao seguir este guia, você pode hospedar vários domínios ou subdomínios com eficiência, garantindo que o seu servidor esteja otimizado para escalabilidade e segurança.

Tanto o Apache quanto o Nginx são servidores web poderosos, e a escolha entre eles geralmente depende dos seus requisitos específicos. O Apache oferece amplas opções de configuração e compatibilidade, enquanto o Nginx se destaca em desempenho e no tratamento de conexões simultâneas. Qualquer que seja a sua escolha, este guia fornece o conhecimento básico para gerenciar vários sites com eficácia.


Fique atento ao próximo tema: Gerenciar armazenamento e discos em um servidor Ubuntu Neste próximo guia, você aprenderá a configurar a inicialização de discos, criar partições para diferentes sistemas de arquivos e expandir discos, incluindo a montagem no sistema de arquivos. Não perca!