From 7b40b86c96accf1aadf6a23eb01bcb39dcaba8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Tille?= Date: Wed, 27 Sep 2023 20:13:07 +0200 Subject: [PATCH] Improve db management and bug fix --- conf/seafile.conf | 2 +- manifest.toml | 5 ++++- scripts/backup | 2 +- scripts/expect_scripts/install.exp | 5 +++-- scripts/install | 5 ++--- scripts/remove | 1 - scripts/restore | 1 - scripts/upgrade | 16 +++++++++++----- 8 files changed, 22 insertions(+), 15 deletions(-) diff --git a/conf/seafile.conf b/conf/seafile.conf index ffd2ffc..68793a7 100644 --- a/conf/seafile.conf +++ b/conf/seafile.conf @@ -13,5 +13,5 @@ host = 127.0.0.1 port = 3306 user = __DB_USER__ password = __DB_PWD__ -db_name = seafiledb +db_name = __DB_NAME__ connection_charset = utf8 diff --git a/manifest.toml b/manifest.toml index d9615b6..6893ea2 100644 --- a/manifest.toml +++ b/manifest.toml @@ -111,8 +111,11 @@ ram.runtime = "500M" armhf.sha256 = "171fcf08b726d452e1c4cd22dadb9f8f5cf6848424ebc1e04cde5be34ef3d7f6" [resources.apt] - packages = ["expect", "ffmpeg", "pkgconf", + packages = ["expect", "ffmpeg", "pkgconf", "mariadb-server", "python3", "python3-setuptools", "python3-pip", "python3-requests", "python3-dev", "libmariadb-dev-compat", "libmariadb-dev", "memcached", "libmemcached-dev", "python3-scipy", "python3-matplotlib", "libjpeg62-turbo-dev", "zlib1g-dev", "libffi-dev"] + + [resources.database] + type = "mysql" diff --git a/scripts/backup b/scripts/backup index c550a03..372196b 100644 --- a/scripts/backup +++ b/scripts/backup @@ -36,8 +36,8 @@ ynh_backup --src_path /etc/fail2ban/filter.d/$app.conf # Backup mysql ynh_print_info --message="Backing up database" +ynh_mysql_dump_db --database $db_name > ${YNH_CWD}/seafiledb.dmp ynh_mysql_dump_db --database ccnetdb > ${YNH_CWD}/ccnetdb.dmp -ynh_mysql_dump_db --database seafiledb > ${YNH_CWD}/seafiledb.dmp ynh_mysql_dump_db --database seahubdb > ${YNH_CWD}/seahubdb.dmp ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/expect_scripts/install.exp b/scripts/expect_scripts/install.exp index b7b898e..b370f52 100644 --- a/scripts/expect_scripts/install.exp +++ b/scripts/expect_scripts/install.exp @@ -5,7 +5,8 @@ set seafile_dir [lindex $argv 0] set server_name [lindex $argv 1] set domain [lindex $argv 2] set fileserver_port [lindex $argv 3] -set db_pwd [lindex $argv 4] +set db_name [lindex $argv 4] +set db_pwd [lindex $argv 5] spawn $seafile_dir/setup-seafile-mysql.sh @@ -40,7 +41,7 @@ expect "Enter the existing database name for ccnet:" send "ccnetdb\r"; expect "Enter the existing database name for seafile:" -send "seafiledb\r"; +send "$db_name\r"; expect "Enter the existing database name for seahub:" send "seahubdb\r"; diff --git a/scripts/install b/scripts/install index 1d83e69..00acbf1 100644 --- a/scripts/install +++ b/scripts/install @@ -39,8 +39,7 @@ ynh_setup_source --dest_dir=$install_dir/seafile-server-$seafile_version ynh_script_progression --message="Configuring MySQL database..." db_user=seafile db_helper=ynh_"mysql"_setup_db -$db_helper --db_user $db_user --db_name ccnetdb -$db_helper --db_user $db_user --db_name seafiledb --db_pwd "$db_pwd" +$db_helper --db_user $db_user --db_name ccnetdb --db_pwd "$db_pwd" $db_helper --db_user $db_user --db_name seahubdb --db_pwd "$db_pwd" ynh_script_progression --message="Configuring application..." --weight=3 @@ -49,7 +48,7 @@ ynh_script_progression --message="Configuring application..." --weight=3 mv_expect_scripts chmod +x $install_dir/seafile-server-$seafile_version/setup-seafile-mysql.sh set_permission -sudo -u $YNH_APP_ID $expect_scripts_dir/install.exp "$install_dir/seafile-server-$seafile_version" "$server_name" "$domain" "$port_fileserver" "$db_pwd" +sudo -u $YNH_APP_ID $expect_scripts_dir/install.exp "$install_dir/seafile-server-$seafile_version" "$server_name" "$domain" "$port_fileserver" "$db_name" "$db_pwd" sleep 3 diff --git a/scripts/remove b/scripts/remove index e0962ae..aafe721 100644 --- a/scripts/remove +++ b/scripts/remove @@ -37,7 +37,6 @@ ynh_secure_remove --file=/opt/yunohost/$app ynh_script_progression --message="Removing databases..." db_helper=ynh_"mysql"_remove_db $db_helper --db_name ccnetdb --db_user seafile -$db_helper --db_name seafiledb --db_user seafile $db_helper --db_name seahubdb --db_user seafile # Remove systemd service diff --git a/scripts/restore b/scripts/restore index 6ac53fe..f5b4385 100644 --- a/scripts/restore +++ b/scripts/restore @@ -31,7 +31,6 @@ install_dependance ynh_script_progression --message="Restoring database..." --weight=3 db_helper=ynh_"mysql"_setup_db $db_helper --db_user $db_user --db_name ccnetdb --db_pwd "$db_pwd" -$db_helper --db_user $db_user --db_name seafiledb --db_pwd "$db_pwd" $db_helper --db_user $db_user --db_name seahubdb --db_pwd "$db_pwd" su -c "mysql -u ${app} -p$db_pwd ccnetdb < ${YNH_CWD}/ccnetdb.dmp" su -c "mysql -u ${app} -p$db_pwd seafiledb < ${YNH_CWD}/seafiledb.dmp" diff --git a/scripts/upgrade b/scripts/upgrade index d57d0f4..39a2f6b 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -39,6 +39,12 @@ pkill -f seaf-server || true pkill -f ccnet-server || true pkill -f seahub || true +# Migrate DB if needed +if mysqlshow | grep -q seafiledb; then + ynh_mysql_execute_as_root --sql 'DROP DATABASE `'$db_name'`' + ynh_mysql_execute_as_root --sql 'RENAME DATABASE `seafiledb TO "'$db_name'"' +fi + ynh_script_progression --message="Upgrading source files..." --weight=6 ynh_script_progression --message="Installing sources files..." --weight=7 @@ -71,11 +77,11 @@ case $installed_version in "7.0"* ) # Fix file comment pushd $install_dir/seafile-server-$seafile_version - sudo -u $seafile_user $install_dir/seafile-server-$seafile_version/seahub.sh python-env python3 seahub/manage.py migrate_file_comment + sudo -u $YNH_APP_ID $install_dir/seafile-server-$seafile_version/seahub.sh python-env python3 seahub/manage.py migrate_file_comment popd # Update seafile by script - sudo -u $seafile_user $expect_scripts_dir/upgrade_7.1.exp $install_dir/seafile-server-$seafile_version + sudo -u $YNH_APP_ID $expect_scripts_dir/upgrade_7.1.exp $install_dir/seafile-server-$seafile_version # Fix seafile data link. Look like that the upgrade script of seafile don't always work correctly if [ -e $install_dir/seafile-data ]; then @@ -85,14 +91,14 @@ case $installed_version in ln -s $seafile_data $install_dir/seafile-data ;& "7.1."* ) - sudo -u $seafile_user $expect_scripts_dir/upgrade_8.0.exp $install_dir/seafile-server-$seafile_version + sudo -u $YNH_APP_ID $expect_scripts_dir/upgrade_8.0.exp $install_dir/seafile-server-$seafile_version ;& "8.0."* ) - sudo -u $seafile_user $expect_scripts_dir/upgrade_9.0.exp $install_dir/seafile-server-$seafile_version + sudo -u $YNH_APP_ID $expect_scripts_dir/upgrade_9.0.exp $install_dir/seafile-server-$seafile_version ;& esac -sudo -u $seafile_user $expect_scripts_dir/minor-upgrade.exp $install_dir/seafile-server-$seafile_version +sudo -u $YNH_APP_ID $expect_scripts_dir/minor-upgrade.exp $install_dir/seafile-server-$seafile_version # Clean url in config in DB clean_url_in_db_config