From 60bd920a2a6dcf727a8728488fe1f7eebc4817fc Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Fri, 11 May 2018 22:59:18 +0200 Subject: [PATCH 01/10] Add ynh_check_starting --- scripts/_common.sh | 56 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/install | 9 +++++++- scripts/restore | 22 +++++++++++------- scripts/upgrade | 10 +++++++-- 4 files changed, 86 insertions(+), 11 deletions(-) create mode 100644 scripts/_common.sh diff --git a/scripts/_common.sh b/scripts/_common.sh new file mode 100644 index 0000000..7160957 --- /dev/null +++ b/scripts/_common.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +# Start or restart a service and follow its booting +# +# usage: ynh_check_starting "Line to match" [Log file] [Timeout] [Service name] +# +# | arg: Line to match - The line to find in the log to attest the service have finished to boot. +# | arg: Log file - The log file to watch +# | arg: Timeout - The maximum time to wait before ending the watching. Defaut 300 seconds. +# | arg: Service name +# /var/log/$app/$app.log will be used if no other log is defined. +ynh_check_starting () { + local line_to_match="$1" + local app_log="${2:-/var/log/$service_name/$service_name.log}" + local timeout=${3:-300} + local service_name="${4:-$app}" + + ynh_clean_check_starting () { + # Stop the execution of tail. + kill -s 15 $pid_tail 2>&1 + ynh_secure_remove "$templog" 2>&1 + } + + echo "Starting of $service_name" >&2 + systemctl stop $service_name + local templog="$(mktemp)" + # Following the starting of the app in its log + tail -F -n0 "$app_log" > "$templog" & + # Get the PID of the tail command + local pid_tail=$! + systemctl start $service_name + + local i=0 + for i in `seq 1 $timeout` + do + # Read the log until the sentence is found, that means the app finished to start. Or run until the timeout + if grep --quiet "$line_to_match" "$templog" + then + echo "The service $service_name has correctly started." >&2 + break + fi + echo -n "." >&2 + sleep 1 + done + if [ $i -eq $timeout ] + then + echo "The service $service_name didn't fully started before the timeout." >&2 + fi + + echo "" + ynh_clean_check_starting +} diff --git a/scripts/install b/scripts/install index 530ed8e..adc65ea 100644 --- a/scripts/install +++ b/scripts/install @@ -6,7 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -# source _common.sh +source _common.sh source /usr/share/yunohost/helpers #================================================= @@ -138,6 +138,13 @@ systemctl restart uwsgi # Ajoute le service au monitoring de Yunohost. yunohost service add uwsgi --log "/var/log/uwsgi/app/$app.log" +#================================================= +# CHECK SEARX STARTING +#================================================= + +# Wait for searx to be fully started +ynh_check_starting "spawned uWSGI master process" "/var/log/uwsgi/app/$app.log" "300" "uwsgi" + #================================================= # GENERIC FINALISATION #================================================= diff --git a/scripts/restore b/scripts/restore index ca97673..a460b93 100755 --- a/scripts/restore +++ b/scripts/restore @@ -13,12 +13,12 @@ set -eu # IMPORT GENERIC HELPERS #================================================= -# if [ ! -e _common.sh ]; then -# # Rapatrie le fichier de fonctions si il n'est pas dans le dossier courant -# cp ../settings/scripts/_common.sh ./_common.sh -# chmod a+rx _common.sh -# fi -# source _common.sh +if [ ! -e _common.sh ]; then + # Rapatrie le fichier de fonctions si il n'est pas dans le dossier courant + cp ../settings/scripts/_common.sh ./_common.sh + chmod a+rx _common.sh +fi +source _common.sh source /usr/share/yunohost/helpers #================================================= @@ -86,8 +86,14 @@ ln -s /etc/uwsgi/apps-available/$app.ini /etc/uwsgi/apps-enabled/$app.ini #================================================= # GENERIC FINALISATION #================================================= -# RELOAD NGINX AND UWSGI +# RELOAD NGINX #================================================= -systemctl restart uwsgi systemctl reload nginx + +#================================================= +# CHECK SEARX STARTING +#================================================= + +# Wait for searx to be fully started +ynh_check_starting "spawned uWSGI master process" "/var/log/uwsgi/app/$app.log" "300" "uwsgi" diff --git a/scripts/upgrade b/scripts/upgrade index d481d50..59ac2de 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -6,7 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -# source _common.sh +source _common.sh source /usr/share/yunohost/helpers #================================================= @@ -134,7 +134,13 @@ chown $app: --recursive "$final_path" cp ../conf/searx.ini /etc/uwsgi/apps-available/$app.ini ynh_replace_string "__APP__" "$app" /etc/uwsgi/apps-available/$app.ini ynh_replace_string "__FINALPATH__" "$final_path" /etc/uwsgi/apps-available/$app.ini -systemctl restart uwsgi + +#================================================= +# CHECK SEARX STARTING +#================================================= + +# Wait for searx to be fully started +ynh_check_starting "spawned uWSGI master process" "/var/log/uwsgi/app/$app.log" "300" "uwsgi" #================================================= # SETUP SSOWAT From be5dc7943b22a99a6a2e9187ab2a489f9ec2d353 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Mon, 28 May 2018 00:30:42 +0200 Subject: [PATCH 02/10] Minor fixes --- manifest.json | 2 +- scripts/backup | 14 +++++++------- scripts/restore | 16 ++++++++-------- scripts/upgrade | 6 ++++++ 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/manifest.json b/manifest.json index 9811956..62e6426 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ }, "version": "0.14.0~ynh1", "url": "https://asciimoo.github.io/searx/", - "license": "AGPLv3", + "license": "AGPL-3.0-or-later", "maintainer": { "name": "opi", "email": "opi@zeropi.net" diff --git a/scripts/backup b/scripts/backup index 96afb05..5d586f6 100755 --- a/scripts/backup +++ b/scripts/backup @@ -2,13 +2,6 @@ #================================================= # GENERIC STARTING -#================================================= -# MANAGE FAILURE OF THE SCRIPT -#================================================= - -# Exit on command errors and treat unset variables as an error -set -eu - #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -21,6 +14,13 @@ set -eu # source _common.sh source /usr/share/yunohost/helpers +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + #================================================= # LOAD SETTINGS #================================================= diff --git a/scripts/restore b/scripts/restore index ca97673..ef5f712 100755 --- a/scripts/restore +++ b/scripts/restore @@ -2,13 +2,6 @@ #================================================= # GENERIC STARTING -#================================================= -# MANAGE FAILURE OF THE SCRIPT -#================================================= - -# Exit on command errors and treat unset variables as an error -set -eu - #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -21,6 +14,13 @@ set -eu # source _common.sh source /usr/share/yunohost/helpers +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + #================================================= # LOAD SETTINGS #================================================= @@ -59,7 +59,7 @@ ynh_restore_file "$final_path" # INSTALL DEPENDENCIES #================================================= -ynh_install_app_dependencies libxslt-dev virtualenv python-babel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python +ynh_install_app_dependencies git build-essential libxslt-dev python-dev python-virtualenv virtualenv python-pybabel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python #================================================= # RECREATE OF THE DEDICATED USER diff --git a/scripts/upgrade b/scripts/upgrade index d481d50..70762eb 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -58,6 +58,12 @@ path_url=$(ynh_normalize_url_path $path_url) #================================================= # STANDARD UPGRADE STEPS +#================================================= +# UPGRADE DEPENDENCIES +#================================================= + +ynh_install_app_dependencies git build-essential libxslt-dev python-dev python-virtualenv virtualenv python-pybabel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= From af8c610ab453ac3306d5bef799a5e5e9b69f6ca1 Mon Sep 17 00:00:00 2001 From: triller Date: Sun, 24 Jun 2018 02:59:14 +0100 Subject: [PATCH 03/10] Fixes missing python-pybabel dependency --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index b068236..41d6a96 100644 --- a/scripts/install +++ b/scripts/install @@ -55,7 +55,7 @@ ynh_app_setting_set $app is_public $is_public # INSTALL DEPENDENCIES #================================================= -ynh_install_app_dependencies git build-essential libxslt-dev python-dev python-virtualenv virtualenv python-pybabel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python +ynh_install_app_dependencies git build-essential libxslt-dev python-dev python-virtualenv virtualenv python-babel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python #================================================= # NGINX CONFIGURATION From 398f2e814b3f64eead0f8e01f8d298511c4b5183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Tille?= Date: Thu, 28 Jun 2018 18:12:07 +0200 Subject: [PATCH 04/10] Fix uwsgi config --- conf/searx.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf/searx.ini b/conf/searx.ini index 8329d22..5b503d4 100644 --- a/conf/searx.ini +++ b/conf/searx.ini @@ -13,6 +13,8 @@ chmod-socket = 666 single-interpreter = true master = true plugin = python +lazy-apps = true +enable-threads = true # Application base folder base = __FINALPATH__ From c0dbddc1a092f066f821eed3584a8b757737e917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Tille?= Date: Thu, 28 Jun 2018 18:20:07 +0200 Subject: [PATCH 05/10] Use python-babel everythere --- scripts/restore | 2 +- scripts/upgrade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/restore b/scripts/restore index 9c6c739..9929ea4 100755 --- a/scripts/restore +++ b/scripts/restore @@ -59,7 +59,7 @@ ynh_restore_file "$final_path" # INSTALL DEPENDENCIES #================================================= -ynh_install_app_dependencies git build-essential libxslt-dev python-dev python-virtualenv virtualenv python-pybabel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python +ynh_install_app_dependencies git build-essential libxslt-dev python-dev python-virtualenv virtualenv python-babel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python #================================================= # RECREATE OF THE DEDICATED USER diff --git a/scripts/upgrade b/scripts/upgrade index 761b049..eaff8cc 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -62,7 +62,7 @@ path_url=$(ynh_normalize_url_path $path_url) # UPGRADE DEPENDENCIES #================================================= -ynh_install_app_dependencies git build-essential libxslt-dev python-dev python-virtualenv virtualenv python-pybabel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python +ynh_install_app_dependencies git build-essential libxslt-dev python-dev python-virtualenv virtualenv python-babel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE From 64a9c54ca3ed259a227ed082062cfbabb6baed11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Tille?= Date: Fri, 29 Jun 2018 08:12:42 +0200 Subject: [PATCH 06/10] Use an other commit for upgrade in CI --- check_process | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/check_process b/check_process index 245e252..f76a92e 100644 --- a/check_process +++ b/check_process @@ -11,7 +11,7 @@ setup_private=1 setup_public=1 upgrade=1 - upgrade=1 from_commit=f59da0dcbc1f35f98fbe32001e0a695171328001 + upgrade=1 from_commit=0bc4b329402773653e4a70adf6a397c5cefea947 backup_restore=1 multi_instance=0 incorrect_path=1 @@ -33,6 +33,6 @@ Email= Notification=none ;;; Upgrade options - ; commit=f59da0dcbc1f35f98fbe32001e0a695171328001 + ; commit=0bc4b329402773653e4a70adf6a397c5cefea947 name=Fix install and upgrade manifest_arg=domain=DOMAIN&path=PATH&is_public=1& From f96d7b0732eeb491b3c806581429b8a8f9eb7594 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josu=C3=A9=20Tille?= Date: Thu, 28 Jun 2018 19:34:06 +0200 Subject: [PATCH 07/10] Fix tile --- conf/nginx.conf | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index f963f89..f68e6b5 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -4,15 +4,12 @@ location __PATH__ { if ($scheme = http) { rewrite ^ https://$server_name$request_uri? permanent; } - try_files $uri @searx; -} -location @searx { uwsgi_param SCRIPT_NAME '__PATH_NO_ROOT__'; include uwsgi_params; uwsgi_modifier1 30; uwsgi_pass unix:///run/uwsgi/app/searx/socket; -} -# Include SSOWAT user panel. -include conf.d/yunohost_panel.conf.inc; + # Include SSOWAT user panel. + include conf.d/yunohost_panel.conf.inc; +} From 46ea345c0861fed806a581df1dd8ff53c3ae3054 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Fri, 29 Jun 2018 19:21:14 +0200 Subject: [PATCH 08/10] Split pip install commands --- scripts/install | 4 +++- scripts/upgrade | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/install b/scripts/install index adc65ea..32f2498 100644 --- a/scripts/install +++ b/scripts/install @@ -94,7 +94,9 @@ ynh_setup_source "$final_path" #================================================= virtualenv --system-site-packages "$final_path" -bash -c "source $final_path/bin/activate && pip install -U setuptools && pip install --requirement $final_path/requirements-ynh.txt" +set +u; source $final_path/bin/activate; set -u +pip install -U setuptools +pip install --requirement $final_path/requirements-ynh.txt #================================================= # CONFIGURE SEARX diff --git a/scripts/upgrade b/scripts/upgrade index eaff8cc..b71f771 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -104,7 +104,9 @@ ynh_system_user_create $app rm -r $final_path/lib/python2.7/site-packages/setuptools $final_path/lib/python2.7/site-packages/setuptools-* virtualenv --system-site-packages "$final_path" -bash -c "source $final_path/bin/activate && pip install -U setuptools && pip install --requirement $final_path/requirements-ynh.txt --upgrade" +set +u; source $final_path/bin/activate; set -u +pip install -U setuptools +pip install --requirement $final_path/requirements-ynh.txt --upgrade #================================================= # CONFIGURE SEARX From 79b3f60c5140b77fa1cb336e910ddb6e612506c5 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Fri, 29 Jun 2018 19:31:53 +0200 Subject: [PATCH 09/10] Clear commit name --- check_process | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/check_process b/check_process index f76a92e..0f80e58 100644 --- a/check_process +++ b/check_process @@ -34,5 +34,5 @@ Email= Notification=none ;;; Upgrade options ; commit=0bc4b329402773653e4a70adf6a397c5cefea947 - name=Fix install and upgrade + name=Fix dependances for stretch, from old_version_for_CI_1 branch manifest_arg=domain=DOMAIN&path=PATH&is_public=1& From 00172223ac4de384f841c6122bfde172b2fdede7 Mon Sep 17 00:00:00 2001 From: JimboJoe Date: Wed, 4 Jul 2018 20:53:50 +0200 Subject: [PATCH 10/10] Cleaner _common.sh sourcing in restore script --- scripts/restore | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/scripts/restore b/scripts/restore index 9929ea4..413aa02 100755 --- a/scripts/restore +++ b/scripts/restore @@ -6,12 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -if [ ! -e _common.sh ]; then - # Rapatrie le fichier de fonctions si il n'est pas dans le dossier courant - cp ../settings/scripts/_common.sh ./_common.sh - chmod a+rx _common.sh -fi -source _common.sh +source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers #=================================================