diff --git a/README.md b/README.md index c1a7110a..5849fbe9 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ In addition to taking over the functionality of Instagram, the functioning of Pi It is also possible to import your data from Instagram. -**Shipped version:** 0.11.1~ynh1 +**Shipped version:** 0.11.2~ynh1 diff --git a/README_fr.md b/README_fr.md index a278d26a..9c315afc 100644 --- a/README_fr.md +++ b/README_fr.md @@ -21,7 +21,7 @@ En plus de reprendre les fonctionnalités d'Instagram, le fonctionnement de Pixe Il est également possible d'importer ses données depuis Instagram. -**Version incluse :** 0.11.1~ynh1 +**Version incluse :** 0.11.2~ynh1 diff --git a/check_process b/check_process index 10b17c2e..f2a27629 100644 --- a/check_process +++ b/check_process @@ -32,6 +32,8 @@ upgrade=1 from_commit=c7181d1c7cb6cba53bb65e622c78b0309a53b76a # 0.11.0~ynh2 upgrade=1 from_commit=d85b0b112afd19313dbf4cfba954e255789dfb88 + # 0.11.1~ynh2 + upgrade=1 from_commit=f8ecb9a95fe6430fb9d93ca674e4f0d475ecd332 backup_restore=1 multi_instance=1 port_already_use=0 @@ -58,3 +60,5 @@ Notification=all name=0.11.0~ynh1 ; commit=d85b0b112afd19313dbf4cfba954e255789dfb88 name=0.11.0~ynh2 + ; commit=f8ecb9a95fe6430fb9d93ca674e4f0d475ecd332 + name=0.11.1~ynh2 diff --git a/conf/app.src b/conf/app.src index 282dda7c..e4a4d124 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/pixelfed/pixelfed/archive/v0.11.1.tar.gz -SOURCE_SUM=132dfceac3c0ea27dd54198d145d2d84f1714b4aa333c8b6f5141d259a77e9cb +SOURCE_URL=https://github.com/pixelfed/pixelfed/archive/v0.11.2.tar.gz +SOURCE_SUM=04eca99fa8a725ae97cf01ad8c8b26b28f02a2b579dcff9320a172433afe0de2 OURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/cron b/conf/cron index 659c3411..8100d341 100644 --- a/conf/cron +++ b/conf/cron @@ -1 +1 @@ -* * * * * /usr/bin/php__PHPVERSION__ __FINALPATH__/artisan schedule:run >> /dev/null 2>&1 +* * * * * __APP__ /usr/bin/php__PHPVERSION__ __FINALPATH__/artisan schedule:run >> /dev/null 2>&1 diff --git a/manifest.json b/manifest.json index b6154224..c81ffa95 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "ActivityPub Federated Image Sharing", "fr": "Logiciel de partage d'image fédéré via ActivityPub" }, - "version": "0.11.1~ynh1", + "version": "0.11.2~ynh1", "url": "https://pixelfed.org/", "upstream": { "license": "AGPL-3.0-or-later", diff --git a/scripts/_common.sh b/scripts/_common.sh index 9fffb6f1..afeb0543 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,7 +4,7 @@ # COMMON VARIABLES #================================================= -YNH_PHP_VERSION="7.3" +YNH_PHP_VERSION="7.4" YNH_COMPOSER_VERSION="2.1.5" @@ -19,43 +19,5 @@ pkg_dependencies="postgresql libgd3 jpegoptim optipng pngquant ffmpeg imagemagic #================================================= #================================================= -# REDIS HELPERS +# FUTURE OFFICIAL HELPERS #================================================= - -# get the first available redis database -# -# usage: ynh_redis_get_free_db -# | returns: the database number to use -ynh_redis_get_free_db() { - local result max db - result="$(redis-cli INFO keyspace)" - - # get the num - max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+") - - db=0 - # default Debian setting is 15 databases - for i in $(seq 0 "$max") - do - if ! echo "$result" | grep -q "db$i" - then - db=$i - break 1 - fi - db=-1 - done - - test "$db" -eq -1 && ynh_die --message="No available Redis databases..." - - echo "$db" -} - -# Create a master password and set up global settings -# Please always call this script in install and restore scripts -# -# usage: ynh_redis_remove_db database -# | arg: database - the database to erase -ynh_redis_remove_db() { - local db=$1 - redis-cli -n "$db" flushall -} diff --git a/scripts/config b/scripts/config index 3440bd2f..c808244e 100644 --- a/scripts/config +++ b/scripts/config @@ -89,7 +89,7 @@ ynh_app_config_validate() { ynh_app_config_apply() { _ynh_app_config_apply - ynh_add_fpm_config --phpversion=$phpversion --usage=$fpm_usage --footprint=$fpm_footprint + ynh_add_fpm_config --phpversion=$phpversion --usage=$fpm_usage --footprint=$fpm_footprint --package="$extra_php_dependencies" } ynh_app_config_run $1 diff --git a/scripts/install b/scripts/install index 1f1a056f..229421c7 100644 --- a/scripts/install +++ b/scripts/install @@ -113,7 +113,7 @@ ynh_add_nginx_config ynh_script_progression --message="Configuring PHP-FPM..." # Create a dedicated PHP-FPM config -ynh_add_fpm_config --usage=low --footprint=low +ynh_add_fpm_config --usage=low --footprint=low --package="$extra_php_dependencies" phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= diff --git a/scripts/remove b/scripts/remove index aa5856aa..cd28c5f9 100644 --- a/scripts/remove +++ b/scripts/remove @@ -42,6 +42,14 @@ ynh_script_progression --message="Stopping and removing the systemd service..." # Remove the dedicated supervisor config ynh_remove_systemd_config +#================================================= +# REMOVE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Removing logrotate configuration..." + +# Remove the app-specific logrotate config +ynh_remove_logrotate + #================================================= # REMOVE THE POSTGRESQL DATABASE #================================================= @@ -89,29 +97,16 @@ ynh_script_progression --message="Removing dependencies..." # Remove metapackage and its dependencies ynh_remove_app_dependencies -#================================================= -# REMOVE LOGROTATE CONFIGURATION -#================================================= -ynh_script_progression --message="Removing logrotate configuration..." - -# Remove the app-specific logrotate config -ynh_remove_logrotate - #================================================= # SPECIFIC REMOVE #================================================= -# REMOVE THE CRON FILE +# REMOVE VARIOUS FILES #================================================= -ynh_script_progression --message="Removing the cron file..." +ynh_script_progression --message="Removing various files..." # Remove a cron file ynh_secure_remove --file="/etc/cron.d/$app" -#================================================= -# REMOVE THE LOG FILE -#================================================= -ynh_script_progression --message="Removing the log file..." - # Remove the log files ynh_secure_remove --file="/var/log/$app" diff --git a/scripts/restore b/scripts/restore index b6d0b405..2961a11d 100644 --- a/scripts/restore +++ b/scripts/restore @@ -42,7 +42,8 @@ fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage) #================================================= ynh_script_progression --message="Validating restoration parameters..." -test ! -d $final_path || ynh_die --message="There is already a directory: $final_path " +test ! -d $final_path \ + || ynh_die --message="There is already a directory: $final_path " #================================================= # STANDARD RESTORATION STEPS @@ -72,34 +73,8 @@ chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -#================================================= -# RESTORE THE PHP-FPM CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring PHP-FPM configuration..." - -ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" - -# Recreate a dedicated php-fpm config -ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint --phpversion=$phpversion - #================================================= # SPECIFIC RESTORATION -#================================================= -# RESTORE THE CRON FILE -#================================================= -ynh_script_progression --message="Restoring the cron file..." - -ynh_restore_file --origin_path="/etc/cron.d/$app" - -#================================================= -# CREATE LOG FILE -#================================================= -ynh_script_progression --message="Creating log file..." - -mkdir -p "/var/log/$app/" -touch "/var/log/$app/${app}-horizon.log" -chown -R $app: "/var/log/$app/" - #================================================= # REINSTALL DEPENDENCIES #================================================= @@ -108,6 +83,17 @@ ynh_script_progression --message="Reinstalling dependencies..." # Define and install dependencies ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies +#================================================= +# RESTORE THE PHP-FPM CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring PHP-FPM configuration..." + +ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" + +# Recreate a dedicated php-fpm config +ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint --phpversion=$phpversion --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) + #================================================= # RESTORE THE POSTGRESQL DATABASE #================================================= @@ -118,6 +104,17 @@ ynh_psql_test_if_first_run ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name +#================================================= +# RESTORE VARIOUS FILES +#================================================= +ynh_script_progression --message="Restoring various files..." + +ynh_restore_file --origin_path="/etc/cron.d/$app" + +mkdir -p "/var/log/$app/" +touch "/var/log/$app/${app}-horizon.log" +chown -R $app: "/var/log/$app/" + #================================================= # RESTORE SUPERVISOR CONFIGURATION #================================================= @@ -126,6 +123,13 @@ ynh_script_progression --message="Restoring the systemd configuration..." ynh_restore_file --origin_path="/etc/systemd/system/$app.service" systemctl enable $app.service --quiet +#================================================= +# RESTORE THE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the logrotate configuration..." + +ynh_restore_file --origin_path="/etc/logrotate.d/$app" + #================================================= # INTEGRATE SERVICE IN YUNOHOST #================================================= @@ -146,8 +150,6 @@ ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" ynh_script_progression --message="Restoring the logrotate configuration..." ynh_restore_file --origin_path="/etc/logrotate.d/$app" -chown root: "/etc/cron.d/$app" -chmod 644 "/etc/cron.d/$app" #================================================= # GENERIC FINALIZATION diff --git a/scripts/upgrade b/scripts/upgrade index 9af8a32d..6eeec132 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -23,7 +23,6 @@ db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) app_key=$(ynh_app_setting_get --app=$app --key=app_key) -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) redis_db=$(ynh_app_setting_get --app=$app --key=redis_db) fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) @@ -51,9 +50,18 @@ ynh_clean_setup () { ynh_abort_if_errors #================================================= -# ENSURE UPGRADE COMPATIBILITY +# STANDARD UPGRADE STEPS #================================================= -ynh_script_progression --message="Ensuring upgrade compatibility..." +# STOP SUPERVISOR SERVICE +#================================================= +ynh_script_progression --message="Stopping a supervisor service..." + +ynh_supervisor_action --service_name="${app}-horizon" --action="stop" --log_path="systemd" --line_match="stopped: ${app}-horizon" + +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= +ynh_script_progression --message="Ensuring downward compatibility..." # If fpm_footprint doesn't exist, create it if [ -z "$fpm_footprint" ]; then @@ -102,7 +110,7 @@ ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app ynh_script_progression --message="Making sure dedicated system user exists..." # Create a dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir="$final_path" +ynh_system_user_create --username=$app --home_dir=$final_path #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -113,7 +121,7 @@ then ynh_script_progression --message="Upgrading source files..." # Download, check integrity, uncompress and patch the source from app.src - ynh_setup_source --dest_dir="$final_path" + ynh_setup_source --dest_dir="$final_path" --keep="$final_path/.env" fi chmod 750 "$final_path" @@ -141,7 +149,8 @@ ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies ynh_script_progression --message="Upgrading PHP-FPM configuration..." # Create a dedicated PHP-FPM config -ynh_add_fpm_config --phpversion=$phpversion --usage=$fpm_usage --footprint=$fpm_footprint +ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC UPGRADE @@ -150,17 +159,17 @@ ynh_add_fpm_config --phpversion=$phpversion --usage=$fpm_usage --footprint=$fpm_ #================================================= ynh_script_progression --message="Updating composer dependencies..." -ynh_exec_warn_less ynh_composer_exec --phpversion="$phpversion" --workdir="$final_path" --commands="update" +ynh_exec_warn_less ynh_composer_exec --workdir="$final_path" --commands="update" #================================================= # UPDATE A CONFIG FILE #================================================= -ynh_script_progression --message="Updating a config file..." +# ynh_script_progression --message="Updating a config file..." -ynh_add_config --template="../conf/.env" --destination="$final_path/.env" +# ynh_add_config --template="../conf/.env" --destination="$final_path/.env" -chmod 400 "$final_path/.env" -chown $app:$app "$final_path/.env" +# chmod 400 "$final_path/.env" +# chown $app:$app "$final_path/.env" #================================================= # DEPLOYMENT diff --git a/scripts/ynh_redis b/scripts/ynh_redis new file mode 100644 index 00000000..af5a55c2 --- /dev/null +++ b/scripts/ynh_redis @@ -0,0 +1,39 @@ +#!/bin/bash + +# get the first available redis database +# +# usage: ynh_redis_get_free_db +# | returns: the database number to use +ynh_redis_get_free_db() { + local result max db + result="$(redis-cli INFO keyspace)" + + # get the num + max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+") + + db=0 + # default Debian setting is 15 databases + for i in $(seq 0 "$max") + do + if ! echo "$result" | grep -q "db$i" + then + db=$i + break 1 + fi + db=-1 + done + + test "$db" -eq -1 && ynh_die --message="No available Redis databases..." + + echo "$db" +} + +# Create a master password and set up global settings +# Please always call this script in install and restore scripts +# +# usage: ynh_redis_remove_db database +# | arg: database - the database to erase +ynh_redis_remove_db() { + local db=$1 + redis-cli -n "$db" flushall +}