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-07-27 16:07:03 +02:00
# Migration base utilisateurs
echo
echo "Importer les utilisateurs de ScoDoc7 dans ScoDoc8 ?"
echo "(la base SCOUSERS de ScoDoc7 sera laissée inchangée)"
echo "(les utilisateurs ScoDoc8 existants seront laissés inchangés)"
read -r ans
if [ " $( norm_ans " $ans " ) " != 'N' ]
then
( cd " $SCODOC_DIR " && flask user-db-import-scodoc7)
fi