Blame view

INSTALL.md 6.17 KB
cc95f31e   hitier   Complete installa...
1
# Installation de Plan De Charge
bc7964c5   hitier   Documentation sph...
2

cc95f31e   hitier   Complete installa...
3
## Prérequis
3c0785d6   hitier   Auto deploy to ap...
4

cc95f31e   hitier   Complete installa...
5
- python3
11977ccc   hitier   Fix french typo
6
7
8
- SQLite (pour le développement et les tests unitaires)
- chrome-driver et chromium (pour les tests unitaires)
- postgresql ou mysql/mariadb (pour la production)
3c0785d6   hitier   Auto deploy to ap...
9

cc95f31e   hitier   Complete installa...
10
11
## Obtenir un répertoire fonctionnel

b4ff40eb   hitier   More comments in ...
12
    export GIT_SSL_NO_VERIFY=1
cc95f31e   hitier   Complete installa...
13
14
    git clone https://gitlab.irap.omp.eu/PDC-IRAP/pdc-web.git
    cd pdc-web
474465ee   hitier   More install doc
15
    git checkout dev # pour éventuellement travailler avec la branche la plus à jour
cc95f31e   hitier   Complete installa...
16
17

### Installer l'environment python
3c0785d6   hitier   Auto deploy to ap...
18
19
20

    python3 -m venv venv
    source venv/bin/activate
d8a6b942   hitier   More install doc
21
    pip install --upgrade pip
3c0785d6   hitier   Auto deploy to ap...
22
    pip install -r requirements.txt
cc95f31e   hitier   Complete installa...
23
24
25

### Configurer l'application

11977ccc   hitier   Fix french typo
26
27
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.
b7958b97   hitier   More install doc
28

474465ee   hitier   More install doc
29
30
Il est bon d'y jeter un oeil, les commentaires sont là pour vous aider.
(mais en anglais comme tout le code source du projet)
b7958b97   hitier   More install doc
31

a414f355   hitier   Fix install doc
32
    # D'abord les accès base de donnée
b7958b97   hitier   More install doc
33
    #
474465ee   hitier   More install doc
34
    cp ./resources/db_config.py ./
d8a6b942   hitier   More install doc
35
    $(EDITOR) db_config.py 
3c0785d6   hitier   Auto deploy to ap...
36

b7958b97   hitier   More install doc
37
38
    # Puis le fichier pour l'application elle même
    #
474465ee   hitier   More install doc
39
    cp ./resources/pdc_config.py ./
b7958b97   hitier   More install doc
40
41
    $(EDITOR) pdc_config.py 

474465ee   hitier   More install doc
42
43
    # Enfin le contrôle de la commande flask est assuré par son propre fichier de configuration
    # Celui ci est également chargé par l'application grace à l'instruction:
b7958b97   hitier   More install doc
44
45
    # app/__init__.py: load_dotenv(env_file, verbose=True)
    #
474465ee   hitier   More install doc
46
    cp ./resources/flaskenv ./.flaskenv # ! noter le '.' devant le fichier destination
d8a6b942   hitier   More install doc
47
48
    $(EDITOR) .flaskenv

11977ccc   hitier   Fix french typo
49
### Créer la base de données
d8a6b942   hitier   More install doc
50

474465ee   hitier   More install doc
51
Dans un premier temps, pour tester l'installation, on peut s'appuyer sur une base déjà disponible.
d8a6b942   hitier   More install doc
52

b7958b97   hitier   More install doc
53
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é
474465ee   hitier   More install doc
54
55
réécrit avec des chantiers du batiment. Cela fut fait 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.
b7958b97   hitier   More install doc
56

42f35e84   hitier   Add documentation
57
    cp resources/lesia-btp.sqlite ./pdc-dev.db
b7958b97   hitier   More install doc
58

