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.come o IP do seu VPS, escritoVPS_IPabaixo
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:
Bashphp -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:
Bashmkdir -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):
Bashmysqldump --single-transaction -u DBUSER -p DBNAME > db.sql
3. Preparar a stack no VPS
Bashsudo 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:
Nginx1server { 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}
Bashsudo 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
Bashsudo 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):
BashVPS_IP example.com www.example.com
Ou teste sem alterar nada:
Bashcurl -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:
Bashsudo 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.