summaryrefslogtreecommitdiff
path: root/docs/fr/administrateur-serveur.md
blob: b988bbe347a5f239a7417b6f6277f754c6c4539b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
Administration serveur
======================

Auteur

:   Étienne Loks

Date

:   2023-06-12

Copyright

:   CC-BY 3.0

Ce document présente les instructions d\'installation et de mise à jour
d\'Ishtar.

Seule l\'installation sous Debian GNU/linux via le paquet Debian est
décrite. Cet environnement est le seul sous lequel un suivi de sécurité
et des dysfonctionnements est assuré, installer Ishtar hors de cet
environnement est déconseillé.

Un nom de domaine dédié est nécessaire pour chaque instance (une
instance Ishtar n\'est pas installable dans un sous-répertoire). Par
contre un sous-domaine est tout à fait utilisable (par exemple :
*ishtar.mon-domaine.net*).

::: {.note}
::: {.title}
Note
:::

Sauf mention explicite, chaque commande est exécutée en tant
qu\'utilisateur root. Les utilisateurs de sudo l\'ajouteront à chaque
commande.
:::

Installation sur serveur Debian Bullseye
----------------------------------------

Un dépôt a été mis en place pour installer sous Debian Bullseye. Ce
dépôt est signé, pour ajouter la clé du dépôt à votre gestionnaire de
paquet, lancez la commande :

    wget -O - http://deb.iggdrasil.net/iggdrasil.gpg.key | apt-key add -

Puis, au choix, ajoutez le dépôt à votre /etc/apt/sources.list :

    deb http://deb.iggdrasil.net/apt/debian/ bullseye main
    deb-src http://deb.iggdrasil.net/apt/debian/ bullseye main

Ou sauvegardez le fichier
[iggdrasil.list](http://deb.iggdrasil.net/apt/debian/dists/bullseye/iggdrasil.list)
dans votre répertoire **/etc/apt/sources.list.d/** :

    wget -O - http://deb.iggdrasil.net/apt/debian/dists/bullseye/iggdrasil.list > /etc/apt/sources.list.d/iggdrasil.list

Ensuite mettez à jour la base de données de votre gestionnaire de paquet
et installez le paquet :

    apt update
    apt install python3-django-ishtar

Deux paquets optionnels peuvent être installés :

-   **ishtar-tasks** : installe un service de tâche pour gérer en tâche
    de fond les opérations longues (par exemple les imports).
    L\'installation de ce paquet est vivement conseillée sauf si votre
    serveur a une mémoire vive limitée (par exemple nano-ordinateur).
-   **ishtar-libreoffice** : installe libreoffice en mode serveur pour
    faciliter des imports / exports aux formats bureautique. Ce paquet
    est nécessaire pour générer les tableaux depuis les types d\'import.
    Il dépend de la version libreoffice-nogui : la couche graphique
    n\'est pas installée sur le serveur.

Enfin pour créer une nouvelle instance d\'Ishtar :

    ishtar-prepare-instance

Un ensemble de questions vous sera posé afin de déterminer les
paramètres qui concernent cette instance.

::: {.note}
::: {.title}
Note
:::

Le nom de domaine doit bien entendu pointer vers l\'adresse IP du
serveur. Si à l\'issue de l\'installation, le service n\'est pas
joignable, verifiez bien votre configuration DNS ou le cas échéant
verifez bien auprès du gestionnaire de nom de domaine que c\'est le cas.
:::

::: {.warning}
::: {.title}
Warning
:::

En termes de serveur Web, l\'installateur fonctionne avec la
configuration que nous considérons comme la plus optimisée qui est le
couple nginx / uwsgi. Si vous avez des services tournant sous Apache ou
sous un autre serveur web, plusieurs options se présentent à vous :

-   faire fonctionner nginx sur un autre port ;
-   faire fonctionner vos autres services avec nginx (je vous laisse
    découvrir l\'abondante documentation en ligne en cherchant « nginx +
    le nom de mon service ») ;
-   configurer Ishtar pour fonctionner avec votre serveur web
    (référez-vous à la [documentation de
    Django](https://docs.djangoproject.com/fr/2.2/howto/deployment/wsgi/)).
:::

L\'installateur vous demandera un identifiant / mot de passe pour le
compte administrateur. Une fois l\'instance préparée, une base de
données a été créée avec un nom du type
ishtar-le\_nom\_de\_mon\_instance (le nom que vous avez donné), Ishtar
est joignable à l\'adresse donnée par la variable URL et les données de
cette instance sont stockées dans le répertoire
/srv/ishtar/le\_nom\_de\_mon\_instance.

Initialisation de la base de données
------------------------------------

Ishtar dispose de nombreuses tables de paramétrage permettant d\'avoir
un logiciel au plus proche de vos besoins. Remplir toutes ces tables est
fastidieux, c\'est pour cela que des jeux de données de base sont
disponibles. Lors de l\'installation du paquet, à l\'exception des
communes (trop lourdes pour être incluses par défaut), cette
initialisation est faite.

### Initialisation des communes

Une liste des communes française peut être téléchargée et chargée :

    cd /tmp
    wget "http://ishtar-archeo.net/fixtures/initial_towns-fr.tar.bz2"
    tar xvjf initial_towns-fr.tar.bz2

    ISHTAR_PATH=/srv/ishtar # répertoire par défaut de l'installation pour le paquet Debian
    PROJECT_PATH=$ISHTAR_PATH/le_nom_de_mon_instance
    cd $PROJECT_PATH
    ./manage.py loaddata /tmp/towns_norel-fr.json
    ./manage.py loaddata /tmp/towns-fr.json
    rm /tmp/initial_towns-fr.tar.bz2
    rm /tmp/towns-*

Mises à jour
------------

### Mise à jour version 3 (sur Debian Buster) vers la version 4 (sur Debian Bullseye)

Comme lors de toute migration non triviale, il est préférable de faire
une sauvegarde de la base de données et des médias associés juste avant
de lancer la mise à jour.

Le changement de version nécessite préalablement la mise à jour vers la
version de Debian 11 Bullseye.

Pour faciliter cette mise à jour, si ceux-ci ont été installés, il est
conseillé de purger en amont les paquets optionnels
[ishtar-libreoffice]{.title-ref} et [ishtar-tasks]{.title-ref} ainsi que
tous les paquets [libreoffice]{.title-ref} :

    apt purge ishtar-libreoffice ishtar-tasks libreoffice-*
    apt autoremove

Ceux-ci pourront être réinstallés une fois la mise à jour vers Bullseye
finie.

Éteignez les services web et ensuite procédez à la mise à jour de Debian
selon la documentation Debian officielle (ou votre protocole/vos
habitudes). Ne changez pas tout de suite le fichier source list (ou les
lignes) correspondant au dépôt Ishtar.

Ensuite vous pouvez opérer la migration de la base de données PostgreSQL
vers la version 13 :

    systemctl stop postgresql
    pg_dropcluster 13 main
    pg_upgradecluster  -m dump 11 main  # utiliser "dump" pour éviter les complications avec postgis
    systemctl start postgresql

Mettez à jour vers Bullseye le dépôt correspondant à Ishtar (a priori
dans le fichier [/etc/apt/sources.list.d/iggdrasil.list]{.title-ref}) et
lancez la mise à jour :

    apt update
    apt upgrade
    apt dist-upgrade

Le paquet [python3-weasyprint]{.title-ref} empêche parfois la mise à
jour (à cause d\'un conflit de version). Dans ce cas, le supprimer
explicitement et relancer le paramétrage :

    apt remove python3-weasyprint
    apt --fix-broken install

Pour finaliser la mise à jour des paquets, supprimer les paquets
obsolètes :

    apt autoremove

Vous pouvez ensuite, le cas échéant, ré-installer les paquets
[ishtar-libreoffice]{.title-ref} et [ishtar-tasks]{.title-ref} :

    apt install ishtar-tasks ishtar-libreoffice

On peut ensuite passer à la migration des données. Attention cette
migration peut être longue (plusieurs heures), assurez-vous que le
processus de migration ne soit pas interrompu (a minima lancez-le via un
outil comme [screen]{.title-ref}). Pour chaque instance, dans le
répertoire [/srv/ishtar/]{.title-ref} lancez les commandes :

    cd /srv/ishtar/{le_nom_de_mon_instance}
    # mise à jour des données par défaut
    ./manage.py loaddata /usr/share/python3-django-ishtar/fixtures/initial_data-auth-fr.json 
    ./manage.py loaddata /usr/lib/python3/dist-packages/archaeological_files/fixtures/initial_data-fr.json
    # migration des données pour la nouvelle gestion géographique
    editor local_settings.py
    (...)  # à la fin du fichier ajouter les lignes
    ISHTAR_MIGRATE_V4 = True
    USE_BACKGROUND_TASK = False

    ## nombre-de-processus dépend du processeur et du nombre de fils d'exécution disponible
    ## plus il y en a, plus rapide est la conversion mais laissez quand même un minimum de marge 
    ## pour ne pas rendre la machine inutilisable
    ./manage.py migrate_to_geo_v4 --process {nombre-de-processus}
    # une fois la migration finie
    editor local_settings.py
    (...)  # supprimer les deux lignes ajoutées

Si vous utilisez [ishtar-tasks]{.title-ref}, sur cette nouvelle version
la gestion du service [rabbitmq]{.title-ref} n\'est plus assurée via
[systemd]{.title-ref} mais via [supervisor.]{.title-ref} La migration de
[systemd]{.title-ref} vers [supervisor]{.title-ref} n\'est pas gérée
automatiquement via le paquet, seules les nouvelles instances ont un
fichier [supervisor]{.title-ref} créé à l\'installation. Pour gérer
cette migration supprimez les fichiers de configuration
[systemd]{.title-ref} résiduels :

    rm -f /etc/systemd/system/rabbitmq-notify-email\@.service
    rm -f /etc/systemd/system/rabbitmq-server.service
    rm -f /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service

Puis créez les fichiers de configuration [supervisor]{.title-ref} pour
chaque instance :

    rm -f /etc/monit/conf-enabled/celery-*
    rm -f /etc/systemd/system/celery-*
    rm -f /etc/systemd/system/multi-user.target.wants/celery-*

    # pour chaque instance listée dans /etc/ishtar/instances
    editor /etc/supervisor/conf.d/celery_le_nom_de_mon_instance.conf

    [program:celery_le_nom_de_mon_instance]
    command=/usr/bin/celery -A le_nom_de_mon_instance worker --loglevel=INFO -c 6
    directory=/srv/ishtar/
    user=www-data
    autostart=true
    autorestart=true
    stdout_logfile=/var/log/celery/le_nom_de_mon_instance.log
    redirect_stderr=true
    stopasgroup=true

    supervisorctl reread  # prise en compte des nouveaux fichiers de configuration
    supervisorctl update  # mise à jour

La migration est terminée. Redémarrez la machine et assurez-vous que
tous les services fonctionnent convenablement en particulier via les
commandes [systemctl \--failed]{.title-ref} et [supervisorctl
status]{.title-ref}.

En ce qui concerne le paramétrage, il est impératif de modifier les
types de droits utilisateurs pour l\'accès aux données géographiques.
Ouvrez votre instance sur un navigateur web en admin et rendez-vous à la
page :
[http(s)://{my-ihstar}/admin/ishtar\_common/profiletypesummary/]{.title-ref}
pour ajouter les permissions nécessaires.

Une fois que vous vous serez assuré que tout est fonctionnel, vous
pourrez effacer l\'ancien cluster PostgreSQL correspondant à la version
11 :

    pg_dropcluster 11 main