474465ee   hitier   More install doc
59
Vérifier que ce chemin correspond avec celui configuré dans le fichier `db_config.py` pour la
11977ccc   hitier   Fix french typo
60
61
variable `sqlalchemy_devdb_uri`. C'est le cas dans le fichier initial pour une variable `FLASK_ENV` positionnée à '
development'.
474465ee   hitier   More install doc
62
63

Pour un usage plus avancé, voyez l'outil en ligne de commande fourni avec l'application.
11977ccc   hitier   Fix french typo
64
(sinon, passez directement à la section suivante)
b7958b97   hitier   More install doc
65
66
67

    # Créer la structure de la base
    #
1d884e2e   hitier   Comments reformat
68
69
    flask pdc_db create_db

474465ee   hitier   More install doc
70
    # Il est possible d'importer une base de type Lesia
b7958b97   hitier   More install doc
71
72
    # cela suppose de disposer d'une telle base, et de l'avoir configurée dans db_config.py
    #
a414f355   hitier   Fix install doc
73
    flask pdc_db feed_from_lesia 
1d884e2e   hitier   Comments reformat
74

42f35e84   hitier   Add documentation
75
    # Voire de l'anonymiser en changeant
474465ee   hitier   More install doc
76
77
    #   - les noms de projets
    #   - les noms de services
42f35e84   hitier   Add documentation
78
    #   - les noms de fonctions
b7958b97   hitier   More install doc
79
80
    #
    flask pdc_db fake_lesia_names
1d884e2e   hitier   Comments reformat
81

474465ee   hitier   More install doc
82
83
84
85
    # D'autre commandes d'importation sont disponibles:
    #
    flask pdc_db feed_from_irap --csv-file 2021_03_30_PDC_v0-1.csv

b7958b97   hitier   More install doc
86
87
88
89
    # Plus d'info sur les outils en ligne de commande:
    #
    flask --help
    flask pdc_db --help
cc95f31e   hitier   Complete installa...
90

a414f355   hitier   Fix install doc
91
## Jouer les tests et exécuter un serveur local
cc95f31e   hitier   Complete installa...
92
93

    pip install -r requirements-tests.txt
474465ee   hitier   More install doc
94
    cp resources/lesia-btp.sqlite ./pdc-test.db # ou le chemin configuré dans `db_config.py` pour sqlalchemy_testdb_uri
cc95f31e   hitier   Complete installa...
95
96
97
	PYTHONPATH=. pytest

    # éventuellement voir le taux de couverture
b7958b97   hitier   More install doc
98
    #
cc95f31e   hitier   Complete installa...
99
100
    PYTHONPATH=. pytest  --cov=app --cov-report=xml:"coverage.xml" --cov-report=term --junitxml "tests-report.xml" 

11977ccc   hitier   Fix french typo
101
Enfin, ouvrir un serveur sur `localhost:5000` et y accéder avec son navigateur.
b7958b97   hitier   More install doc
102

cc95f31e   hitier   Complete installa...
103
104
    flask run

11977ccc   hitier   Fix french typo
105
## Configurer l'appli web avec apache
cc95f31e   hitier   Complete installa...
106

11977ccc   hitier   Fix french typo
107
### Les fichiers concernés :
cc95f31e   hitier   Complete installa...
108
109

- pdc_web.wsgi
b7958b97   hitier   More install doc
110
- pdc_web.py
880e8a55   hitier   New config vars u...
111
- pdc_config.py
d8a6b942   hitier   More install doc
112
- db_config.py
cc95f31e   hitier   Complete installa...
113

a414f355   hitier   Fix install doc
114
### La procédure:
cc95f31e   hitier   Complete installa...
115

d8a6b942   hitier   More install doc
116
117
118
119
120
121
122
123
124
    # 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

1d884e2e   hitier   Comments reformat
125
    # le configurer : cf plus haut "Obtenir un répertoire fonctionnel"
d8a6b942   hitier   More install doc
126
127
128
129
    cd $WEB_DIR
    python -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
880e8a55   hitier   New config vars u...
130
    $(EDITOR) pdc_config.py db_config.py .flaskenv 
