# Installation de Plan De Charge ## Prérequis - python3 - sqlite ( pour le développement et les tests unitaires ) - chrome-driver et chromium ( pour les tests unitaires) - postgresql ou mysql/mariadb ( pour la production ) ## Obtenir un répertoire fonctionnel export GIT_SSL_NO_VERIFY=1 git clone https://gitlab.irap.omp.eu/PDC-IRAP/pdc-web.git cd pdc-web git checkout dev # éventuellement travailler avec la branche la plus à jour ### Installer l'environment python python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install -r requirements.txt ### Configurer l'application Les fichiers de configuration fournis dans le répertoire ./resources sont à copier à la racine du projet, mais peuvent être laissés tels quels pour un premier test aprés installation. Il est bon d'y jeter un oeil, les commentaires sont là pour aider. # D'abord les accès base de donnée # cp resources/db_config.py . $(EDITOR) db_config.py # Puis le fichier pour l'application elle même # cp resources/pdc_config.py . $(EDITOR) pdc_config.py # Enfin le contrôle de la commande flask # également chargé par l'application grace à l'instruction: # app/__init__.py: load_dotenv(env_file, verbose=True) # cp resources/flaskenv .flaskenv # ! noter le '.' devant le fichier destination $(EDITOR) .flaskenv ### Créer la base de données Dans un premier temps pour tester l'installation, on peut s'appuyer sur une base déjà disponible. Il s'agit de l'import d'une base de type Lesia dont les noms d'agents, de projets, de métiers et de services ont été réécrit avec des chantiers du batiment. Cela afin de ne pas diffuser des données réelles du Lesia et permettre la diffusion de ces données de test avec le projet plan-de-charge. cp resources/lesia-btp.sqlite ./pdc-dev.db Vérifier que ce chemin correspond avec celui configuré dans le fichier `db_config.py` Pour un usage plus avancé, il y a l'outil de ligne de commande fourni avec l'application. # Créer la structure de la base # flask pdc_db create_db # Il est aussi possible d'importer une base de type Lesia # cela suppose de disposer d'une telle base, et de l'avoir configurée dans db_config.py # flask pdc_db feed_from_lesia # Voire de l'anonymiser en changeant # - les noms de projet # - les noms de service # - les noms de fonctions # flask pdc_db fake_lesia_names # Plus d'info sur les outils en ligne de commande: # flask --help flask pdc_db --help ## Jouer les tests et exécuter un serveur local pip install -r requirements-tests.txt cp resources/lesia-btp.sqlite ./pdc-test.db # ou le chemin configuré dans `db_config.py` PYTHONPATH=. pytest # éventuellement voir le taux de couverture # PYTHONPATH=. pytest --cov=app --cov-report=xml:"coverage.xml" --cov-report=term --junitxml "tests-report.xml" Enfin, ouvrir un serveur sur localhost:5000 et y accéder avec son navigateur. flask run ## Configurer l'appli web avec apache ### Les fichiers concernés: - pdc_web.wsgi - pdc_web.py - pdc_config.py - db_config.py ### La procédure: # créer le répertoire pour le web export WEB_DIR=/var/www/html/pdc-web mkdir $WEB_DIR # le peupler avec le code export GIT_DIR=/path/to/pdc_web/.git export GIT_BRANCH=master git --work-tree=$WEB_DIR --git-dir=$GIT_DIR checkout -f $GIT_BRANCH # le configurer : cf plus haut "Obtenir un répertoire fonctionnel" cd $WEB_DIR python -m venv venv source venv/bin/activate pip install -r requirements.txt $(EDITOR) pdc_config.py db_config.py .flaskenv # configurer le serveur web cp ./resources/apache2-virtual-host.conf /etc/apache2/sites-available/pdc-web.conf $(EDITOR) /etc/apache2/sites-available/pdc-web.conf a2ensite pdc-web apachectl restart ## Mise à jour ### git autodeploy Les fichiers concernés: - scripts/post-deploy.sh - resources/post-receive.git-hook La procédure: git --work-tree=/var/www/html/pdc-web --git-dir=/path/to/the/repo.git checkout -f master # make bare repo git clone --bare /path/to/the/repo.git # put on hook cp /path/to/working-directory/resources/post-receive.git-hook repo.git/hooks/post-receive $(EDITOR) repo.git/hooks/post-receive git push to repo ## Intégration Pycharm Ce projet utilisant le pattern "factory", il faut procéder à quelques configuration afin de le faire tourner avec pycharm. Pour une procédure détaillée, voir la page: https://flask.palletsprojects.com/en/1.1.x/cli/#pycharm-integration Dans le menu 'Edit Configurations', changer les champs: - 'module name' positionné à 'flask' - et dans le champs 'Parameters' choisir 'run' Normalement, cette configuration permet de lire les variables positionées dans le fichier .flaskenv FLASK_ENV=development FLASK_APP=pdc_web Ainsi fait, exécutez votre projet depuis pycharm et essayez sur un navigateur à l'adresse localhost:5000.