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 ## 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+**. 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. 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 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) **Work in Progress (WIP)**: développement en cours, certaines pages fonctionnent, d'autres pas:
merci de signaler les erreurs.
Développement en cours, certaines pages fonctionnent, d'autres pas.
### État actuel (23 juillet 21) ### État actuel (23 juillet 21)
@ -37,49 +36,52 @@ Développement en cours, certaines pages fonctionnent, d'autres pas.
- tests, formulaires utilisateurs, logging. - 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 - Charger la dernière release depuis https://scodoc.org/git/viennet/ScoDoc/releases
apt-get install python3-venv
apt-get install libpq-dev
apt-get install libcrack2-dev
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 cd /opt/scodoc8/tools
pip install flask ./install_debian10.sh
pip install wheel
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 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 utilisateurs nommée `SCO8USERS` (au lieu de `SCOUSERS`), qui est manipulée
via `sqlalchemy`. via `sqlalchemy`.
### Configuration de la base utilisateurs ### 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`. 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 ### Initialisation de la base utilisateur par Flask
En tant qu'utilisateur `scodoc`: En tant qu'utilisateur `scodoc`:
su scodoc # si besoin
flask db init flask db init
flask db migrate -m "users and roles tables" flask db migrate -m "users and roles tables"
flask db upgrade 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 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) ## Lancement serveur (développement, sur VM Linux)

View File

@ -26,6 +26,9 @@ then
exit 1 exit 1
fi fi
# ------------ Unix user
check_create_scodoc_user
# ------------ Permissions & directories # ------------ Permissions & directories
change_scodoc_file_ownership change_scodoc_file_ownership
@ -39,6 +42,11 @@ apt-get -y install postgresql
apt-get -y install curl apt-get -y install curl
apt-get -y install graphviz 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) # ------------ INSTALL DES PAQUETS PYTHON (3.7)
# ScoDoc8 uses pip in our env # ScoDoc8 uses pip in our env
source venv/bin/activate source venv/bin/activate

View File

@ -6,24 +6,51 @@ source config.sh
source utils.sh source utils.sh
usage() { 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 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 then
usage usage
fi fi
VERSION=$1
SOURCE_URL="https://scodoc.org/git/viennet/ScoDoc.git" SOURCE_URL="https://scodoc.org/git/viennet/ScoDoc.git"
SOURCE_BRANCH="ScoDoc8" SOURCE_BRANCH="ScoDoc8"
RESULTFILE="scodoc-$VERSION.tgz"
if [ "$FORCE_RELEASE" -eq 0 ]
then
# Check local diffs, ignoring file modes (changed on VMs) # Check local diffs, ignoring file modes (changed on VMs)
local_diffs=$(git -c core.fileMode=false status --porcelain --untracked-files=no | wc -l) local_diffs=$(git -c core.fileMode=false status --porcelain --untracked-files=no | wc -l)
if [ "$local_diffs" -ne 0 ] if [ "$local_diffs" -ne 0 ]
then then
die "you have local diffs: git commit or stash before releasing" die "you have local diffs: git commit or stash before releasing"
fi fi
fi
echo "Preparing release $VERSION" 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" git clone "$SOURCE_URL" || die "git error cloning $SOURCE_URL"
cd ScoDoc || die "no ScoDoc directory !" cd ScoDoc || die "no ScoDoc directory !"
git checkout "$SOURCE_BRANCH" || die "git ckecking out branch $SOURCE_BRANCH" git checkout "$SOURCE_BRANCH" || die "git ckecking out branch $SOURCE_BRANCH"
# --- Create empty .../var/ subdir # --- Create empty .../var/ subdir
echo "Creating empty local directories..."
mkdir -p var/scodoc || die "can't create var subdirectory" 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/archives var/scodoc/photos var/scodoc/tmp var/scodoc/config
mkdir var/scodoc/config/version var/scodoc/config/depts var/scodoc/config/logos mkdir var/scodoc/config/version var/scodoc/config/depts var/scodoc/config/logos
cd .. cd ..
# --- Archive
echo "Preparing archive..."
mv ScoDoc scodoc8 mv ScoDoc scodoc8
chown -R scodoc scodoc8 chown -R scodoc scodoc8
tar cfz "scodoc8-$VERSION.tgz" scodoc8 tar cfz "$RESULTFILE" scodoc8
echo
echo "Release: $(pwd)/$RESULTFILE"