d8a6b942   hitier   More install doc
131
    
d8a6b942   hitier   More install doc
132
    # configurer le serveur web
cc95f31e   hitier   Complete installa...
133
    cp ./resources/apache2-virtual-host.conf /etc/apache2/sites-available/pdc-web.conf
1d884e2e   hitier   Comments reformat
134
    $(EDITOR) /etc/apache2/sites-available/pdc-web.conf 
cc95f31e   hitier   Complete installa...
135
136
137
    a2ensite pdc-web 
    apachectl restart

11977ccc   hitier   Fix french typo
138
## Mise à jour
cc95f31e   hitier   Complete installa...
139

474465ee   hitier   More install doc
140
141
### git pull

a414f355   hitier   Fix install doc
142
### git autodeploy
3c0785d6   hitier   Auto deploy to ap...
143

11977ccc   hitier   Fix french typo
144
Les fichiers concernés :
cc95f31e   hitier   Complete installa...
145
146
147
148
149
150
151
152

- 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

3c0785d6   hitier   Auto deploy to ap...
153
154
155
    # make bare repo
    git clone --bare /path/to/the/repo.git
    # put on hook
54262837   hitier   More intallation doc
156
157
158
159
    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
3c0785d6   hitier   Auto deploy to ap...
160

474465ee   hitier   More install doc
161
## Gestion des utilisateurs
3c0785d6   hitier   Auto deploy to ap...
162

11977ccc   hitier   Fix french typo
163
164
La table `users` stocke les utilisateurs qui se connectent à l'applicationa avec leur rôle et les droits associés. Un
ensemble de commandes permet de les gérer :
474465ee   hitier   More install doc
165
166
167
168
169
170

    flask pdc_db user_show_all  # liste existante
    flask pdc_db user_add       # ajouter un nouveau login
    flask pdc_db user_update    # modifier un login existant
    flask pdc_db user_delete    # effacer un login existant
    flask pdc_db show_roles     # lister les rôles disponibles
3c0785d6   hitier   Auto deploy to ap...
171

11977ccc   hitier   Fix french typo
172
## Intégration Pycharm
bc7964c5   hitier   Documentation sph...
173

11977ccc   hitier   Fix french typo
174
Ce projet utilisant le pattern "factory", il faut procéder à quelques configurations afin de le faire tourner avec
e4465a86   hitier   More french insta...
175
176
pycharm.

11977ccc   hitier   Fix french typo
177
Pour une procédure détaillée, voir la page :
cc95f31e   hitier   Complete installa...
178

cc95f31e   hitier   Complete installa...
179
https://flask.palletsprojects.com/en/1.1.x/cli/#pycharm-integration
cc95f31e   hitier   Complete installa...
180

11977ccc   hitier   Fix french typo
181
Dans le menu 'Edit Configurations', changer les champs :
e4465a86   hitier   More french insta...
182
183

- 'module name' positionné à 'flask'
11977ccc   hitier   Fix french typo
184
- et dans le champ 'Parameters' choisir 'run'
e4465a86   hitier   More french insta...
185

11977ccc   hitier   Fix french typo
186
Cette configuration permet de lire les variables positionées dans le fichier `.flaskenv`
cc95f31e   hitier   Complete installa...
187

e4465a86   hitier   More french insta...
188
189
    FLASK_ENV=development
    FLASK_APP=pdc_web
cc95f31e   hitier   Complete installa...
190

11977ccc   hitier   Fix french typo
191
Ainsi fait, exécutez votre projet depuis pycharm et essayez sur un navigateur à l'adresse `localhost:5000`.
474465ee   hitier   More install doc
192
193
194

## Troubleshooting

11977ccc   hitier   Fix french typo
195
196
* Q : parfois le module Flask-Migrate n'est pas correctement chargé aprés son installation.
* R : simplement recharger l'environnement virtuel avec `source venv/bin/activate`