#!/bin/bash # Migre une install ScoDoc 7 vers ScoDoc 8 # Le ScoDoc7 est supposé être dans /opt/scodoc7/Products/ScoDoc # Le nouveau est /opt/scodoc/ # # L'install ScoDoc7 de départ doit impérativement être à jour (upgrade.sh). # # 1- Utilisateur Unix: # scodoc7 tournait comme www-data # scodoc >= 8 tourne sous l'utilisateur unix scodoc # # 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: # archives, photos: /opt/scodoc/var/ => /opt/scodoc-data # # 4- TODO migrer de Apache à nginx, scripts service systemd # # 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" check_uid_root SCODOC7_HOME="/opt/scodoc7" SCODOC7_DIR="${SCODOC7_HOME}/Products/ScoDoc" # --- 2. Propriétaire des bases de données # Bases appartenant à www-data: migrate_database_ownership() { 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" } # --- 3. Fichiers locaux: /opt/scodoc/var => /opt/scodoc-data 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 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}" } # ------ MAIN check_create_scodoc_user echo 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 change_scodoc_file_ownership fi echo 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 migrate_database_ownership fi echo 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 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 fi # 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