Sur une connexion béninoise, j’ai réduit mon temps de déploiement d’un site Web de quatre heures à trente minutes.
Trois problèmes, une solution…
Lors de l’upload d’un site Web, les connexions à bas débits posent plusieurs problèmes et le premier est l’intégrité des fichiers. Je prends l’exemple d’un projet à base de WordPress classique : plus de mille trois cents fichiers et dossiers. En les transférant directement par un logiciel client FTP sur une connexion un peu faible, le risque que l’un des fichiers n’arrive pas entier est élevé.
Les problèmes suivants sont la bande passante et le temps de transfert. Transférer des centaines de petits fichiers demande de nombreuses commandes FTP. Les transférer en une seule opération est moins couteux en bande passante et en temps. Le site est en outre composé de nombreux fichiers textuels qui gagneraient à être compressés le temps de l’upload.
Nous allons donc compresser tout le site Web avant de le transférer.
Il nous faudra ensuite le décompresser sur le serveur distant. En hébergement mutualisé nos n’avons pas accès au shell distant via SSH. Notre seul outil est le langage PHP. Utilisons-le.
PHP donne accès au shell du serveur au travers des commandes exec, passthru et system. La dernière affiche la sortie de la commande et donc les éventuels messages d’erreurs, c’est elle que nous utiliserons. Certains hébergeurs proposent aussi un module ZipArchive
. Nous avons donc l’embarras du choix.
La procédure à suivre
- Compresser le site Web en un seul fichier « deploy.tar.bz2 » ou « deploy.tar.gz ».
- Depuis le client FTP (par exemple FileZilla), sur l’hébergement distant, créer un dossier caché
.tmp1234
(pour une plus grande sécurité, remplacer « tmp1234 » par un code de votre choix). Puis y transférer le fichier compressé ainsi que le fichier PHP chargé de la décompression. Je donne plus bas les codes PHP pour les différents formats. - Depuis un navigateur, charger la page PHP de décompression. Par exemple :
www.votre-site-web.com/.tmp1234/uncompress-tarbz2.php
. - Depuis le client FTP, rafraichir l’affichage du contenu du dossier caché. Le site Web décompressé s’y trouve. Le déplacer à la racine ou au bon endroit dans le site via un glisser-déplacer sur le dossier parent
..
. - Depuis le client FTP toujours, supprimer le dossier caché et son contenu (le fichier compressé et la PHP de décompression).
Codes PHP de décompression
Vous choisirez le fichier PHP qu’il vous faut selon le format de compression.
Décompresser le format .tar.bz2
Le contenu du fichier uncompress-tarbz2.php
:
<?php $res = system('tar -xjf deploy.tar.bz2'); echo $res === false ? 'failed' : 'ok';
Décompresser le format .tar.gz
Le contenu du fichier uncompress-targz.php
:
<?php $res = system('tar -xzf deploy.tar.gz'); echo $res === false ? 'failed' : 'ok';
Décompresser le format .zip
par le module PHP
Le contenu du fichier uncompress-zip.php
ne fonctionnera pas sur tous les hébergeurs. Il s’appuie sur le module ZipArchive de PHP :
<?php $zip = new ZipArchive(); $res = $zip->open('deploy.zip'); if ($res === true) { $zip->extractTo('./'); $zip->close(); echo 'ok'; } else echo 'failed';
Décompresser le format .zip
par la commande Shell
Si l’utilitaire unzip
est installé chez l’hébergeur, on peut tenter de décompresser les fichiers .zip
par le shell. Voici le contenu de uncompress-zip-alt.php
:
<?php $res = system('unzip deploy.zip'); echo $res === false ? 'failed' : 'ok';
Merci, cet article m’a bien aidé pour la décompression d’une archive d’un site contenant dossiers et sous dossiers.
Toutes les méthodes que j’avais essayé ne voulaient pas reproduire l’arborescence de l’archive, jusqu’à cette page.
cordialement, H.F.M@3aC