From bafe6a64046e272cf8b89537cc468acc2a579da2 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Wed, 8 Dec 2021 19:39:51 +0100 Subject: [PATCH 1/5] Add config panel --- config_panel.toml | 25 +++++++++++++ scripts/config | 95 +++++++++++++++++++++++++++++++++++++++++++++++ scripts/install | 2 +- scripts/restore | 6 +++ scripts/upgrade | 22 ++++++++++- 5 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 config_panel.toml create mode 100644 scripts/config diff --git a/config_panel.toml b/config_panel.toml new file mode 100644 index 0000000..6edbf5f --- /dev/null +++ b/config_panel.toml @@ -0,0 +1,25 @@ +version = "1.0" + +[main] +name = "Omega-s configuration" + + [main.php_fpm_config] + name = "PHP-FPM configuration" + + [main.php_fpm_config.fpm_footprint] + ask = "Memory footprint of the service?" + choices = ["low", "medium", "high", "specific"] + default = "low" + help = "low <= 20Mb per pool. medium between 20Mb and 40Mb per pool. high > 40Mb per pool.
Use specific to set a value with the following option." + + [main.php_fpm_config.free_footprint] + ask = "Memory footprint of the service?" + type = "number" + default = "0" + help = "Free field to specify exactly the footprint in Mb if you don't want to use one of the three previous values." + + [main.php_fpm_config.fpm_usage] + ask = "Expected usage of the service?" + choices = ["low", "medium", "high"] + default = "low" + help = "low: Personal usage, behind the SSO. No RAM footprint when not used, but the impact on the processor can be high if many users are using the service.
medium: Low usage, few people or/and publicly accessible. Low RAM footprint, medium processor footprint when used.
high: High usage, frequently visited website. High RAM footprint, but lower on processor usage and quickly responding." diff --git a/scripts/config b/scripts/config new file mode 100644 index 0000000..3440bd2 --- /dev/null +++ b/scripts/config @@ -0,0 +1,95 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +ynh_abort_if_errors + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +current_fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) + +#================================================= +# SPECIFIC GETTERS FOR TOML SHORT KEY +#================================================= + +get__fpm_footprint() { + # Free footprint value for php-fpm + # Check if current_fpm_footprint is an integer + if [ "$current_fpm_footprint" -eq "$current_fpm_footprint" ] 2> /dev/null + then + echo "specific" + else + echo "$current_fpm_footprint" + fi +} + +get__free_footprint() { + # Free footprint value for php-fpm + # Check if current_fpm_footprint is an integer + if [ "$current_fpm_footprint" -eq "$current_fpm_footprint" ] 2> /dev/null + then + # If current_fpm_footprint is an integer, that's a numeric value for the footprint + echo "$current_fpm_footprint" + else + echo "0" + fi +} + +#================================================= +# SPECIFIC SETTERS FOR TOML SHORT KEYS +#================================================= + +set__fpm_footprint() { + if [ "$fpm_footprint" != "specific" ] + then + ynh_app_setting_set --app=$app --key=fpm_footprint --value="$fpm_footprint" + fi +} + +set__free_footprint() { + if [ "$fpm_footprint" = "specific" ] + then + ynh_app_setting_set --app=$app --key=fpm_footprint --value="$free_footprint" + fi +} + +#================================================= +# GENERIC FINALIZATION +#================================================= + +ynh_app_config_validate() { + _ynh_app_config_validate + + if [ "${changed[fpm_usage]}" == "true" ] || [ "${changed[fpm_footprint]}" == "true" ] || [ "${changed[free_footprint]}" == "true" ]; then + # If fpm_footprint is set to 'specific', use $free_footprint value. + if [ "$fpm_footprint" = "specific" ] + then + fpm_footprint=$free_footprint + fi + + if [ "$fpm_footprint" == "0" ] + then + ynh_print_err --message="When selecting 'specific', you have to set a footprint value into the field below." + + exit 0 + fi + fi +} + +ynh_app_config_apply() { + _ynh_app_config_apply + + ynh_add_fpm_config --phpversion=$phpversion --usage=$fpm_usage --footprint=$fpm_footprint +} + +ynh_app_config_run $1 diff --git a/scripts/install b/scripts/install index 562c50a..bff3c0c 100755 --- a/scripts/install +++ b/scripts/install @@ -108,7 +108,7 @@ ynh_add_nginx_config ynh_script_progression --message="Configuring PHP-FPM..." --weight=5 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --usage=low --footprint=low phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= diff --git a/scripts/restore b/scripts/restore index f325969..378cc93 100755 --- a/scripts/restore +++ b/scripts/restore @@ -31,6 +31,9 @@ db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) +fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage) + #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================= @@ -73,6 +76,9 @@ ynh_script_progression --message="Restoring the PHP-FPM configuration..." --weig 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 #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 3f3375c..ac21b00 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -23,6 +23,9 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) language=$(ynh_app_setting_get --app=$app --key=language) db_name=$(ynh_app_setting_get --app=$app --key=db_name) +fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) +fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage) + #================================================= # CHECK VERSION #================================================= @@ -43,6 +46,23 @@ ynh_clean_setup () { # Exit if an error occurs during the execution of the script ynh_abort_if_errors +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= +ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 + +# If fpm_footprint doesn't exist, create it +if [ -z "$fpm_footprint" ]; then + fpm_footprint=low + ynh_app_setting_set --app=$app --key=fpm_footprint --value=$fpm_footprint +fi + +# If fpm_usage doesn't exist, create it +if [ -z "$fpm_usage" ]; then + fpm_usage=low + ynh_app_setting_set --app=$app --key=fpm_usage --value=$fpm_usage +fi + #================================================= # CREATE DEDICATED USER #================================================= @@ -98,7 +118,7 @@ ynh_install_app_dependencies $pkg_dependencies ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=1 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --phpversion=$phpversion --usage=$fpm_usage --footprint=$fpm_footprint #================================================= # RELOAD NGINX From befe3eeb2c7a266764b1e09a731a129fb1c55bfa Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Wed, 8 Dec 2021 21:42:59 +0100 Subject: [PATCH 2/5] Update php-fpm.conf --- conf/php-fpm.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 676c75d..2a4ec3d 100755 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -426,5 +426,5 @@ php_admin_value[post_max_size] = 100M ; Other common parameters ; php_admin_value[max_execution_time] = 600 ; php_admin_value[max_input_time] = 300 -; php_admin_value[memory_limit] = 256M +php_admin_value[memory_limit] = 256M ; php_admin_flag[short_open_tag] = On From 1045edf4a4131cdf6d9d86a30b3e398183e9ad5a Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 13 Dec 2021 10:55:18 +0100 Subject: [PATCH 3/5] Update upgrade --- scripts/upgrade | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/upgrade b/scripts/upgrade index ac21b00..ad9e17f 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -22,6 +22,7 @@ admin=$(ynh_app_setting_get --app=$app --key=admin) final_path=$(ynh_app_setting_get --app=$app --key=final_path) language=$(ynh_app_setting_get --app=$app --key=language) db_name=$(ynh_app_setting_get --app=$app --key=db_name) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) fpm_footprint=$(ynh_app_setting_get --app=$app --key=fpm_footprint) fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage) From 3a0f472c2c25fdd2ed7610e4bd5afdd3881a6508 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 13 Dec 2021 12:20:19 +0100 Subject: [PATCH 4/5] Update manifest.json --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index e7414ca..1347f2a 100755 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Web publication system for universities, galleries, libraries, archives, and museums", "fr": "Système de publication Web pour les universités, les galeries, les bibliothèques, les archives et les musées" }, - "version": "3.1.1~ynh2", + "version": "3.1.1~ynh3", "url": "https://omeka.org/", "upstream": { "license": "AGPL-3.0-only", From 48485dd3e43ddb150322806dff5854904a417f95 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Mon, 13 Dec 2021 11:20:28 +0000 Subject: [PATCH 5/5] Auto-update README --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 919e809..6380d70 100755 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Omeka S is a web publication system for universities, galleries, libraries, arch - Connect to the semantic Web - Share with DPLA -**Shipped version:** 3.1.1~ynh2 +**Shipped version:** 3.1.1~ynh3 **Demo:** https://omeka.org/s/download/#sandbox diff --git a/README_fr.md b/README_fr.md index af31f15..0b2b27c 100755 --- a/README_fr.md +++ b/README_fr.md @@ -18,7 +18,7 @@ Omeka S is a web publication system for universities, galleries, libraries, arch - Connect to the semantic Web - Share with DPLA -**Version incluse :** 3.1.1~ynh2 +**Version incluse :** 3.1.1~ynh3 **Démo :** https://omeka.org/s/download/#sandbox