Migrer un site d'un hébergement mutualisé vers un VPS Linux

3 min
Hébergement VPS/VDS

Passer un site PHP/MySQL sur un VPS Linux Infrawire vous donne des ressources dédiées et la maîtrise complète de la pile. La clé d'une migration sans douleur : tout préparer sur le nouveau serveur, le tester avant de toucher au DNS, puis seulement basculer le trafic. Ce guide suit cet ordre.

📋 Prérequis

  • Un VPS Linux sous Ubuntu 24.04 ou Debian 12 (l'IP et le mot de passe root se trouvent dans votre espace client)
  • Un accès à l'hébergement mutualisé (gestionnaire de fichiers, FTP/SSH et un outil de base de données comme phpMyAdmin)
  • Un accès à la zone DNS de votre domaine
  • Un domaine example.com et l'IP de votre VPS, notée VPS_IP ci-dessous

1. Faire l'inventaire de l'ancien site

Notez ce dont le site a besoin : version de PHP, extensions, nom de la base, tâches cron, règles .htaccess, certificat SSL et surtout l'endroit où sont hébergés vos e-mails. Dans l'ancien panneau de contrôle, relevez la version de PHP ; si vous avez un accès SSH :

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

Abaissez aussi dès maintenant le TTL de vos enregistrements DNS à 300 secondes, au moins un jour avant la migration, pour que la bascule finale soit rapide.

2. Exporter les fichiers et la base

Depuis le VPS, vous pouvez récupérer les fichiers directement si l'ancien hébergeur propose le SSH :

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

Sans SSH, téléchargez une archive par FTP ou via le gestionnaire de fichiers, puis envoyez-la avec scp. Exportez la base avec mysqldump (ou le bouton Exporter de phpMyAdmin) :

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

3. Préparer la pile sur le 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

Ubuntu 24.04 fournit PHP 8.3 et Debian 12 PHP 8.2 ; le socket est /run/php/php8.3-fpm.sock ou /run/php/php8.2-fpm.sock. Créez le site Nginx dans /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

Nginx ignore .htaccess : traduisez ses règles de réécriture en blocs location.

4. Importer les fichiers et la base

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

Modifiez ensuite la configuration de l'application (par exemple wp-config.php) avec le nouveau nom de base, l'utilisateur et le mot de passe. L'hôte devient localhost.

5. Tester avant la bascule

Sur votre propre ordinateur, faites pointer le domaine vers le VPS en éditant le fichier hosts (/etc/hosts sous Linux et macOS, C:\Windows\System32\drivers\etc\hosts sous Windows) :

Bash
VPS_IP example.com www.example.com

Ou testez sans rien modifier :

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

Parcourez le site, connectez-vous, envoyez un formulaire et consultez les journaux dans /var/log/nginx/error.log. Retirez ensuite la ligne du fichier hosts.

6. Basculer le DNS et gérer les e-mails

Figez les modifications de contenu sur l'ancien site, relancez le rsync ainsi que l'export/import de la base pour récupérer les changements récents, puis changez l'enregistrement A vers VPS_IP et l'enregistrement AAAA vers l'adresse IPv6 du VPS. Une fois le DNS propagé, émettez le certificat :

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

E-mails : ne modifiez que les enregistrements A/AAAA. Laissez les enregistrements MX, SPF et DKIM intacts si vos boîtes restent chez l'ancien fournisseur. Ne résiliez l'ancien hébergement qu'après quelques jours sans incident.

🔧 Dépannage

502 Bad Gateway
Le socket PHP de fastcgi_pass ne correspond pas à la version installée. Vérifiez avec ls /run/php/ et systemctl status php8.3-fpm.

« Error establishing a database connection »
Identifiants ou hôte incorrects dans le fichier de configuration. Testez avec mysql -u dbuser -p dbname.

403 ou page blanche
Vérifiez le propriétaire et les permissions (chown -R www-data:www-data), puis consultez sudo tail -n 50 /var/log/nginx/error.log et les journaux PHP.

L'ancien site s'affiche encore après la bascule
Les caches DNS sont toujours actifs. Vérifiez avec dig +short example.com et attendez l'expiration du TTL.


✅ Votre site tourne désormais sur son propre VPS, migré sans interruption et avec un retour en arrière possible.

Restez à jour avec les dernières offres, réductions et promotions spéciales.

Voir les promotions

Nous utilisons des cookies

Nous utilisons des cookies analytiques pour améliorer votre expérience sur notre site. Aucune donnée n'est revendue à des tiers. En savoir plus dans notre politique de confidentialité.