Migrar um site de alojamento partilhado para um VPS Linux

3 min
Alojamento VPS/VDS

Passar um site PHP/MySQL para um VPS Linux Infrawire dá-lhe recursos dedicados e controlo total da stack. A chave de uma migração sem dores de cabeça é preparar tudo no novo servidor, testar antes de mexer no DNS e só então mudar o tráfego. Este guia segue essa ordem.

📋 Pré-requisitos

  • Um VPS Linux com Ubuntu 24.04 ou Debian 12 (o IP e a palavra-passe de root estão na sua área de cliente)
  • Acesso ao alojamento partilhado (gestor de ficheiros, FTP/SSH e uma ferramenta de base de dados como o phpMyAdmin)
  • Acesso à zona DNS do seu domínio
  • Um domínio example.com e o IP do seu VPS, escrito VPS_IP abaixo

1. Fazer o inventário do site antigo

Anote do que o site precisa: versão do PHP, extensões, nome da base de dados, tarefas cron, regras .htaccess, certificado SSL e, sobretudo, onde está alojado o seu email. No painel antigo consulte a versão do PHP; se tiver acesso SSH:

Bash
php -v php -m | sort crontab -l

Reduza também já o TTL dos registos DNS para 300 segundos, pelo menos um dia antes da migração, para que a mudança final seja rápida.

2. Exportar ficheiros e base de dados

A partir do VPS pode obter os ficheiros diretamente se o alojamento antigo oferecer SSH:

Bash
mkdir -p ~/migration && cd ~/migration rsync -avz OLDUSER@OLD_HOST:~/public_html/ ./site/

Sem SSH, descarregue um arquivo por FTP ou pelo gestor de ficheiros e envie-o com scp. Exporte a base de dados com mysqldump (ou o botão Exportar do phpMyAdmin):

Bash
mysqldump --single-transaction -u DBUSER -p DBNAME > db.sql

3. Preparar a stack no VPS

Bash
sudo apt update sudo apt install -y nginx mariadb-server php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-gd sudo mysql_secure_installation php -v

O Ubuntu 24.04 traz PHP 8.3 e o Debian 12 traz PHP 8.2; o socket é /run/php/php8.3-fpm.sock ou /run/php/php8.2-fpm.sock. Crie o site Nginx em /etc/nginx/sites-available/example.com:

Nginx
1server { 2 listen 80; 3 listen [::]:80; 4 server_name example.com www.example.com; 5 root /var/www/example.com; 6 index index.php index.html; 7 8 location / { 9 try_files $uri $uri/ /index.php?$args; 10 } 11 12 location ~ \.php$ { 13 include snippets/fastcgi-php.conf; 14 fastcgi_pass unix:/run/php/php8.3-fpm.sock; 15 } 16}
Bash
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx

O Nginx ignora o .htaccess: converta as regras de reescrita em blocos location.

4. Importar ficheiros e base de dados

Bash
sudo mkdir -p /var/www/example.com sudo cp -a ~/migration/site/. /var/www/example.com/ sudo chown -R www-data:www-data /var/www/example.com sudo mysql -e "CREATE DATABASE dbname CHARACTER SET utf8mb4;" sudo mysql -e "CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';" sudo mysql -e "GRANT ALL ON dbname.* TO 'dbuser'@'localhost'; FLUSH PRIVILEGES;" sudo mysql dbname < ~/migration/db.sql

Depois edite a configuração da aplicação (por exemplo wp-config.php) com o novo nome da base de dados, utilizador e palavra-passe. O host passa a ser localhost.

5. Testar antes da mudança

No seu computador, faça o domínio apontar para o VPS editando o ficheiro hosts (/etc/hosts em Linux e macOS, C:\Windows\System32\drivers\etc\hosts em Windows):

Bash
VPS_IP example.com www.example.com

Ou teste sem alterar nada:

Bash
curl -I --resolve example.com:80:VPS_IP http://example.com/

Navegue no site, inicie sessão, envie um formulário e veja os registos em /var/log/nginx/error.log. Depois remova a linha do ficheiro hosts.

6. Mudar o DNS e tratar do email

Congele as alterações de conteúdo no site antigo, repita o rsync e a exportação/importação da base de dados para apanhar as mudanças recentes, e depois altere o registo A para VPS_IP e o registo AAAA para o endereço IPv6 do VPS. Quando o DNS estiver propagado, emita o certificado:

Bash
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com

Email: altere apenas os registos A/AAAA. Deixe os registos MX, SPF e DKIM intactos se as suas caixas de correio continuarem no fornecedor antigo. Só cancele o alojamento antigo depois de alguns dias sem problemas.

🔧 Resolução de problemas

502 Bad Gateway
O socket PHP em fastcgi_pass não corresponde à versão instalada. Verifique com ls /run/php/ e systemctl status php8.3-fpm.

«Error establishing a database connection»
Credenciais ou host errados no ficheiro de configuração. Teste com mysql -u dbuser -p dbname.

403 ou página em branco
Verifique o proprietário e as permissões (chown -R www-data:www-data) e consulte sudo tail -n 50 /var/log/nginx/error.log e os registos do PHP.

O site antigo continua a aparecer após a mudança
As caches DNS ainda estão ativas. Verifique com dig +short example.com e aguarde que o TTL expire.


✅ O seu site já funciona num VPS próprio, migrado sem interrupções e com um caminho seguro de regresso.

Fique a par das últimas ofertas, descontos e promoções especiais.

Ver promoções

Utilizamos cookies

Utilizamos cookies analíticos para melhorar a sua experiência no nosso site. Nenhum dado é vendido a terceiros. Saiba mais na nossa política de privacidade.