Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
serveurs:installation:web-srv:geonature-atlas-mise-a-jour [2022/03/25 20:36] – [À partir d'une branche] jpmilcent | serveurs:installation:web-srv:geonature-atlas-mise-a-jour [2022/11/23 11:44] (Version actuelle) – [Surcouchage des fichiers Systemd de GeoNature Atlas (Atlas > v1.4.3)] jpmilcent |
---|
* Relancez l'installation automatique de l'application : '' cd ~/www/atlas/ ; ./install_app.sh '' | * Relancez l'installation automatique de l'application : '' cd ~/www/atlas/ ; ./install_app.sh '' |
* Consulter les logs de l'installation dans ''~/www/atlas/log/errors_atlas.log'' avec : ''tail -f ~/www/atlas/log/errors_atlas.log '' | * Consulter les logs de l'installation dans ''~/www/atlas/log/errors_atlas.log'' avec : ''tail -f ~/www/atlas/log/errors_atlas.log '' |
* Réactiver le service de //Supervisor// : ''supervisorctl start atlas'' | * Réactiver le service : ''sudo systemctl start geonature-atlas'' |
* Désactiver le mode maintenance de l'Atlas : ''sudo nginx_dissite atlas_maintenance.conf ; sudo nginx_ensite atlas.conf ; sudo service nginx reload'' | * Désactiver le mode maintenance de l'Atlas : ''sudo nginx_dissite atlas_maintenance.conf ; sudo nginx_ensite atlas.conf ; sudo service nginx reload'' |
| |
* Récupérer aussi les 7 derniers caractères du SHA1 du dernier commit de la branche à récupérer | * Récupérer aussi les 7 derniers caractères du SHA1 du dernier commit de la branche à récupérer |
* Exporter la version de l'Atlas obtenu avec //cat// en la concaténant avec les 7 premiers caractères du commit séparé par "-" . Ex. : ''<nowiki> export GNAV="1.5.2-dev0-04dbbcb" </nowiki>'' | * Exporter la version de l'Atlas obtenu avec //cat// en la concaténant avec les 7 premiers caractères du commit séparé par "-" . Ex. : ''<nowiki> export GNAV="1.5.2-dev0-04dbbcb" </nowiki>'' |
* Vérifier les versions en question : '' echo "Branche: ${GNAB} ; TaxHub : ${GNAV}" '' | * Vérifier les versions en question : '' echo "Branche: ${GNAB} ; GeoNature-Atlas : ${GNAV}" '' |
* Se placer dans le dossier //dwl// de l'utilisateur //geonat// : ''cd ~/dwl/'' | * Se placer dans le dossier //dwl// de l'utilisateur //geonat// : ''cd ~/dwl/'' |
* Télécharger l'archive : ''<nowiki> wget https://github.com/PnX-SI/GeoNature-atlas/archive/<branche>.zip -O "atlas_${GNAB}_v${GNAV}.zip" </nowiki>'' | * Télécharger l'archive : ''<nowiki> wget https://github.com/PnX-SI/GeoNature-atlas/archive/<branche>.zip -O "atlas_${GNAB}_v${GNAV}.zip" </nowiki>'' |
* //config.py// : '' vi ~/www/atlas_${GNAB}_v${GNAV}/atlas/configuration/config.py '' | * //config.py// : '' vi ~/www/atlas_${GNAB}_v${GNAV}/atlas/configuration/config.py '' |
* //settings.ini// : '' vi ~/www/atlas_${GNAB}_v${GNAV}/atlas/configuration/settings.ini '' | * //settings.ini// : '' vi ~/www/atlas_${GNAB}_v${GNAV}/atlas/configuration/settings.ini '' |
* Copier le contenu du dossier "//static//" : '' cp -aR ~/www/atlas/static/custom/ ~/www/atlas_${GNAB}_v${GNAV}/static '' | * Copier : |
| * le contenu du dossier "//static//" : '' cp -aR ~/www/atlas/atlas/static/custom/ ~/www/atlas_${GNAB}_v${GNAV}/atlas/static '' |
| * le fichier //environ// : ''cp ~/www/atlas/environ ~/www/atlas_${GNAB}_v${GNAV}/environ'' |
* Modifier les liens symboliques : | * Modifier les liens symboliques : |
* pour la nouvelle version : ''cd ~/www; rm -f atlas; ln -s atlas_${GNAB}_v${GNAV} atlas'' | * pour la nouvelle version : ''cd ~/www; rm -f atlas; ln -s atlas_${GNAB}_v${GNAV} atlas'' |
* ''cd ~/www; rm -f atlas_old; ln -s atlas_v${GNAV} atlas_old'' | * ''cd ~/www; rm -f atlas_old; ln -s atlas_v${GNAV} atlas_old'' |
* ou si l’ancienne version était déjà sur une branche de test : ''cd ~/www; rm -f atlas_old; ln -s atlas_${GNAB}_v<ancienne-version> atlas_old'' | * ou si l’ancienne version était déjà sur une branche de test : ''cd ~/www; rm -f atlas_old; ln -s atlas_${GNAB}_v<ancienne-version> atlas_old'' |
* La mise à jour de la base de données passe par la commande ''geonature'' depuis la version 2.9.0, voir cet étape dans la section consacré à GeoNature. | * Synchroniser l'ensemble de "www" de "web-srv" vers "db-srv" : ''rsync -av -e "ssh -p <port-ssh-db>" /home/geonat/www/ geonat@db-<region>-sinp:/home/geonat/www/'' |
* Consulter les éventuelles notes de version spécifiques décrites au niveau de chaque version : https://github.com/PnX-SI/GeoNature-atlas/releases | * Consulter les éventuelles notes de version spécifiques décrites au niveau de chaque version : https://github.com/PnX-SI/GeoNature-atlas/releases |
* Sur l'instance "//web-srv//" exécuter tous les scripts en lien avec l'interface. | * Sur l'instance "//web-srv//" exécuter tous les scripts en lien avec l'interface. |
| * Sur l'instance "//db-srv//" exécuter tous les scripts en lien avec la base de données. |
| * Sur "//db-srv//" : |
| * Se connecter au serveur : ''ssh geonat@<sinp-db>'' |
| * Exécuter les scripts de mise à jour de la base de données. Vous pouvez utiliser une commande du type : ''psql -h localhost -U geonatadmin -d gnatlas -f ~/www/atlas/data/<mon-fichier-de-mise-a-jour>.sql'' |
| * **Note** : la requête doit être exécuter avec l'utilisateur //geonatadmin// et non //geonatatlas// car les vues matérialisées de la base //gnatlas// appartiennent à //geonatadmin//. |
| * Sur "//web-srv//" : |
| * Relancez l'installation automatique de l'application : '' cd ~/www/atlas/ ; ./install_app.sh '' |
| * Réactiver le service de //Systemd// : ''sudo systemctl restart geonature-atlas'' |
| * Désactiver le mode maintenance de l'Atlas : ''sudo nginx_dissite atlas_maintenance.conf ; sudo nginx_ensite atlas.conf ; sudo nginx-reload'' |
| |
| ===== Surcouchage des fichiers Systemd de GeoNature Atlas (Atlas > v1.4.3) ===== |
| Surcoucher le service Systemd de GeoNature Atlas : |
| * Afin d'éviter que les modifications effectuées dans le fichier ///lib/systemd/system/geonature-atlas.service// soient écrasées à chaque mise à jour de GeoNature Atlas, vous devez ajouter un fichier qui écrasera les valeurs par défaut. |
| * Pour créer automatiquement l'arborescence de dossier et le fichier nécessaire, utiliser la commande suivante : '' systemctl edit geonature-atlas '' |
| * La commande précédente ouvre l'éditeur par défaut du système, vous pouvez ajouter le contenu suivant et sortir de l'édition du fichier en sauvegardant : <code properties> |
| [Unit] |
| StartLimitIntervalSec=6min |
| StartLimitBurst=5 |
| |
| [Service] |
| ExecStart= |
| ExecStart=/home/geonat/www/atlas/venv/bin/gunicorn atlas.wsgi:app \ |
| --statsd-host "localhost:8125" \ |
| --statsd-prefix "atlas" \ |
| --name "${GUNICORN_PROC_NAME}" --workers "${GUNICORN_NUM_WORKERS}" \ |
| --bind "${GUNICORN_HOST}:${GUNICORN_PORT}" --timeout="${GUNICORN_TIMEOUT}" |
| Restart=on-failure |
| RestartSec=1min |
| </code> |
| * **Note** : la première ligne //ExecStart=// vide permet de réinitialiser la commande de lancement |
| * Les modifications devraient être présente dans le fichier suivant : '' vi /etc/systemd/system/geonature-atlas.service.d/override.conf '' |
| * Lancer la prise en compte des modifications qui vérifiera une éventuelle erreur : '' systemctl daemon-reload '' |
| * Relancer le service si nécessaire : '' systemctl restart geonature-atlas '' |
| |
===== Import des images de l'INPN ===== | ===== Import des images de l'INPN ===== |
WHERE NOT s.cd_nom IN (SELECT DISTINCT cd_nom FROM taxonomie.bib_noms); | WHERE NOT s.cd_nom IN (SELECT DISTINCT cd_nom FROM taxonomie.bib_noms); |
</code> | </code> |
* Utiliser //Psql// avec la requête suivante si ''bib_noms'' est vide (Temps d’exécution 20s pour 9,3 millions de lignes dans ''synthese''): '' psql -h localhost -U geonatadmin -d geonature2db -c "INSERT INTO taxonomie.bib_noms (cd_nom, cd_ref) SELECT DISTINCT s.cd_nom, t.cd_ref FROM gn_synthese.synthese AS s JOIN taxonomie.taxref AS t ON s.cd_nom = t.cd_nom ;" '' | * Utiliser //Psql// avec la requête suivante si ''bib_noms'' est vide (Temps d’exécution 20s pour 9,3 millions de lignes dans ''synthese''): '' psql -h localhost -U geonatadmin -d geonature2db -c "INSERT INTO taxonomie.bib_noms (cd_nom, cd_ref) SELECT DISTINCT s.cd_nom, t.cd_ref FROM gn_synthese.synthese AS s JOIN taxonomie.taxref AS t ON s.cd_nom = t.cd_nom WHERE NOT s.cd_nom IN (SELECT DISTINCT cd_nom FROM taxonomie.bib_noms); |
| " '' |
* Lancer le script : '' python import_inpn_media.py '' | * Lancer le script : '' python import_inpn_media.py '' |
* Vérifier la présence des médias dans la table ''taxonomie.t_medias''. | * Vérifier la présence des médias dans la table ''taxonomie.t_medias''. |
</code> | </code> |
* Soit : '' psql -h localhost -U geonatadmin -d geonature2db -c "WITH first_media AS (SELECT MIN(id_media) AS first_id_media_founded, cd_ref FROM taxonomie.t_medias GROUP BY cd_ref) UPDATE taxonomie.t_medias AS tm SET id_type = 1 FROM first_media AS fm WHERE tm.id_media = fm.first_id_media_founded AND tm.cd_ref = fm.cd_ref ;" '' | * Soit : '' psql -h localhost -U geonatadmin -d geonature2db -c "WITH first_media AS (SELECT MIN(id_media) AS first_id_media_founded, cd_ref FROM taxonomie.t_medias GROUP BY cd_ref) UPDATE taxonomie.t_medias AS tm SET id_type = 1 FROM first_media AS fm WHERE tm.id_media = fm.first_id_media_founded AND tm.cd_ref = fm.cd_ref ;" '' |
| * Pour réinitialiser toutes les images en tant que secondaire : <code sql> |
| UPDATE taxonomie.t_medias AS tm |
| SET id_type = 2 |
| WHERE id_type = 1 ; |
| </code> |
| * Pour favoriser certaines sources en tant qu'image principale en mise à jour : <code sql> |
| WITH exists_first_medias AS ( |
| SELECT cd_ref |
| FROM taxonomie.t_medias AS stm |
| WHERE id_type = 1 |
| ), |
| priority_first_medias AS ( |
| SELECT |
| 1 AS priority, |
| MIN(id_media) AS first_id_media_founded, |
| cd_ref |
| FROM taxonomie.t_medias |
| WHERE cd_ref NOT IN ( SELECT cd_ref FROM exists_first_medias ) |
| AND "source" != 'INPN' |
| AND supprime != true |
| GROUP BY cd_ref |
| UNION |
| SELECT |
| 2 AS priority, |
| MIN(id_media) AS first_id_media_founded, |
| cd_ref |
| FROM taxonomie.t_medias |
| WHERE cd_ref NOT IN ( SELECT cd_ref FROM exists_first_medias ) |
| AND "source" = 'INPN' |
| AND supprime != true |
| GROUP BY cd_ref |
| ), |
| first_medias AS ( |
| SELECT DISTINCT ON (pfm.cd_ref) pfm.cd_ref, pfm.priority, pfm.first_id_media_founded |
| FROM priority_first_medias AS pfm |
| ORDER BY pfm.cd_ref, pfm.priority |
| ) |
| UPDATE taxonomie.t_medias AS tm |
| SET id_type = 1 |
| FROM first_medias AS fm |
| WHERE tm.id_media = fm.first_id_media_founded |
| AND tm.cd_ref = fm.cd_ref ; |
| </code> |
* Pour afficher les images sur l'Atlas, il est nécessaire de rafraichir les données des vues matérialisées //atlas.vm_medias// et //atlas.vm_taxons_plus_observes// : <code sql> | * Pour afficher les images sur l'Atlas, il est nécessaire de rafraichir les données des vues matérialisées //atlas.vm_medias// et //atlas.vm_taxons_plus_observes// : <code sql> |
REFRESH MATERIALIZED VIEW atlas.vm_medias WITH DATA ; | REFRESH MATERIALIZED VIEW atlas.vm_medias WITH DATA ; |