diff --git a/check_process b/check_process index 245e252..0f80e58 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 - name=Fix install and upgrade + ; commit=0bc4b329402773653e4a70adf6a397c5cefea947 + name=Fix dependances for stretch, from old_version_for_CI_1 branch manifest_arg=domain=DOMAIN&path=PATH&is_public=1& 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; +} 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__ 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/_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/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/install b/scripts/install index 530ed8e..32f2498 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 #================================================= @@ -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 @@ -138,6 +140,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..413aa02 100755 --- a/scripts/restore +++ b/scripts/restore @@ -2,25 +2,20 @@ #================================================= # GENERIC STARTING -#================================================= -# MANAGE FAILURE OF THE SCRIPT -#================================================= - -# Exit on command errors and treat unset variables as an error -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 +source ../settings/scripts/_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 +54,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-babel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python #================================================= # RECREATE OF THE DEDICATED USER @@ -86,8 +81,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..b71f771 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 #================================================= @@ -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-babel zlib1g-dev libffi-dev libssl-dev python-lxml uwsgi uwsgi-plugin-python + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -98,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 @@ -134,7 +142,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