Tutoriais

Como hospedar vários sites em um único VPS

Como hospedar vários sites em um único VPS

Um único VPS bem configurado pode hospedar dezenas de sites. O segredo está em isolar cada um para que um problema em um site não afete os outros.

O conceito: virtual hosts

O servidor web usa o nome do domínio requisitado (cabeçalho Host) para decidir qual site entregar. Todos os domínios apontam para o mesmo IP, e cada um tem sua própria configuração.

Estrutura recomendada

Para cada site:

  • Um usuário do sistema próprio;
  • Uma pasta própria;
  • Um pool PHP-FPM rodando com esse usuário;
  • Um banco de dados e usuário de banco próprios;
  • Um certificado SSL.

1. Crie o usuário e a pasta

sudo useradd -m -d /var/www/site1 -s /usr/sbin/nologin site1
sudo mkdir -p /var/www/site1/public
sudo chown -R site1:site1 /var/www/site1
sudo chmod 750 /var/www/site1
sudo usermod -aG site1 www-data   # permite ao Nginx ler os arquivos

2. Crie um pool PHP-FPM dedicado

/etc/php/8.3/fpm/pool.d/site1.conf (ajuste a versão):

[site1]
user = site1
group = site1
listen = /run/php/site1.sock
listen.owner = www-data
listen.group = www-data

pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 30s

php_admin_value[open_basedir] = /var/www/site1:/tmp
php_admin_value[upload_max_filesize] = 64M
php_admin_value[post_max_size] = 64M

O modo ondemand é ótimo para muitos sites com pouco tráfego: processos só são criados quando há requisições.

sudo systemctl restart php8.3-fpm

3. Configure o Nginx

/etc/nginx/sites-available/site1.com.br:

server {
    listen 80;
    server_name site1.com.br www.site1.com.br;
    root /var/www/site1/public;
    index index.php index.html;

    access_log /var/log/nginx/site1.access.log;
    error_log  /var/log/nginx/site1.error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/site1.sock;
    }
}
sudo ln -s /etc/nginx/sites-available/site1.com.br /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

4. Banco de dados

CREATE DATABASE site1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site1'@'localhost' IDENTIFIED BY 'SENHA_FORTE';
GRANT ALL PRIVILEGES ON site1.* TO 'site1'@'localhost';

5. SSL

sudo certbot --nginx -d site1.com.br -d www.site1.com.br

Repita os passos para site2, site3...

Bloqueando acessos pelo IP

Evite que o primeiro site responda a requisições para domínios desconhecidos ou pelo IP:

server {
    listen 80 default_server;
    server_name _;
    return 444;
}

Prefere uma interface gráfica?

Painéis como HestiaCP, CloudPanel, CyberPanel e aaPanel automatizam tudo isso: criação de usuários, pools, bancos e SSL com poucos cliques.

Dicas de gestão

  • Backups por site, facilitando restaurações individuais;
  • Monitore o consumo de cada pool (htop filtrando por usuário);
  • Logs separados por site facilitam diagnósticos;
  • Dimensione o VPS pela soma dos picos, com folga.

Conclusão

Consolidar sites em um VPS reduz custos e simplifica a gestão — desde que cada site esteja isolado. Com um VPS-NVME-BR da VittHost, todos os seus sites ganham NVMe e servidores no Brasil.Use o cupom SP-VITT20 e ganhe 20% de desconto na primeira fatura enquanto a promoção estiver ativa.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS