Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
serveurs:mise-a-jour:systeme-debian [2024/01/24 14:49] – [Procédure post mise à jour] jpmilcent | serveurs:mise-a-jour:systeme-debian [2024/06/13 10:33] (Version actuelle) – [Procédure post mise à jour] jpmilcent |
---|
====== Procédure de mise à jour ====== | ====== Procédure de mise à jour ====== |
* Informer à l'avance les principaux utilisateurs de l'instance de la mise à jour en cours. | * Informer à l'avance les principaux utilisateurs de l'instance de la mise à jour en cours. |
* Vérifier que l'instance à mettre à jour a bien été sauvegardée par le mécanisme de snapshot d'OVH. | * Vérifier la présence d'une sauvegarde correcte et récente : |
* Vérifier que la sauvegarde via Borgmatic du système et des éventuelles base de données a bien été réalisé. | * d'un snapshot de l'instance à mettre à jour sur l'interface d'OVH. |
| * d'une sauvegarde via Borgmatic du système et des éventuelles base de données. |
* Connectez vous en tant que //root// à l'instance depuis la console VNC du manager OVH. Cela permettra de surveiller l'instance lors des redémarrages. | * Connectez vous en tant que //root// à l'instance depuis la console VNC du manager OVH. Cela permettra de surveiller l'instance lors des redémarrages. |
* Vérifiez et noter le système d’exploitation actuellement installé sur votre machine : ''lsb_release -a'' | * Vérifiez et notez : |
* Vérifiez et noter le noyau actuellement installé : ''uname -mrs'' | * le système d’exploitation actuellement installé sur votre machine : ''lsb_release -a'' |
* Vérifier et noter la version de Debian : ''cat /etc/debian_version'' | * le noyau actuellement installé : ''uname -mrs'' |
| * la version de Debian : ''cat /etc/debian_version'' |
* Sauvegarder les éléments qui pourrait s'avérer nécessaire une fois la mise à jour lancée : <code bash> | * Sauvegarder les éléments qui pourrait s'avérer nécessaire une fois la mise à jour lancée : <code bash> |
cd /home/admin/dwl/ | cd /home/admin/dwl/ |
</code> | </code> |
* Suppression des paquets listés avec ''apt remove <nom-paquet-1> <nom-paquet-1> <nom-paquet-...>'' | * Suppression des paquets listés avec ''apt remove <nom-paquet-1> <nom-paquet-1> <nom-paquet-...>'' |
* Supprimer les paquets n'appartenant pas aux dépôts officiel Debian et qui ne sont pas utile sur le serveur. Il faut bien sûr **garder les paquets nécessaire** (Ex. Docker, Postgreql). Utiliser la commande : <code bash>apt list --installed "?not(?origin(debian))"</code> | * Supprimer les paquets n'appartenant pas aux dépôts officiel Debian et qui ne sont pas utile sur le serveur. Il faut bien sûr **garder les paquets nécessaire** (Ex. Docker, Postgreql). Utiliser la commande : <code bash> |
| apt list --installed "?not(?origin(debian))" |
| aptitude search '?narrow(?installed, ?not(?origin(Debian)))' |
| </code> |
* Chercher et supprimer les anciens fichier de configuration devenus inutiles : ''find /etc -name "*.dpkg-*" -o -name "*.ucf-*" -o -name "*.merge-error"'' | * Chercher et supprimer les anciens fichier de configuration devenus inutiles : ''find /etc -name "*.dpkg-*" -o -name "*.ucf-*" -o -name "*.merge-error"'' |
* Utilisation de ''diff'' pour voir les différences et application des changements aux fichiers de config existants. | * Utilisation de ''diff'' pour voir les différences et application des changements aux fichiers de config existants. |
* Sauvegarder l'ancien venv : ''mv venv "venv.save$(date +"%Y-%m-%d")"'' | * Sauvegarder l'ancien venv : ''mv venv "venv.save$(date +"%Y-%m-%d")"'' |
* Réinstaller en suivant [[serveurs:installation:script-srvstatus#installer_le_script|la documentation]] (inule de cloner à nouveau, mettre à jour seulement avec ''git pull''). | * Réinstaller en suivant [[serveurs:installation:script-srvstatus#installer_le_script|la documentation]] (inule de cloner à nouveau, mettre à jour seulement avec ''git pull''). |
* Pour le serveur //db-srv//, il a été nécessaire de : | |
* désinstaller la dernière version de Postgresql (16) qui s'est installé automatiquement : | === Serveur db-srv === |
* voir les version actuelles de Postgresql qui fonctionnent : ''pg_lscluster'' | * Désinstaller la dernière version de Postgresql (16) qui s'est installé automatiquement : |
* chercher les paquets Postgresql installés : ''apt list --installed|grep postgresql'' | * voir les version actuelles de Postgresql qui fonctionnent : ''pg_lsclusters'' |
* Corriger les collations des bases de données Postgresql : | * chercher les paquets Postgresql installés : ''%%apt list --installed|grep postgresql%%'' |
* Ressource : [[https://www.postgresql.org/docs/current/sql-altercollation.html#SQL-ALTERCOLLATION-NOTES|Doc Postgresql ALTER COLLATION]] | * Corriger les collations des bases de données Postgresql : |
* Passer en utilisateur //postgres// : ''su - postgres'' | * Ressource : [[https://www.postgresql.org/docs/current/sql-altercollation.html#SQL-ALTERCOLLATION-NOTES|Doc Postgresql ALTER COLLATION]] |
* Lancer //Psql// : ''psql'' | * Passer en utilisateur //postgres// : ''su - postgres'' |
* Lister les problèmes de collations vis à vis des bases de données :<code sql> | * Lancer //Psql// : ''psql'' |
| * Lister les problèmes de collations vis à vis des bases de données :<code sql> |
SELECT datname, | SELECT datname, |
datcollate, | datcollate, |
FROM pg_database; | FROM pg_database; |
</code> | </code> |
* Pour chaque base avec une collation //datcollversion// différente de //pg_database_collation_actual_version//, il faut : | * Pour chaque base avec une collation //datcollversion// différente de //pg_database_collation_actual_version//, il faut : |
* Basculer sur la base (Ex. pour //geonature2db//) : ''\c geonature2db'' | * Basculer sur la base (Ex. pour //geonature2db//) : ''\c geonature2db'' |
* Liste les éventuels objets à reconstruire : <code sql> | * Liste les éventuels objets à reconstruire : <code sql> |
SELECT pg_describe_object(refclassid, refobjid, refobjsubid) AS "Collation", | SELECT pg_describe_object(refclassid, refobjid, refobjsubid) AS "Collation", |
pg_describe_object(classid, objid, objsubid) AS "Object" | pg_describe_object(classid, objid, objsubid) AS "Object" |
ORDER BY 1, 2; | ORDER BY 1, 2; |
</code> | </code> |
* Mettre à jour la collation, une fois les objets reconstruits : <code sql>ALTER DATABASE geonature2db REFRESH COLLATION VERSION;</code> | * Mettre à jour la collation, une fois les objets reconstruits : <code sql>ALTER DATABASE geonature2db REFRESH COLLATION VERSION;</code> |
* La base //template0// ne doit pas avoir de collation. Pour Debian 12, nous devrions au final avoir quelque chose comme ceci:<code> | * La base //template0// ne doit pas avoir de collation. Pour Debian 12, nous devrions au final avoir quelque chose comme ceci:<code> |
datname | datcollate | datcollversion | pg_database_collation_actual_version | datname | datcollate | datcollversion | pg_database_collation_actual_version |
--------------+-------------+----------------+-------------------------------------- | --------------+-------------+----------------+-------------------------------------- |
(7 lignes) | (7 lignes) |
</code> | </code> |
* Se connecter à //web-srv// pour Relancer les services SystemD de GeoNature, GeoNature-Atlas, TaxHub et UsersHub. L'arrêt de la base de données Postgresql semble leurs poser problème dans certains cas. | * Il existe également des [[https://gist.github.com/troykelly/616df024050dd50744dde4a9579e152e|scripts Bash capable d'automatiser cette mise à jour des collations]]. |
* Pour le serveur //web-srv//, il a été nécessaire de : | * Pour le SINP PACA, il a été nécessaire de se connecter à //web-srv// pour relancer les services SystemD de GeoNature, GeoNature-Atlas, TaxHub et UsersHub. L'arrêt de la base de données Postgresql semble leurs poser problème dans certains cas. |
* Recréer les //venv// de : | * Installer Pipx qui remplace l'utilisation de ''%%pip install --user%%'' à partir de Debian 12 : |
* GeoNature | * En tant que //root// installer le paquet : ''sudo apt install pipx'' |
* GeoNature-Atlas | * Se connecter en tant que //geonat// sur //db-srv// : '' ssh geonat@db-<sinp-region>-sinp '' |
* TaxHub | * Configurer les chemins d'accès : ''pipx ensurepath'' |
* UsersHub | * Installer Pipenv : ''pipx install pipenv'' |
* Relancer les services SystemD de GeoNature, GeoNature-Atlas, TaxHub et UsersHub. | * Relancer le terminal pour prendre en compte les changement ou essayer : ''source ~/.bashrc'' |
* Pour le serveur //bkp-srv//, il a été nécessaire de recréer les //venv// suivant : | * Vérifier que Pipx est fonctionnel : ''%%pipx --version%%'' |
* ''/opt/srvstatus/venv'' : [[serveurs:installation:script-srvstatus#installer_le_script|voir la section Installer le script]] | * Réinstaller le venv avec Pipenv dans ''/home/geonat/data/import-parser/'' : |
* ''/root/borg-env'' : [[serveurs:installation:bkp-srv:install-borg#installer_borg_sur_bkp-srv|voir la section Installer Borg sur Bkp-Srv]] | * Supprimer l'ancienne installation du venv : ''cd ~/.local/share/virtualenvs/ ; rm -f import-parser-* '' |
* ''/home/backups/borg-env/'' : [[serveurs:installation:bkp-srv:install-borg#installer_borg_sur_bkp-srv|voir la section Installer Borg sur Bkp-Srv]] | * Retourner dans le dossier du Parser : ''cd ~/data/import-parser/'' |
* ''/home/backups/osc-env/'' : [[serveurs:installation:bkp-srv:install-instance-backup-script#installation_d_openstack_client_ocs|voir la section Installation d'OpenStack Clien OCS]] | * Ré-installer le venv et les dépendances : '' pipenv install '' |
| * Réinstaller le venv avec Pipenv dans ''/home/geonat/data/gn2pg/'' : |
| * Supprimer l'ancienne installation du venv : ''cd ~/.local/share/virtualenvs/ ; rm -f gn2pg-* '' |
| * Retourner dans le dossier du Parser : ''cd ~/data/gn2pg/'' |
| * Ré-installer le venv et les dépendances : '' pipenv install '' |
| |
| === Serveur web-srv === |
| * Recréer les //venv// de : |
| * GeoNature : ''cd install; ./01_install_backend.sh'' |
| * Installer le SDK Sentry dans le venv de GN : ''%% pip install --upgrade sentry-sdk[flask] %%'' |
| * Pour Debian 12 et Python 3.11, nécessite de modifier le fichier ''backend/requirements-common.txt'' :<code> |
| lxml==4.9.4 |
| fiona==1.8.22 |
| </code> |
| * TaxHub : |
| * Pour Debian 12 et Python 3.11, nécessite de modifier le fichier ''requirements-common.txt'' :<code> |
| psycopg2==2.9.5 |
| </code> |
| * UsersHub : |
| * Pour Debian 12 et Python 3.11, nécessite de modifier le fichier ''requirements-common.txt'' :<code> |
| Jinja2==2.11.3 |
| psycopg2==2.9.5 |
| MarkupSafe==2.0.1 |
| </code> |
| * GeoNature-Atlas : |
| * Pour Debian 12 et Python 3.11, nécessite de modifier le fichier ''requirements.txt'' :<code> |
| greenlet==1.1.3 |
| </code> |
| * Relancer les services SystemD de GeoNature, GeoNature-Atlas, TaxHub et UsersHub. |
| |
| === Serveur bkp-srv === |
| * Recréer les //venv// suivant : |
| * ''/opt/srvstatus/venv'' : [[serveurs:installation:script-srvstatus#installer_le_script|voir la section Installer le script]] |
| * ''/root/borg-env'' : [[serveurs:installation:bkp-srv:install-borg#installer_borg_sur_bkp-srv|voir la section Installer Borg sur Bkp-Srv]] |
| * ''/home/backups/borg-env/'' : [[serveurs:installation:bkp-srv:install-borg#installer_borg_sur_bkp-srv|voir la section Installer Borg sur Bkp-Srv]] |
| * ''/home/backups/osc-env/'' : [[serveurs:installation:bkp-srv:install-instance-backup-script#installation_d_openstack_client_ocs|voir la section Installation d'OpenStack Clien OCS]] |
| |
| |
* //web-srv// : | * //web-srv// : |
* SINP-PACA : <code>Linux 4.19.0-24-cloud-amd64 x86_64</code> | * SINP-PACA : <code>Linux 4.19.0-24-cloud-amd64 x86_64</code> |
* SINP-AURA : | * SINP-AURA : <code>Linux 4.19.0-16-cloud-amd64 x86_64</code> |
* //bkp-srv// : | * //bkp-srv// : |
* SINP-AURA : <code>Linux 4.19.0-25-cloud-amd64 x86_64</code> | * SINP-AURA : <code>Linux 4.19.0-25-cloud-amd64 x86_64</code> |
* Résultat de ''cat /etc/debian_version'' : <code>10.13</code> | * Résultat de ''cat /etc/debian_version'' : <code>10.13</code> |
| * Résultat de ''aptitude search '?narrow(?installed, ?not(?origin(Debian)))'': |
| * SINP AURA : |
| * web-srv: <code> |
| i containerd.io - An open and reliable container runtime |
| i A docker-buildx-plugin - Docker Buildx cli plugin. |
| i docker-ce - Docker: the open-source application container engine |
| i docker-ce-cli - Docker CLI: the open-source application container engine |
| i A docker-ce-rootless-extras - Rootless support for Docker. |
| i docker-compose-plugin - Docker Compose (V2) plugin for the Docker CLI. |
| i A linux-image-4.19.0-16-cloud-amd64 - Linux 4.19 for x86-64 cloud (signed) |
| </code> |
* Fichier ''sources.list'' de Debian 11 : <code apt_sources [enable_line_numbers="true"]> | * Fichier ''sources.list'' de Debian 11 : <code apt_sources [enable_line_numbers="true"]> |
# Main | # Main |
deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free | deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free |
</code> | </code> |
| * Résultat de ''find /etc -name "*.dpkg-*" -o -name "*.ucf-*" -o -name "*.merge-error"'': |
| * SINP AURA : |
| * web-srv : <code> |
| /etc/default/rkhunter.ucf-dist |
| /etc/firewalld/firewalld.conf.dpkg-dist |
| /etc/ca-certificates.conf.dpkg-old |
| /etc/ssh/sshd_config.ucf-dist |
| /etc/rkhunter.conf.dpkg-dist |
| /etc/cron.daily/bsdmainutils.dpkg-remove |
| /etc/cron.daily/rkhunter.dpkg-dist |
| /etc/apt/apt.conf.d/50unattended-upgrades.ucf-dist |
| /etc/cloud/cloud.cfg.dpkg-dist |
| /etc/nginx/sites-available/default.dpkg-dist |
| /etc/nginx/nginx.conf.dpkg-dist |
| </code> |
| |
| |