documentation install et migration

This commit is contained in:
Emmanuel Viennet 2021-07-23 15:46:12 +03:00
parent 91ece1274e
commit 3267a1f9bf
3 changed files with 102 additions and 34 deletions

View File

@ -10,17 +10,16 @@ Documentation utilisateur: <https://scodoc.org>
## Branche ScoDoc 8 expérimentale
N'utiliser que pour les développements et tests, dans le cadre de la migration de Zope vers Flask.
N'utiliser que pour les développements et tests.
La version ScoDoc8 est basée sur Flask (au lieu de Zope) et sur **python 3.7+**.
Elle ne sera pas mise en production, c'est une version de développement pour le passage à Python 3.
De très nombreux changements sont susceptibles d'affecter l'API, mais on s'efforce à ce que rien
ne soit visible des utilisateurs.
ne soit visible des utilisateurs Web.
## Work in Progress (WIP)
Développement en cours, certaines pages fonctionnent, d'autres pas.
**Work in Progress (WIP)**: développement en cours, certaines pages fonctionnent, d'autres pas:
merci de signaler les erreurs.
### État actuel (23 juillet 21)
@ -37,49 +36,52 @@ Développement en cours, certaines pages fonctionnent, d'autres pas.
- tests, formulaires utilisateurs, logging.
## Setup (sur Debian 10 / python3.7)
## Installation (sur Debian 10 / python3.7)
Pour les dev, le plus simple est de partir d'une install fonctionnelle de ScoDoc7 sous git, et de changer de branche
On peut installer à partir de zéro, ou sur une machine ayant déjà un ScoDoc 7 et migrer les données.
git checkout ScoDoc8
### Installation
Debian 10 est livré avec Python 3.7.
Sur un système Linux Debian 10, en tant que `root`:
apt-get install python3-dev
apt-get install python3-venv
apt-get install libpq-dev
apt-get install libcrack2-dev
- Charger la dernière release depuis https://scodoc.org/git/viennet/ScoDoc/releases
Création d'un environnement:
- Déplacer ou copier le fichier `scodoc-v8.x.y.tgz` dans `/opt` et le décomprimer:
python3 -m venv venv
sudo su
cd /opt; tar xf - scodoc-v8.x.y.tgz # remplacer x et y par votre version
Puis installation de Flask:
- Lancer le script d'installation:
source venv/bin/activate
pip install flask
pip install wheel
cd /opt/scodoc8/tools
./install_debian10.sh
Installer les dépendances:
ce script crée un compte utilisateur "scodoc".
pip install -r requirements-3.7.txt
Note: si vous installez sur une machine déjà configurée pour ScoDoc 7, il
est inutile de reconfigurer la messagerie et le firewall.
## Bases de données
### Bases de données
ScoDoc8 utilise les bases de département de ScoDoc7, mais une nouvelle base
utilisateurs nommée `SCO8USERS` (au lieu de `SCOUSERS`), qui est manipulée
via `sqlalchemy`.
### Configuration de la base utilisateurs
Lancer le script `tools/create_database.sh`
Lancer le script:
su postgres
cd /opt/scodoc8/tools
./create_database.sh
Ce script crée une base nommée `SCO8USERS`, appartenant à l'utilisateur (role) postgres `scodoc`.
Cet utilisateur est créé si nécessaire.
Cet utilisateur est automatiquement créé si nécessaire.
### Initialisation de la base utilisateur par Flask
En tant qu'utilisateur `scodoc`:
su scodoc # si besoin
flask db init
flask db migrate -m "users and roles tables"
flask db upgrade
@ -107,6 +109,31 @@ Pour créer un utilisateur "super admin", c'est à dire admin dans tous les dép
flask user-create admin1 SuperAdmin @all
## Migration d'une installation ScoDoc 7
Le script `migrate_from_scodoc7.sh` va déplacer les donneés et reconfigurer les bases de données
de votre installation ScoDoc 7 pour passer à ScoDoc 8 (*ne pas utiliser en production !*).
**Les modifications effectuées sont sans retour: ScoDoc 7 ne fonctionnera plus !**
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 scodoc7
S'assurer qu'il est bien stoppé (`ps auxw`, ...), sans qui la migration va échouer.
3. Lancer le script de migration
ScoDoc 8 doit avoir été installé comme expliqué plus haut.
sudo su
cd /opt/scodoc8/tools
./migrate_from_scodoc7.sh
## Lancement serveur (développement, sur VM Linux)

