serveurs:installation:bkp-srv:pre-prod-geonature

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
serveurs:installation:bkp-srv:pre-prod-geonature [2025/02/18 16:11] – [Installer le dépôt sinp-<region>-data] jpmilcentserveurs:installation:bkp-srv:pre-prod-geonature [2026/09/16 19:24] (Version actuelle) – [Création du container Docker hébergeant Postgresql & Nginx] jpmilcent
Ligne 4: Ligne 4:
   * Se connecter à l'utilisateur geonat de bkp-srv :<code bash>ssh geonat@bkp-<region>-sinp</code>   * Se connecter à l'utilisateur geonat de bkp-srv :<code bash>ssh geonat@bkp-<region>-sinp</code>
   * Installer les dépendances (NVM, Python...) de GeoNature en suivant [[serveurs:installation:web-srv:geonature-dependances#dependances_pour_l_instance_web-srv_bkp-srv_espace_pre-prod| la documentation]].   * Installer les dépendances (NVM, Python...) de GeoNature en suivant [[serveurs:installation:web-srv:geonature-dependances#dependances_pour_l_instance_web-srv_bkp-srv_espace_pre-prod| la documentation]].
 +
 ===== Procédure rapatriement de la prod ===== ===== Procédure rapatriement de la prod =====
   * Se connecter à l'utilisateur //geonat// de //bkp-srv// : <code bash>ssh geonat@bkp-<region>-sinp</code>   * Se connecter à l'utilisateur //geonat// de //bkp-srv// : <code bash>ssh geonat@bkp-<region>-sinp</code>
Ligne 220: Ligne 221:
 GUNICORN_TIMEOUT=90 GUNICORN_TIMEOUT=90
 </code> </code>
 +
 ==== Reconfigurer UsersHub ==== ==== Reconfigurer UsersHub ====
   * Changer les paramètres suivants dans //config.py// : <code bash>vi ~/usershub/config/config.py</code> <code python>   * Changer les paramètres suivants dans //config.py// : <code bash>vi ~/usershub/config/config.py</code> <code python>
Ligne 345: Ligne 347:
   * Accéder à //Psql// avec : <code bash>psql -U ${POSTGRES_USER} ${POSTGRES_DB}</code>   * Accéder à //Psql// avec : <code bash>psql -U ${POSTGRES_USER} ${POSTGRES_DB}</code>
   * Dans le container, l'utilisateur ${POSTGRES_USER} et la base ${POSTGRES_DB} remplace l'utilisateur par défaut //postgres//. Il est donc nécessaire de se connecter avec ces arguments !   * Dans le container, l'utilisateur ${POSTGRES_USER} et la base ${POSTGRES_DB} remplace l'utilisateur par défaut //postgres//. Il est donc nécessaire de se connecter avec ces arguments !
- 
  
 === Installer le client Postgresql sur l'hôte === === Installer le client Postgresql sur l'hôte ===
-  * Vérifier la présence du dépôt de paquets deb pour Postgresql dans : ''/etc/apt/sources.list.d/ '' +  * Vérifier la présence du dépôt de paquets deb pour Postgresql dans : ''%% /etc/apt/sources.list.d/ %%'' 
-  * Vérifier la version de Postgresql utilisé par le contenair Docker Postgresql de la pré-prod. +  * **Vérifier la version de Postgresql utilisé par le container Docker Postgresql de la pré-prod.** 
-    * Utiliser la même version pour l'installation du paquet postgresql-client. Ex. : ''apt install postgresql-client-15''+    * Utiliser la même version pour l'installation du paquet postgresql-client. Ex. ici la v15 : ''%% apt install postgresql-client-15 %%'' 
 +  * Afin de pouvoir utiliser la commande ''psql'' sur l'hôte mais également le  script ''%% install_db.sh %%'' de l'Atlas, il est nécessaire de : 
 +    * Créer un utilisateur ''postgres'' sur l'hôte : <code bash>adduser --system --no-create-home postgres</code> 
 +    * S'assurer que le fichier ''docker-compose.yml'' de la préprod lançant la base Postgres créé bien un mapping des sockets sur ''/run/postgresql'' dans les volumes (''%% - /run/postgesql/:/var/run/postgresql %%''). 
 +    * Il semble aussi nécessaire de modifier le mapping utilisateur des Foreign Data Tables en indiquant que le mot de passe n'est pas requis :<code bash> 
 +      sudo -u postgres -s psql -d $db_name -c "CREATE USER MAPPING FOR $owner_atlas SERVER geonaturedbserver OPTIONS (user '$atlas_source_user', password_required 'false') ;"  &>> log/install_db.log 
 +</code>  
 +    * Le problème c'est que ce mécanisme ne marche pas en PROD où le mot de passe est bien requis ! Il faudrait chercher l'origine de la différence de fonctionnement... 
 +      * En attendant, le plus simple semble de corriger le script ''install_db.sh'' sur la Préprod si besoin. 
 + 
 +=== Stocker les logs Postgresql sur l'hôte === 
 +    * Créer un dossier ''/var/log/postgresql'': <code bash> 
 +mkdir /var/log/postgresql/ 
 +chown root:999 /var/log/postgresql/ 
 +chmod 774 /var/log/postgresql/ 
 +</code>  
 +      * Sur l'hôte l'utilisateur du container créant le socket correspond à l'utilisateur dont l'id vaut 999 (''systemd-coredump'' | ''systemd-timesync''). <todo>Il faudrait voir à utiliser l'utilisateur système "postgres"...</todo> 
 +    * Assurez vous que le fichier ''docker-compose.yml'' de la préprod lançant la base Postgres créé bien un mapping du dossier suivant''- /var/log/postgesql/:/var/log/postgresql'' 
 +    * Vérifier également que Postgresql dans le container est bien lancé avec les paramètres de config suivant :<code properties> 
 +# Log 
 +#log_destination = stderr 
 +log_directory = '/var/log/postgresql' 
 +log_filename = 'postgresql-%a.log' 
 +log_file_mode = 0600 
 +log_truncate_on_rotation = on 
 +log_rotation_age = 1440 
 +log_rotation_size = 0 
 +</code> 
 +  * TODO :<todo>Voir comment forcer l'id de l'utilisateur "postgres" créant les fichier de log</todo> : dans le container. Par défaut il s'agit de "postgres" avec un id 999, il semblerait...
  
 ===== Remplacer la base par la dernière version sauvegardée ===== ===== Remplacer la base par la dernière version sauvegardée =====
Ligne 362: Ligne 391:
     * Donner les droits à //geonat// sur les dumps : <code bash> chown geonat: /home/geonat/docker/preprod/postgres/restore/*.custom </code>     * Donner les droits à //geonat// sur les dumps : <code bash> chown geonat: /home/geonat/docker/preprod/postgres/restore/*.custom </code>
     * Démonter le dépôt : <code bash> cd ; borg umount /tmp/repo </code>     * Démonter le dépôt : <code bash> cd ; borg umount /tmp/repo </code>
 +      * Si le dépôt est sur un lien symbolique, indiquer le chemin réel, ex. : <code>borg umount /data/tmp/repo </code>
   * Se connecter en //geonat// sur //bkp-srv// :    * Se connecter en //geonat// sur //bkp-srv// : 
     * Se placer dans le dossier de la stack //preprod// : <code bash>cd ~/docker/preprod/</code>     * Se placer dans le dossier de la stack //preprod// : <code bash>cd ~/docker/preprod/</code>
Ligne 370: Ligne 400:
       * <color #ed1c24>**ATTENTION**</color> : La restauration précédente va bloquer sur le rafraîchissement de la VM "observations" pour une raison encore inconnue. Stopper la restauration avec ''CTRL+C''. Les tables et les VMs sont malgré tout généré dans la base. Il suffit donc de rafraichir l'ensemble des VMs pour finaliser la restauration.       * <color #ed1c24>**ATTENTION**</color> : La restauration précédente va bloquer sur le rafraîchissement de la VM "observations" pour une raison encore inconnue. Stopper la restauration avec ''CTRL+C''. Les tables et les VMs sont malgré tout généré dans la base. Il suffit donc de rafraichir l'ensemble des VMs pour finaliser la restauration.
       * Rafraîchir les VMs grâce au script ''gnatlas_refresh_all.sql'' : <code bash>docker compose run --rm preprod-postgres-restore psql -U geonatadmin -e -d gnatlas -f /restore/gnatlas_refresh_all.sql</code>       * Rafraîchir les VMs grâce au script ''gnatlas_refresh_all.sql'' : <code bash>docker compose run --rm preprod-postgres-restore psql -U geonatadmin -e -d gnatlas -f /restore/gnatlas_refresh_all.sql</code>
 +      * Notes : si **le fichier de la base de données prend trop de place** dans ''/home/geonat/docker/preprod/postgresql/restore/'', il est possible de le monter directement au bon endroit avec le paramètre ''%%--volume%%''. Ex. : <code bash>docker compose run --volume /data/tmp/restore/2025-03-20_geonature2db.custom:/restore/2025-03-20_geonature2db.custom --rm preprod-postgres-restore /restore/restore.sh -d "2025-03-20_geonature2db.custom"</code>
  
 ===== Docker Compose, Services SystemD et Nginx Proxy  ===== ===== Docker Compose, Services SystemD et Nginx Proxy  =====
Ligne 401: Ligne 432:
   * Copier TOUS les fichiers de config depuis le serveur ''db-srv''   * Copier TOUS les fichiers de config depuis le serveur ''db-srv''
  
-Connecter la base Postgresql du Containr Docker sur l'hôte +
-  * Afin de pouvoir utiliser la commande Psql sur l'hôte, il est nécessaire de : +
-    * Créer un utilisateur ''postgres'' : <code bash>adduser --system --no-create-home postgres</code> +
-    * Installer le paquet contenant la commande ''psql''+
-    * S'assurer que le fichier docker-compose.yml lançant la base Postgres créé bien un mapping des sockets sur ''/run/postgresql'' dans les volumes (''/run/postgesql/:/var/run/postgresql'').+
  • serveurs/installation/bkp-srv/pre-prod-geonature.1739895110.txt.gz
  • Dernière modification : 2025/02/18 16:11
  • de jpmilcent