Déploiement de l'application MyCentraleAssos
Configuration du serveur (Apache & MySQL)
Une fois le serveur configuré
Il faut placer le fichier de déploiement deploy.sh dans le dossier où l'on souhaite faire l'installation.
- deploy.sh
#!/bin/bash #Requiert NPM, PHP 7.2 & COMPOSER ############# ############# ##Déclarations des variables chemin="/var/www/dev-my.centrale-assos.fr" dossier="plateforme-assos" url_git=ssh://git@git.centrale-marseille.fr/ginfo/plateform-assos/plateforme-assos.git ############## ############## #NE PAS EDITER EN DESSOUS #Constructions d'autres variables chemin_web=$chemin/$dossier rel_upload="public/upload" chemin_upload=$chemin_web/$rel_upload chemin_temporaire=$chemin/temp chemin_temporaire_racine=$chemin_temporaire/$dossier chemin_temporaire_upload=$chemin_temporaire/$dossier/$rel_upload if [ -d $chemin_temporaire ]; then echo "Un déploiement semble déjà en cours (dossier temp existant), merci d'attendre ou de supprimer le dossier";exit 1; fi read -p "Ceci est-il un premier déploiement ? (y/n)" choice case "$choice" in y|Y ) new_deployment=1;; n|N ) new_deployment=0;; * ) echo "Réponse invalide";exit1;; esac #Vérification que tout est bon echo "Le chemin absolu du projet est "$chemin_web if [ $new_deployment = 0 ]; then echo "Le chemin des uploads du projet est "$chemin_upload echo "Le chemin temporaire pour la migration est "$chemin_temporaire echo "La racine du chemin temporaire est "$chemin_temporaire_racine echo "La racine des uploads pour le chemin temporaire est "$chemin_temporaire_upload fi read -p "Confirmez vous toutes les informations ci dessus (y/n)?" choice case "$choice" in y|Y );; n|N ) echo "Déploiement stoppé";exit 1;; * ) echo "Réponse invalide";exit1;; esac #Fonction de déploiement function pre_deploy { #On vérifie que sur l ancienne install on avait bien un dossier d upload if [ ! -d $chemin_upload ] && [ $new_deployment = 0 ]; then read -p "Dossier d'upload non trouvé dans "$chemin_upload", poursuivre l'installation ? (NE PAS CONTINUER SI CE N'EST PAS UNE PREMIERE INSTALLATION) (y/n)?" choice case "$choice" in y|Y );; n|N ) echo "Déploiement stoppé";exit 1;; * ) echo "Réponse invalide";exit 1;; esac fi if [ ! -f $chemin_web/.env ] && [ $new_deployment = 0 ]; then echo "Fichier .env non trouvé dans "$chemin_web" déploiement interrompu";exit 1; fi if [ -d $chemin_web ] && [ $new_deployment = 1 ]; then echo "Un dossier a été trouvé en "chemin_web", cela ne peut pas être un nouveau déploiement" ;exit 1; fi #Si tout va bien on peut commencer à faire le projet dans le dossier temp mkdir $chemin_temporaire; cd $chemin_temporaire; echo "Téléchargement du projet" git clone $url_git $dossier if [ -d $chemin_upload ]; then mkdir -p $chemin_temporaire_upload echo "Copie du dossier des uploads" cp -R $chemin_upload/* $chemin_temporaire_upload echo "Fichiers d'uplaods copiés dans "$chemin_temporaire_upload fi if [ -f $chemin_web/.env ]; then echo "Copie du fichier d'environnement" cp -R $chemin_web/.env $chemin_temporaire_racine/.env echo "Fichier .env copié dans "$chemin_temporaire_racine fi #Maintenant on passe à l'installation des dépendances cd $chemin_temporaire_racine echo "Installation des dépendances back" composer install echo "Installation des dépendances front" npm install echo "Compilation des dépendances front" npm run build } function deploy { read -p "Le déploiement va commencer confirmer (y/n)?" choice case "$choice" in y|Y );; n|N ) echo "Déploiement stoppé";rm -R $chemin_temporaire;exit 1;; * ) echo "Réponse invalide, déploiement stoppé";rm -R $chemin_temporaire;exit 1;; esac if [ -d $chemin_web ]; then echo "Suppression du dossier racine principal" rm -R $chemin_web fi echo "Déplacement du dossier temporaire vers le dossier principal" mv $chemin_temporaire_racine $chemin echo "Suppression du dossier temporaire" rm -R $chemin_temporaire } function post_deploy { cd $chemin_web php bin/console cache:clear --env=prod chown -R www-data:www-data $chemin if [ $new_deployment = 1 ]; then echo "Il vous reste maintenant à créer la base de donnée avec php bin/console doctrine:database:create après avoir configuré le fichier .env" fi } pre_deploy deploy post_deploy