DocScoDoc/docs/UpgradeToDeb12Sco96.md

161 lines
4.2 KiB
Markdown
Raw Normal View History

# Procédure pour la mise à jour vers Debian 12 et ScoDoc 9.6
Cette page documente la mise à jour d'un serveur ScoDoc 9.4 ou 9.5 tournant sous
Linux Debian 11 vers la version suivante: ScoDoc 9.6 sous Debian 12.
On commence par mettre à jour normalement le système Debian, puis on change la
version de la base de données postgresql puis on met à jour ScoDoc.
## Upgrade Debian 11 vers Debian 12
La documentation officielle est là:
[DebianUpgrade](https://wiki.debian.org/DebianUpgrade). Elle couvre tous les
cas, mais en général notre serveur ScoDoc est plus simple: résumé ci-dessous
### Sauvegarder
Avant tout, sauvegarder vos données et l'ensemble de votre serveur.
Prévenez les utilisateurs et arrêtez le service: `systemctl stop scodoc9`
### Mettre à jour Debian
Dans la suite, on suppose que vous avez un shell root. Sinon, utilisez `sudo`.
#### Vérifier qu'on est à jour
```bash
apt-get update
apt-get upgrade
apt-get full-upgrade
```
#### Modifier les sources de mise à jour
Éditer le fichier `/etc/apt/sources.list` (par exemple avec la commande
`nano /etc/apt/sources.list`) et remplacer le mot `bullseye`par
`bookworm`.
Il peut être plus simple de reprendre ce contenu:
```txt
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main
deb-src http://security.debian.org/debian-security bookworm-security main
deb http://deb.debian.org/debian/ bookworm-updates main
deb-src http://deb.debian.org/debian/ bookworm-updates main
```
#### Mettre à jour
```bash
apt-get clean
apt-get update
```
Les deux commandes suivantes sont longues, surtout ne pas les interrompre.
Répondre "oui" (ou la réponse par défaut) aux diverses question, ou dire que
vous conservez les versions locales modifiées de vos fichiers de configuration.
```bash
apt-get upgrade
#
# Puis:
apt-get full-upgrade
```
Un petit nettoyage:
```bash
apt-get autoremove
```
Et un redémarrage
```bash
shutdown -r now
```
Après reconnexion, vous avez un serveur Debian 12. Reste à s'occuper de la base
de données et de ScoDoc. D'abord, s'assurer que le service na pas redémarré:
```bash
systemctl stop scodoc9
``````
## Upgrade Postgresql
Debian 12 est livré avec Postgresql 15, tandis que l'installation précédente
tournait sous Postgresql 13. Il est donc nécessaire de migrer les données en
base vers la nouvelle version.
Procédure inspirée de
[ce tuto en français](https://wiki.fiat-tux.fr/books/administration-syst%C3%A8mes/page/migration-d%E2%80%99une-version-majeure-de-postgresql-%C3%A0-une-autre]
Toujours dans un shell root, copier/coller les commandes suivantes:
```bash
service postgresql stop
pg_dropcluster --stop 15 main
pg_upgradecluster -m upgrade 13 main
systemctl start postgresql
su -c "/usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages" postgres
pg_dropcluster 13 main --stop
apt-get autoremove --purge postgresql-13 postgresql-client-13
```
## Passage de ScoDoc 9.5 (ou 9.4) à 9.6
### Modification des sources de paquets Debian
- Supprimer l'ancien fichier:
```bash
rm /etc/apt/sources.list.d/scodoc*
```
- Ajouter le dépot scodoc: copier ce fichier <a href="/attachments/scodoc.list"
download>scodoc.list</a> dans `/etc/apt/sources.list.d/`
ou bien l'éditer pour qu'il contienne juste cette ligne:
```text
# contenu du fichier /etc/apt/sources.list.d/scodoc.list
deb http://scodoc.org/deb/bookworm bookworm main
```
### Mise à jour du paquet scodoc9
```bash
apt update && apt upgrade
```
devrait installer `scodoc9.6.x`.
### Migration des absences vers les assiduités
Le nouveau module de gestion des assiduité (absences/présences/justificatifs)
permet d'importer les anciennes "absences" (et justificatifs). Pour cela, lancer
les commandes suivantes
```bash
su scodoc
cd /opt/scodoc
source venv/bin/activate
flask migrate-abs-to-assiduites
```
Le traitement est assez long et peut prendre plusieurs dizaines de minutes,
suivant le nombre d'absences et la vitesse de votre serveur.
### Démarrage du service
Comme d'habitude, en tant que `root`:
```bash
systemctl start scodoc9
```