database:sinp-aura:gn2pg

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
database:sinp-aura:gn2pg [2024/02/20 11:35] – [Installer le Dashboard Gn2Pg] jpmilcentdatabase:sinp-aura:gn2pg [2024/11/20 08:46] (Version actuelle) – [Relancer un import GN2PG interrompu] jpmilcent
Ligne 15: Ligne 15:
   * Afficher la table : ''gn2pg_lpo.data_json''   * Afficher la table : ''gn2pg_lpo.data_json''
   * Trier les données par ordre décroissant du champ ''update_ts''. La date la plus récente devrait s'afficher en premier   * Trier les données par ordre décroissant du champ ''update_ts''. La date la plus récente devrait s'afficher en premier
-  * Le champ "id_date" contient l'id_synthese à copier.+    * La date ''update_ts'' et la valeur du champ ''id_data'' du dernier enregistrement devrait correspondre au dernier log de Gn2Pg : ''2024-11-18 15:37:53,851 - DEBUG - store_postgresql:store_1_data - 43682513'' 
 +  * Le champ "id_data" contient l'id_synthese à copier.
   * Modifier ensuite le fichier ''~/data/gn2pg/config/lpo_config.toml'' sur le serveur hébergeant //Gn2Pg//.   * Modifier ensuite le fichier ''~/data/gn2pg/config/lpo_config.toml'' sur le serveur hébergeant //Gn2Pg//.
     * Ajouter/Modifier le paramètre ''filter_n_up_id_synthese'' et lui associer l'id synthese précédemment copié comme valeur.     * Ajouter/Modifier le paramètre ''filter_n_up_id_synthese'' et lui associer l'id synthese précédemment copié comme valeur.
Ligne 50: Ligne 51:
       * afficher la version actuellement installée de Pipenv via Pipx : ''pipx list''       * afficher la version actuellement installée de Pipenv via Pipx : ''pipx list''
       * mise à jour : ''pipx upgrade pipenv''       * mise à jour : ''pipx upgrade pipenv''
-      * vérifier la version de Pipenv : ''pipenv --version''+      * vérifier la version de Pipenv : ''%%pipenv --version%%''
     * Mettre à jour les dépendances des paquets Python : ''pipenv sync''     * Mettre à jour les dépendances des paquets Python : ''pipenv sync''
     * Se placer dans le dossier de gn2pg : '' cd ~/data/gn2pg/''      * Se placer dans le dossier de gn2pg : '' cd ~/data/gn2pg/'' 