View File

@ -26,6 +26,9 @@ then
exit 1
fi
# ------------ Unix user
check_create_scodoc_user
# ------------ Permissions & directories
change_scodoc_file_ownership
@ -39,6 +42,11 @@ apt-get -y install postgresql
apt-get -y install curl
apt-get -y install graphviz
# ------------ CREATION DU VIRTUALENV
echo "Creating python3 virtualenv..."
cd "$SCODOC_DIR" || die "can't cd $SCODOC_DIR"
python3 -m venv venv || die "can't create Python 3 virtualenv"
# ------------ INSTALL DES PAQUETS PYTHON (3.7)
# ScoDoc8 uses pip in our env
source venv/bin/activate

View File

@ -6,23 +6,50 @@ source config.sh
source utils.sh
usage() {
echo "Usage: $0 v9.x.y, where v9.x.y est le numéro de version créé"
echo $1 >&2
echo "Usage: $0 [-f] -v 9.x.y, where 9.x.y est le numéro de version créé" >&2
echo " -f: force release even if there's local changes" >&2
exit 1
}
if [ $# != 1 ] || [ $1 = "-h" ] || [ $1 = "--help" ]
FORCE_RELEASE=0
while getopts "hfv:" opt; do
case $opt in
f)
FORCE_RELEASE=1
;;
v)
VERSION=$OPTARG
;;
h)
usage "Prépare une release"
;;
\?)
usage "Invalid option: -$OPTARG"
;;
:)
usage "Option -$OPTARG requires an argument."
;;
esac
done
if [ -z "$VERSION" ]
then
usage
fi
VERSION=$1
SOURCE_URL="https://scodoc.org/git/viennet/ScoDoc.git"
SOURCE_BRANCH="ScoDoc8"
RESULTFILE="scodoc-$VERSION.tgz"
# Check local diffs, ignoring file modes (changed on VMs)
local_diffs=$(git -c core.fileMode=false status --porcelain --untracked-files=no | wc -l)
if [ "$local_diffs" -ne 0 ]
if [ "$FORCE_RELEASE" -eq 0 ]
then
# Check local diffs, ignoring file modes (changed on VMs)
local_diffs=$(git -c core.fileMode=false status --porcelain --untracked-files=no | wc -l)
if [ "$local_diffs" -ne 0 ]
then
die "you have local diffs: git commit or stash before releasing"
fi
fi
echo "Preparing release $VERSION"
@ -33,13 +60,19 @@ cd "/tmp/$VERSION" || die "can't cd /tmp/$VERSION"
git clone "$SOURCE_URL" || die "git error cloning $SOURCE_URL"
cd ScoDoc || die "no ScoDoc directory !"
git checkout "$SOURCE_BRANCH" || die "git ckecking out branch $SOURCE_BRANCH"
# --- Create empty .../var/ subdir
echo "Creating empty local directories..."
mkdir -p var/scodoc || die "can't create var subdirectory"
mkdir var/scodoc/archives var/scodoc/photos var/scodoc/tmp var/scodoc/config
mkdir var/scodoc/config/version var/scodoc/config/depts var/scodoc/config/logos
cd ..
# --- Archive
echo "Preparing archive..."
mv ScoDoc scodoc8
chown -R scodoc scodoc8
tar cfz "scodoc8-$VERSION.tgz" scodoc8
tar cfz "$RESULTFILE" scodoc8
echo
echo "Release: $(pwd)/$RESULTFILE"