PHP – Déployer facilement votre projet en FTP
Nous allons voir comment automatiser une très grosse partie (voir tout dans certain) de votre projet. On vas utiliser un « programme » écrit en PHP.
Spoiler : On peut l’utiliser pour déployer toutes sortes de projet à partir du moment que vous avez PHP installé sur votre poste.
Beaucoup vont me dire « oui, le FTP c’est trop vieux, c’est dépasser » ou encore « le FTP berk, passe en ssh ». Personnellement, je trouve que le FTP fait son taff, et pour les besoins que j’ai cela me suffit largement. Surtout que le FTP est compatible avec 99% des hébergeurs pour ne pas dire 100%. Du coup, si vous avez un serveur mutualiser comme moi, ben ça va fonctionner ?
Table of Contents
Petit intro :
On a tous utilisé filezilla pour uploader les fichiers sur notre serveur, cela dit il fait très bien le taff sauf que si on modifie un ou deux fichiers. Il fallait ce souvenir des fichiers que l’on avait modifier. Ensuite, ouvrir filezilla, checker les fichiers et les envoyer sur le serveur. Si vous aviez la flemme vous sélectionnez tout, puis envoyer et la bammm erreur en prod parce que ……… vous avez envoyer des fichiers de configuration propre à votre environnement local , ou des fichiers totalement inutiles les .scss par exemple. Maintenant, en une ligne (ou deux) de commandes dans votre environnement de dev (VS code =D ) les fichiers seulement modifier seront pousser sur votre serveur héhé malin.
Passons au chose sérieuse, le petit projet s’appel ftp-deployment, c’est un fichier phare. Il est assez léger 16ko et fait très très bien le tafff.
A oui : j’oublier seul les fichiers modifié sa=ont envoyer au serveur, gain de temps absolu. C’est pas beau tout ca.
Installation
Personnellement (cela n’engage que moi), dans mes projets, je préfère crée un petit dossier « deployment » qui me permet de mettre le fichier phare et le fichier de configuration ou les fichiers, si vous avez plusieurs environnements à déployer par exemple un de test et un de production ce qui est mon cas.
Télécharger la dernière version en realese sur le github et placer le fichier phare dans le dossier « deployment ».
Configuration
Un fichier de configuration pour la version de production
[version_production] ; There may be more than one section ; Config server remote = ftp://ADRESSE_FTP_DU_SERVEUR user = MON_IDENTIANT_FTP password = MON_MDP_FTP ; FTP passive mode passiveMode = yes ; local path (optional) local = './../' ; run in test-mode? (can be enabled by option -t or --test too) test = no ; files and directories to ignore ignore = " *.scss /.idea/* /.vscode/* .gitignore maintenance.lock.html " ; jobs to run before uploading ; local jobs are done even if there is no need for synchronization before[] = upload: maintenance.lock.html maintenance.html ; jobs to run after everything (upload, rename, delete, purge) is done ; local jobs are done even if the synchronization did not take place after[] = remote: unlink maintenance.html ; is allowed to delete remote files? (defaults to yes) allowDelete = yes ; file which contains hashes of all uploaded files (defaults to .htdeployment) deploymentFile = .deployment ; default permissions for new files filePermissions = 0644 ; default permissions for new directories dirPermissions = 0755
On peut aussi ignorer certains fichiers, cela fonctionne comme le « .gitignore ». On peut voir que dans l’exemple au dessus, nous ignorons tous les fichiers scss, le dossier « .idea », le dossier « .vscode », etc. Vous pouvez ainsie minimiser au maximun les fichiers transferet vers le serveur.
Dans ce fichier de déploiement, on peut voir que j’ai dans mon projet un fichier « maintenance.lock.html » qui est uploader sur le serveur juste avant le déploiement. Il est ensuite supprimer automatique à la fin de celui-ci. Pour me simplifier la vie, j’ai créé dans mon fichier « index.php », un test si le fichier « mainteance.html » alors tu me l’affiche (pssssite le code est en dessous). Comme ca, les visiteur sont automatiquement alerté que le site est en cours de maintenance provisoire.
Code bonus : uniquement si vous utiliser un fichier de maintenance pour votre site.
if( file_exists('maintenance.html') ): echo file_get_contents('maintenance.html'); return; endif;
Fichier de lancement
Créer un fichier php « prod.deployemnt.php » est coller ceci
<?php passthru('php deployment.phar prod.deployment.ini');
Ce petit morceau de code permet de lancer l’exécution d’un programme externe avec des arguments. On vient donc lancer le fichier « deployment.phar » comme argument, on lui passe le fichier de configuration créé précédemment.
Déploiement :
Dans votre terminale à la racine du projet faite
cd deployment
Puis
php prod.deployemnt.php
Et hope votre site est en ligne en quelques seconde, pas mal hein.
Laisser un petit commentaire si le tuto vous a plus.