Ligne 73: Ligne 74:
   * Pour chaque schéma abritant les tables de Gn2Pg (ou //source//), il faut cloner le dépôt Gn2Pg. Ex. pour le SINP AURA (nous avons 2 //sources// : flavia, lpo) :   * Pour chaque schéma abritant les tables de Gn2Pg (ou //source//), il faut cloner le dépôt Gn2Pg. Ex. pour le SINP AURA (nous avons 2 //sources// : flavia, lpo) :
     * Se placer dans le dossier ''gn2pg/'' avec : ''cd ~/www/gn2pg/''     * Se placer dans le dossier ''gn2pg/'' avec : ''cd ~/www/gn2pg/''
-    * Cloner une première fois le dépôt en tant que //lpo// avec : ''git clone https://github.com/lpoaura/GN2PG.git lpo'' +    * Cloner une première fois le dépôt en tant que //lpo// avec : ''%%git clone https://github.com/lpoaura/GN2PG.git lpo%%'' 
-    * Cloner une seconde fois le dépôt en tant que //flavia// avec  : ''git clone https://github.com/lpoaura/GN2PG.git flavia'' +    * Cloner une seconde fois le dépôt en tant que //flavia// avec  : ''%%git clone https://github.com/lpoaura/GN2PG.git flavia%%'' 
-  * Pour chaque source : +  * Pour chaque source, nous allons réaliser manuellement les étapes présentes dans ''install/02_install_app.sh'' (pour les adapter à notre infrastructure) 
     * se placer dans le dossier de la source : ''cd ~/www/gn2pg/<source>/''     * se placer dans le dossier de la source : ''cd ~/www/gn2pg/<source>/''
     * Copier le fichier settings.ini : ''cp install/settings.ini.sample install/settings.ini''     * Copier le fichier settings.ini : ''cp install/settings.ini.sample install/settings.ini''
Ligne 87: Ligne 88:
 DEBUG=true DEBUG=true
 </code> </code>
-      * Pour+      * Pour le numéro du port Gunicorn, partir de 50500 et ajouter 1 pour chaque source (50501, 50502...).
     * Copier le fichier de config gn2pg depuis le serveur //db-srv// : ''scp -P <port-ssh-db-srv> geonat@db-<region>-sinp:~/data/gn2pg/config/<source>_config.toml install/<source>_config.toml''      * Copier le fichier de config gn2pg depuis le serveur //db-srv// : ''scp -P <port-ssh-db-srv> geonat@db-<region>-sinp:~/data/gn2pg/config/<source>_config.toml install/<source>_config.toml'' 
       * Modifier le fichier de config : ''vi install/<source>_config.toml''       * Modifier le fichier de config : ''vi install/<source>_config.toml''
Ligne 97: Ligne 98:
 GUNICORN_LOG_LEVEL=debug GUNICORN_LOG_LEVEL=debug
 </code> </code>
 +    * Installer Poetry : ''pipx install poetry''
 +    * Installer les dépendances du Dashboard de Gn2pg avec : <code bash>
 +poetry config virtualenvs.create true --local
 +poetry config virtualenvs.in-project true --local
 +poetry install --extras=dashboard
 +</code>
 +    * Créer un fichier de service Sytemd : ''vi /etc/systemd/system/gb2pg-<source>.service'' (voir ci-dessous) 
 +      * Prendre en compte le service créé : ''systemctl daemon-reload''
 +      * Lancer le service : ''systemctl start gn2pg-<source>.service''
 +    * Si nécessaire, créer un fichier Logrotate (uniquement pour la première source) : ''vi /etc/logrotate.d/gn2pg'' (voir ci-dessous)
 +    * Si nécessaire, créer un fichier de config Nginx : '' vi /etc/nginx/site-available/gn2pg.conf '' (voir ci-dessous)
 +      * Lors de la création du fichier :
 +        * Activer le nouveau fichier de config : ''nginx_ensite gn2pg.conf''
 +        * Recharger Nginx : ''nginx-reload''
 +        * Récupérer le certificat SSL : '' certbot -d gn2pg.<domaine-sinp>''
 +      * Pour les sources suivantes, il faut seulement compléter le fichier config en ajoutant une nouvelle "location" et son proxy.
 +        * Recharger Nginx : ''nginx-reload''
 +    * Tester l'accès au site en https
 +      * Consulter les logs en cas de problème : ''ls /var/log/gn2pg/''
  
 +==== Fichier Nginx par défaut ====
 +<code nginx>
 +server {
 +    listen [::]:80 ipv6only=on;
 +    listen 80;
 +    
 +    server_name gn2pg.<domaine-sinp>;
 +    root /home/geonat/www/gn2pg/public;
 +
 +    satisfy any;
 +    allow <ip-v4-srv-web>;
 +    deny  all;
 +    auth_basic "Zone restreinte";
 +    auth_basic_user_file /etc/nginx/.htpasswd;
 +
 +    location /<source> {
 +        proxy_set_header X-Forwarded-Host $host:$server_port;
 +        proxy_set_header X-Forwarded-Server $host;
 +        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 +        proxy_set_header X-Forwarded-Proto $scheme;
 +        proxy_redirect off;
 +        proxy_buffering off;
 +
 +        proxy_read_timeout 30s;
 +        proxy_connect_timeout 10s;
 +        proxy_pass http://127.0.0.1:<source-port>;# ATTENTION : ne rien mettre après le port pour que le chemin complet soit passé à Gunicorn
 +    }
 +}
 +</code>
 +
 +==== Fichier Logrotate de Gn2Pg ====
 +<code>
 +/var/log/gn2pg/*.log {
 +    su geonat geonat
 +    daily
 +    rotate 8
 +    size 100M
 +    create
 +    compress
 +    postrotate
 +    systemctl reload gn2pg || true
 +    endscript
 +}
 +</code>
 +
 +==== Fichier Systemd de Gn2Pg ====
 +<code>
 +[Unit]
 +Description=GN2PG-<source>
 +After=network.target
 +#After=postgresql.service
 +
 +[Service]
 +Type=simple
 +User=geonat
 +Group=geonat
 +WorkingDirectory=/home/geonat/www/gn2pg/<source>/
 +Environment=GUNICORN_PROC_NAME=gn2pg
 +Environment=GUNICORN_NUM_WORKERS=4
 +Environment=GUNICORN_PORT=5001
 +Environment=GUNICORN_TIMEOUT=30
 +Environment=GUNICORN_LOG_FILE=/var/log/gn2pg/gn2pg-gunicorn.log
 +Environment=GUNICORN_LOG_LEVEL=info
 +EnvironmentFile=-/home/geonat/www/gn2pg/<source>/environ
 +ExecStart=/home/geonat/www/gn2pg/<source>/.venv/bin/gunicorn gn2pg.app.app:create_app() \
 +                --name "${GUNICORN_PROC_NAME}" --workers "${GUNICORN_NUM_WORKERS}" \
 +                --bind "${GUNICORN_HOST}:${GUNICORN_PORT}" --timeout="${GUNICORN_TIMEOUT}" \
 +                --log-file "${GUNICORN_LOG_FILE}" --log-level "${GUNICORN_LOG_LEVEL}"
 +ExecReload=/bin/kill -s HUP $MAINPID
 +TimeoutStartSec=10
 +TimeoutStopSec=5
 +PrivateTmp=true
 +StandardOutput=append:/var/log/gn2pg/gn2pg-<source>.log
 +StandardError=inherit
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
  
 ==== Exemple de contenu pour index.html ==== ==== Exemple de contenu pour index.html ====
  • database/sinp-aura/gn2pg.1708428954.txt.gz
  • Dernière modification : 2024/02/20 11:35
  • de jpmilcent