diff --git a/README.md b/README.md index 6ba4f8055b..87d6c9f0c0 100644 --- a/README.md +++ b/README.md @@ -5,208 +5,47 @@ VERSION EXPERIMENTALE - NE PAS DEPLOYER - TESTS EN COURS -Installation: voir instructions à jour sur +Installation: voir instructions à jour sur Documentation utilisateur: -## Branche ScoDoc 9 expérimentale +## Version ScoDoc 9 N'utiliser que pour les développements et tests. -La version ScoDoc 9 est basée sur Flask (au lieu de Zope) et sur **python 3.9+**. +La version ScoDoc 9 est basée sur Flask (au lieu de Zope) et sur +**python 3.9+**. La version 9.0 s'efforce de reproduire presque à l'identique le fonctionnement de ScoDoc7, avec des composants logiciels différents (Debian 11, Python 3, Flask, SQLAlchemy, au lien de Python2/Zope dans les versions précédentes). -**Version 9.0.0-alpha**: développement en cours, certaines pages fonctionnent, -d'autres pas: merci de signaler les erreurs. -### État actuel (24 août 21) + +### État actuel (25 août 21) - Tests en cours, notamment système d'installation et de migration. -**Non intégré** +**Fonctionnalités non intégrées:** + - fonctions d'envoi de mail (en cours) + - feuille "placement" (en cours) - ancien module "Entreprises" (obsolete) + +### Lignes de commandes -## Installation (sur Debian 11 / python 3.9.2) +Voir [https://scodoc.org/GuideConfig](le guide de configuration). -Expérimental: - - - installer Debian 11 - - - installer la clé: - en root sur le serveur, lancer - - apt-get install gnupg - wget -O - https://scodoc.org/misc/scodoc-repo.gpg.key | apt-key add - - - - apt-get update && apt-get install scodoc9 - - -Voir https://scodoc.org/GuideInstallDebian11 - -## Notes à reporter dans la doc: -On peut installer à partir de zéro, ou sur une machine ayant déjà un ScoDoc 7 -et migrer les données. - -### Arrêter et renommer ScoDoc7 -**Important**: si vous avez un ScoDoc7 installé sur ce serveur, le mettre à jour, l'arrêter et renommer son répertoire avant de commencer l'installation de ScoDoc 8: - - 1. S'assurer que l'installation ScoDoc 7 est à jour - - sudo su - cd /opt/scodoc/Products/ScoDoc/config - ./upgrade.sh - - 2. Arrêter le service ScoDoc 7 - - systemctl stop scodoc - - S'assurer qu'il est bien stoppé (`ps auxw`, ...), sans quoi la migration va échouer. - - 3. Renommer le répertoire de ScoDoc 7: - - sudo su - mv /opt/scodoc /opt/scodoc7 - -Les données pourront être migrées après installation la nouvelle version, voir plus loin. **XXX TODO: script de migration "en place"** (actuellement, seule la migration depuis une _autre_ machine scodoc7 est prévue.) - - - -### Initialisation de la base utilisateur par Flask - -En tant qu'utilisateur `scodoc`: - - su scodoc # si besoin - cd /opt/scodoc - source venv/bin/activate - -Puis initialisation de l'appli: - - flask db-init - -Et saisie du mot de passe `admin`: - - flask user-password admin - -On peut ensuite créer des utilisateurs tests avec: - - flask user-create toto Ens RT - flask user-create tata Ens Info - -Pour créer un utilisateur "super admin", c'est à dire admin dans tous les départements: - - flask user-create admin1 SuperAdmin @all - -## Migration d'une installation ScoDoc 7 sur un nouveau serveur - -C'est le cas recommandé car il minimise la coupure -Dans ce cas, la migration va se faire en suivant les étapes: - - 1. installer le nouveau serveur Linux et ScoDoc 9; - - 2. sauvegarder les données de ScoDoc7 depuis le serveur de production et l'arrêter; - - 3. y charger les données ScoDoc 7; - - 4. importer ces données dans ScoDoc 9. - -### Étape 1 - -Installer le nouveau serveur avec Debian 11 et ScoDoc 9. - -Voir https://scodoc.org/GuideInstallDebian11 - -### Étape 2: sauvegarde des données du serveur ScoDoc 7 - -Se connecter en tant que `root`sur le serveur ScoDoc 7. - - cd /opt/scodoc/Products/ScoDoc/config - # Mise à jour indispensable pour avoir le script de migration - ./upgrade.sh - # Arrêt du service en production - systemctl stop scodoc - # Export des données - ./save_scodoc7_data.sh /tmp/sauvegarde-scodoc7 - -Attention à l'espace disque: au besoin, faire le ménage ou montez un disque supplémentaire. - -Le script indique le nom du fichier à transférer, qui sera dans cet -exemple `/tmp/sauvegarde-scodoc7.tgz` - -Copier ce fichier sur le nouveau serveur. - - - -### Étape 3 - -Charger les données ScoDoc 7: en tant qu'utilisateur "`scodoc`" - - cd /opt/scodoc - ./tools/restore_scodoc7_data.sh /tmp/sauvegarde-scodoc7.tgz - -(adaptez l'argument si les données ont été copiées ailleurs) - -Note: les messages d'erreur comme - - pg_restore: warning: restoring tables WITH OIDS is not supported anymore - pg_restore: error: could not execute query: ERROR: schema "public" already exists - pg_restore: error: could not execute query: ERROR: must be owner of extension plpgsql - -sont normaux et a priori anodins. - -A ce stade, vous avez rechargé les bases ScoDoc 7 mais il faut encore -les convertir vers la nouvelle structure ScoDoc 9. - -### Étape 4 - -Importer les données dasn ScoDoc 9: les formats des bases ayant changé -l'opération est complexe et peut durer plusieurs minutes (ou dizaines -de minutes). Il faut lancer le script en tant que `root`, par exemple ainsi: - - sudo migrate_from_scodoc7.sh /tmp/sauvegarde-scodoc7 - -(le script de l'étape 3 a décompressé l'archive, d'où ici l'absence de l'extension `tgz`). - - -## Création d'un nouveau département - - su scodoc # si besoin - cd /opt/scodoc - source venv/bin/activate - flask create-dept DEPT - -où `DEPT` est le nom du département (un acronyme en majuscule, comme "RT", "GEA", ...). - -### Suppression d'un département - - su scodoc # si besoin - cd /opt/scodoc - source venv/bin/activate - flask delete-dept DEPT - -## Lancement serveur (développement, sur VM Linux) - -En tant qu'utilisateur `scodoc` (pour avoir accès aux bases départements de ScoDoc7): - -Dans un terminal, lancer le serveur: - - export FLASK_APP=scodoc.py - export FLASK_ENV=development - flask run --host=0.0.0.0 - -Test avec gunicorn: - - gunicorn -b 0.0.0.0:8000 -w 4 scodoc:app ## Organisation des fichiers -L'installation comporte les fichiers de l'application, sous `/opt/scodoc/`, et les fichiers locaux (archives, photos, configurations, logs) sous `/opt/scodoc-data`. Par ailleurs, il y a évidemment les bases de données postgresql et la configuration du système. +L'installation comporte les fichiers de l'application, sous `/opt/scodoc/`, et +les fichiers locaux (archives, photos, configurations, logs) sous +`/opt/scodoc-data`. Par ailleurs, il y a évidemment les bases de données +postgresql et la configuration du système Linux. ### Fichiers locaux Sous `/opt/scodoc-data`, fichiers et répertoires appartienant à l'utilisateur `scodoc`. @@ -229,16 +68,18 @@ Principaux contenus: ### Installation du code -Procéder comme indiquer au début, mais au lieu de técharger une *release*, -partir d'un clone git et se placer sur la branche *ScoDoc8*: +Installer ScoDoc 9 normalement ([voir la doc](https://scodoc.org/GuideInstallDebian11)). + +Puis remplacer `/otp/scodoc` par un clone du git. sudo su + mv /opt/scodoc /opt/scodoc-distrib # ou ce que vous voulez cd /opt git clone https://scodoc.org/git/viennet/ScoDoc.git # (ou bien utiliser votre clone gitea so vous l'avez déjà créé !) mv ScoDoc scodoc # important ! cd /opt/scodoc - git checkout ScoDoc8 + # et voilà. ### Tests unitaires @@ -278,25 +119,8 @@ un utilisateur: base de données (tous les départements, et les utilisateurs) avant de commencer ! - # Paquet debian 11 -Ce que le script d'installation du paquet ne fait pas: +Ce que le script d'installation/mise à jour du paquet ne fait pas encore: - - démarrer redis `systemctl start redis` (mettre dans la doc) - - - démarrer le firewall (proposer script à part) - - ufw default deny incoming - ufw default allow outgoing - ufw allow ssh - ufw allow https - yes | ufw enable - - - générer les certificats auto-signés (proposer script à part) - - - démarrer nginx: `systemctl restart nginx` (mettre dans la doc) - - - mise à jour hebdomadaire (à faire) - - - migrations flask (à faire) \ No newline at end of file + - migrations flask (à faire) diff --git a/tools/build_release.sh b/tools/build_release.sh index 855c200907..d41952027d 100644 --- a/tools/build_release.sh +++ b/tools/build_release.sh @@ -7,7 +7,7 @@ die() { } PACKAGE_NAME=scodoc9 -RELEASE_TAG=9.0.0-d +RELEASE_TAG=9.0.1 VERSION=9.0.0 RELEASE=1 ARCH="amd64" diff --git a/tools/configure-scodoc9.sh b/tools/configure-scodoc9.sh index 7d460372f6..d5ebb6e550 100755 --- a/tools/configure-scodoc9.sh +++ b/tools/configure-scodoc9.sh @@ -131,6 +131,7 @@ fi # ------------ LANCEMENT DES SERVICES systemctl start redis +systemctl start nginx systemctl start scodoc9 echo diff --git a/tools/debian/control b/tools/debian/control index ea2fa68150..f61e31b07d 100644 --- a/tools/debian/control +++ b/tools/debian/control @@ -1,5 +1,5 @@ Package: scodoc9 -Version: 9.0.0 +Version: 9.0.1 Architecture: amd64 Maintainer: Emmanuel Viennet Description: ScoDoc 9