2021-07-23 08:35:20 +02:00
#!/bin/bash
# Migre une install ScoDoc 7 vers ScoDoc 8
2021-07-25 09:51:09 +02:00
# Le ScoDoc7 est supposé être dans /opt/scodoc7/Products/ScoDoc
# Le nouveau est /opt/scodoc/
2021-07-23 08:35:20 +02:00
#
# L'install ScoDoc7 de départ doit impérativement être à jour (upgrade.sh).
#
# 1- Utilisateur Unix:
# scodoc7 tournait comme www-data
2021-07-25 09:51:09 +02:00
# scodoc >= 8 tourne sous l'utilisateur unix scodoc
2021-07-23 08:35:20 +02:00
#
# 2- Utilisateur postgresql (bases de données)
# scodoc7 les bases appartenaient à "www-data"
# s'assure que les bases de département (trouvées dans config/dept/*.cfg)
# appartiennent à "scodoc"
# idem pour la base SCOUSERS (avant sa migration vers SCO8USERS)
#
# 3- Fichiers de données et config locale:
2021-07-25 09:51:09 +02:00
# archives, photos: /opt/scodoc/var/ => /opt/scodoc-data
2021-07-23 08:35:20 +02:00
#
2021-07-27 14:33:11 +02:00
# 4- TODO migrer de Apache à nginx, scripts service systemd
2021-07-23 08:35:20 +02:00
#
2021-07-27 16:07:03 +02:00
# Le répertoire de ce script:
SCRIPT_DIR = " $( cd " $( dirname " ${ BASH_SOURCE [0] } " ) " & > /dev/null && pwd ) "
source " $SCRIPT_DIR /config.sh "
source " $SCRIPT_DIR /utils.sh "
2021-07-23 08:35:20 +02:00
check_uid_root
2021-07-25 09:51:09 +02:00
SCODOC7_HOME = "/opt/scodoc7"
2021-07-23 08:35:20 +02:00
SCODOC7_DIR = " ${ SCODOC7_HOME } /Products/ScoDoc "
# --- 2. Propriétaire des bases de données
# Bases appartenant à www-data:
2021-07-23 09:32:20 +02:00
migrate_database_ownership( ) {
2021-07-23 08:35:20 +02:00
SCO7_BASES = $( su -c "psql -l -t | grep www-data" " $POSTGRES_SUPERUSER " | awk -F '|' '{print $1}' )
for base in $SCO7_BASES
do
su -c " psql -c 'REASSIGN OWNED BY \"www-data\" TO scodoc;' $base " " $POSTGRES_SUPERUSER "
done
su -c "psql -c 'REASSIGN OWNED BY \"www-data\" TO scodoc;'" " $POSTGRES_SUPERUSER "
}
2021-07-25 09:51:09 +02:00
# --- 3. Fichiers locaux: /opt/scodoc/var => /opt/scodoc-data
2021-07-23 08:35:20 +02:00
migrate_local_files( ) {
SCODOC_VAR_DIR_BACKUP = " $SCODOC_VAR_DIR " .bak
if [ -e " $SCODOC_VAR_DIR_BACKUP " ]
then
die " supprimer ou déplacer $SCODOC_VAR_DIR_BACKUP avant de continuer "
fi
if [ -e " $SCODOC_VAR_DIR " ]
then
echo " renomme $SCODOC_VAR_DIR en $SCODOC_VAR_DIR_BACKUP "
mv " $SCODOC_VAR_DIR " " $SCODOC_VAR_DIR_BACKUP "
fi
2021-07-25 09:51:09 +02:00
mv " ${ SCODOC7_HOME } " /var/scodoc/* " $SCODOC_VAR_DIR " || die "migrate_local_files failed"
# Templates locaux poursuites etudes
if [ -e " ${ SCODOC7_DIR } " /config/doc_poursuites_etudes/local ]
then
mv " ${ SCODOC7_DIR } " /config/doc_poursuites_etudes/local " $SCODOC_VAR_DIR " /config/doc_poursuites_etudes || die "migrate_local_files failed to migrate doc_poursuites_etudes/local"
fi
# S'assure que le propriétaire est "scodoc":
chown -R " ${ SCODOC_USER } : ${ SCODOC_GROUP } " " ${ SCODOC_VAR_DIR } " || die " change_scodoc_file_ownership failed on ${ SCODOC_VAR_DIR } "
2021-07-23 08:35:20 +02:00
}
# ------ MAIN
2021-07-23 09:32:20 +02:00
check_create_scodoc_user
2021-07-23 08:35:20 +02:00
2021-07-23 09:32:20 +02:00
echo
2021-07-23 08:35:20 +02:00
echo -n " Changer si nécessaire le propriétaire des fichiers de $SCODOC_DIR ? (y/n) [y] "
read -r ans
if [ " $( norm_ans " $ans " ) " != 'N' ]
then
2021-07-23 09:32:20 +02:00
change_scodoc_file_ownership
2021-07-23 08:35:20 +02:00
fi
2021-07-23 09:32:20 +02:00
echo
2021-07-23 08:35:20 +02:00
echo -n "Changer si nécessaire le propriétaire des bases de données SQL ? (y/n) [y] "
read -r ans
if [ " $( norm_ans " $ans " ) " != 'N' ]
then
2021-07-23 09:32:20 +02:00
migrate_database_ownership
2021-07-23 08:35:20 +02:00
fi
2021-07-23 09:32:20 +02:00
echo
2021-07-23 08:35:20 +02:00
echo "Les fichiers locaux de ScoDoc (configuration, photos, procès-verbaux...)"
echo " sont maintenant stockées dans $SCODOC_VAR_DIR "
echo -n "Copier les fichiers locaux de ScoDoc7 ? (y/n) [y] "
read -r ans
if [ " $( norm_ans " $ans " ) " != 'N' ]
then
migrate_local_files
2021-07-25 09:51:09 +02:00
else
echo -n "Vérifier et créer si besoin le répertoire local /opt/scodoc-data ?"
read -r ans
if [ " $( norm_ans " $ans " ) " != 'N' ]
then
set_scodoc_var_dir
fi
2021-07-23 08:35:20 +02:00
fi
2021-08-14 18:54:32 +02:00
# ----- Migration base utilisateurs
2021-07-27 16:07:03 +02:00
echo
2021-08-14 18:54:32 +02:00
echo "-------------------------------------------------------------"
echo "Importation des utilisateurs de ScoDoc7 dans ScoDoc8 "
2021-07-27 16:07:03 +02:00
echo "(la base SCOUSERS de ScoDoc7 sera laissée inchangée)"
echo "(les utilisateurs ScoDoc8 existants seront laissés inchangés)"
2021-08-14 18:54:32 +02:00
echo "-------------------------------------------------------------"
echo
su -c ( cd " $SCODOC_DIR " && flask import-scodoc7-users)
# ----- Migration bases départements
# les départements ScoDoc7 ont été déplacés dans /opt/scodoc-data/config/dept
for f in " $SCODOC_VAR_DIR " /config/depts/*.cfg
do
dept = $( basename " ${ f %.* } " )
# Liste des bases de données de département:
psql -l | awk '{print $1;}' | grep ^SCO | grep -v SCOUSERS | grep -v SCO8USERS
done