#!/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, installer memcached, scripts service systemd # source config.sh source 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