From b5aba2d67c0b3f7ea828f134188739e83a623b27 Mon Sep 17 00:00:00 2001 From: yohann Date: Thu, 24 Mar 2022 14:49:31 +0100 Subject: [PATCH] update doc --- readme.md | 70 +++++++++++++++++++++---------------------------------- 1 file changed, 26 insertions(+), 44 deletions(-) diff --git a/readme.md b/readme.md index 9d02328..9e01c5f 100644 --- a/readme.md +++ b/readme.md @@ -5,9 +5,9 @@ L'objectif est d'automatiser des déploiements à l'aide de playbook Ansible et de son écosystème Ce projet devra comprendre un : - - Déploiement serveur (nginx, mariadb, php, composer, nodejs) - - Déploiement applicatif (Symfony blog) - - https://forge.univ-lyon1.fr/iut-lyon-lp-devops-ansible/symfony-blog + - Déploiement serveur (nginx, mysql, php, composer, nodejs) + - Déploiement applicatif (ProjectSend) + - https://github.com/projectsend/projectsend #### Groupe ou individuel: Ce projet peut se faire en binôme ou individuellement @@ -34,28 +34,30 @@ L'architecture doit permettre le déploiement sur des environnements de : - prod #### Serveur +**!! ATTENTION !!! PAS DE ROLE PROVENANT DE LA COMMUNAUTÉ GALAXY POUR LA PARTIE APPLICATIF** Il doit être possible de déployer les parties suivantes (séparément ou "all-in-one") : + - apt: + - zip + - unzip - serveur web (nginx) - Configuration: Activer le Gzip (https://www.digitalocean.com/community/tools/nginx) - Vhost pour Symfony: [https://symfony.com/doc/current/setup/web_server_configuration.html#nginx] - - base de données (mariadb) - - (?TODO Check timeout sur installation de la clé) Installer la version : [10.5](https://downloads.mariadb.org/mariadb/repositories/#distro=Ubuntu&distro_release=focal--ubuntu_focal&mirror=cnrs&version=10.5) + - base de données (mysql) - config: create database / create user and password - applicatif (php / composer / git / npm ) - php - version 7.4 - - Extensions: JSON, zip, mysql, intl, fpm, xml + - Extensions: php7.4-mysql php7.4-mbstring php7.4-gd php7.4-xml php-7.4-gmp php-7.4-zip - config: - max_execution_time: 60 - memory_limit: 256M - composer: - version 1.* - - la commande suivante suffit normalement: `apt install composer` + - la commande suivante suffit normalement: `apt install composer` + - nodejs / npm #### Applicatif - -**!! ATTENTION !!! PAS DE ROLE PROVENANT DE LA COMMUNAUTÉ GALAXY POUR LA PARTIE APPLICATIF** - +** Possibilité d'utiliser le role suivant : https://github.com/ansistrano/deploy** La stratégie de déploiement doit permettre du `atomic deployments` > **Atomic deployments** are a style of code deployment that symlink the most recent version of the code @@ -66,9 +68,6 @@ La stratégie de déploiement doit permettre du `atomic deployments` - Ressource pour en savoir plus sur l'atomic deployment - https://deploybot.com/blog/deploy-complex-apps-with-atomic-sftp-deployments (lire les 3 premières parties) - https://www.ewaldvanderveken.dev/zero-downtime-deployment-of-your-symfony-project-using-capistrano-and-gitlab-ci/ (lire la première partie) - -- Module ansible utilisable: - - https://docs.ansible.com/ansible/2.9/modules/deploy_helper_module.html ``` -- /var/www/html/my-app.com @@ -80,53 +79,36 @@ La stratégie de déploiement doit permettre du `atomic deployments` |-- shared ``` +- Le déploiement de l'applicatif doit prendre en compte la version (release) de l'applicatif (https://github.com/projectsend/projectsend/releases) + - Le chemin de base pour l'installation de l'applicatif sera différent en fonction du serveur - - preprod: /var/www/html/preprod/symfony_blog/... - - prod: /var/www/html/prod/symfony_blog/... + - preprod: /var/www/html/preprod/project_send/... + - prod: /var/www/html/prod/project_send/... - L'applicatif doit comporter une connexion à la base de données -Chaque environnement doit avoir sa propre base de données avec un user et un mot de passe différent. +**Chaque environnement doit avoir sa propre base de données avec un user et un mot de passe différent.** Exemple: - preprod: - - user: symfony_preprod - - pwd: symfony_preprod + - user: project_send_preprod + - pwd: project_send_preprod - prod: - - user: symfony_prod - - pwd: symfony_prod + - user: project_send_prod + - pwd: project_send_prod - Install les dépendances PHP: - composer install -- L'applicatif doit permet d'afficher un titre de blog différent par environnement. -Exemple: -Symfony blog - preprod - -- Variable d'environnement du projet symfony dans le ficher `.env` du projet Symfony blog: - - DATABASE_URL= - - APP_ENV= - - server preprod => dev - - server prod => prod - - APP_SECRET = doit être unique par environnement - - PROJECT_TITLE= - - server preprod => Symfony blog - preprod - - server prod => Symfony blog - prod +- Variable d'environnement du projet project_send pour la configuration de la base de données dans le ficher `sys.config.php` (fichier d'origine: `includes/sys.config.sample.php`) - Commande pour compiler les variables d'environment: - - server preprod : `composer dump-env dev` - - server prod : `composer dump-env prod` - -- Mise à jours de la base de données: - - `bin/console doctrine:migration:migrate -n` - Install et Compiler le JS et SCSS: - npm install - - npm run build + - run gulp: `./node_modules/gulp/bin/gulp.js` -- Pour la preprod: - - Ajouter les données de test (fixtures) - - `bin/console hautelook:fixtures:load` +- Le dossier `upload` dans projectSend doit être partagé (shared) entre les différentes versions de déploiement + #### Conseils - Un code organiser/structurer, tu feras - Sur une/des nouvelle(s) machine(s) (hôte/VM), le professeur lancera - sans erreur, les playbooks seront @@ -147,7 +129,7 @@ Afin de bypass le proxy sur l'execution d'un playbook, vous pouvez ajouter au de APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE: DontWarn ``` -###### Mariadb +###### Mariadb (a voir ??) Pour executer les commandes en rapport avec mariadb (database et user), vous pouvez soit: - changer de user pour devenir root (`become_user`) - ajouter via un template la config dans le fichier `.my.cnf` au user root (`/root/.my.cnf`)