Comment déménager un hébergement web sans trop de perturbations ?
Je veux changer d’hébergement un site Internet. Le site Internet est sur un vieux Debian et je veux le migrer sur un nouveau Debian. Le souci est que le changement d'adresse IP oblige une propagation DNS qui peut prendre 24 heures. Cela implique pendant cette transition de figer les écritures dans les fichiers du site. Ce qui n'est pas pensable.
Apache propose une fonctionnalité qui s'appelle “reverse proxy”. Il permet d'être le destinataire d'un appel à un site et transmettre cette requête à un autre serveur Apache.
De la résolution du nom de domaine à la réponse du serveur Web
Les noms de domaines et adresses IP utilisés dans cette page ne sont que fictions.
D'abord, comprenons comment l'accès à un site fonctionne. Lorsque que j’appelle le site perdu.com
, le système DNS se met en œuvre pour fournir une adresse IP à votre ordinateur. C'est le principe d'un nom de domaine : associé une adresse IP à un nom. Donc, au moment de la création du nom de domaine, l'adresse IP a été renseignée.
Cette adresse IP a été définie au moment de la création de l’hébergement du site Internet. C'est l'adresse du serveur Web Apache.
Avec un serveur Web, il peut y avoir plusieurs sites hébergés. Le serveur Web Apache peut gérer plusieurs sites Internet. De ce fait, une adresse IP peut correspondre à plusieurs sites Internet, donc plusieurs noms de domaine.
Dans notre exemple, nous avons le site perdu.com
et le site trouve.com
qui correspondent tous les deux à l'adresse 208.97.177.124, donc au même serveur Web.
On peut utiliser le site ipinfo.io pour vérifier le nombre de sites hébergés par un serveur.
Lorsque le serveur Web Apache va recevoir la demande provenant de la demande d'accès, il recevra le nom de domaine dans le paramètre Host
. C'est le protocole HTTP.
Et grâce à la configuration des sites Web, Apache sera capable de récupérer les fichiers associés au bon nom de domaine. Voici un exemple de configuration du serveur :
# Apache doit écouter sur le port 80 Listen 80 # Toutes les adresses IP doivent répondre aux requêtes sur les # serveurs virtuels NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/trouve.com ServerName trouve.com # Autres directives ici </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/perdu.com ServerName perdu.com # Autres directives ici </VirtualHost>
Pour résumer, votre serveur ne dispose que d'une seule adresse IP, et de nombreux alias (CNAMES) peuvent pointer vers cette adresse dans le DNS.
D'autres exemples sont disponibles sur le site Apache 2.4
Transfert des fichiers
En attendant, je vais transférer les fichiers du site actuel vers le nouveau serveur Web (103.224.182.253).
Le transfert va s'effectuer en deux passes. La première passe permet de transférer le plus gros du site. Il faut prendre en considération tous les gros fichiers qui peuvent prendre du temps à copier, ou tous les petits fichiers qui sont nombreux et peuvent prendre également du temps à transférer.
rsync -avz /var/www/perdu.com -e "ssh -p 11822" chloe@103.224.182.253:"/var/www/"
rsync
doit être installé sur le serveur distant.
Une fois cette opération terminer, il faudra effectuer une seconde passe pour synchroniser les fichiers fraichement modifiés. Durant cette phase, il faudra veiller à ce que le site soit inaccessible.
Reverse Proxy
Je vais employer une directive de proxy dans Apache pour transférer le nom de domaine vers le nouveau serveur web (103.224.182.253).
Sur l'ancien serveur Web, je vais activer le mode Proxy :
sudo a2enmod proxy_http
Je vais utiliser les directives proxyPass
et proxyPassReverse
pour indiquer l'adresse IP du nouveau serveur :
<VirtualHost *:80> ProxyPreserveHost On ProxyPass "/" "http://103.224.182.253/" ProxyPassReverse "/" "http://103.224.182.253/" ServerName perdu.com </VirtualHost>
A partir de maintenant, le site peut de nouveau être opérationnel :
sudo service apache2 restart
On peut désormais s'occuper des DNS pour modifier l'adresse IP associée au nom de domaine.
— Cédric ABONNEL dit Cédrix 2019/08/02 18:09