on master help sign in
utils/serx.sh: make uWSGI installation available for all distros (WIP)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

commitf17b28743a084a5ee36b4d29e672202b09ffc84d authorMarkus Heiser <markus.heiser@darmarit.de> dateSun 23 Feb 2020, 21:05 (7 years ago) parent4d67164
2 files changed+101−27
utils/lib.sh+95−21 utils/searx.sh+6−6
utils/lib.sh+95−21
@@ -693,12 +693,46 @@ apache_dissable_site() {
693693
694694uWSGI_SETUP="${uWSGI_SETUP:=/etc/uwsgi}"
695695
696+case $DIST_ID-$DIST_VERS in
697+ ubuntu-*|debian-*)
698+ # init.d --> /usr/share/doc/uwsgi/README.Debian.gz
699+ uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-available"
700+ uWSGI_APPS_ENABLED="${uWSGI_SETUP}/apps-enabled"
701+ ;;
702+ arch-*)
703+ # systemd --> /usr/lib/systemd/system/uwsgi@.service
704+ uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}"
705+ uWSGI_APPS_ENABLED="${uWSGI_SETUP}"
706+ ;;
707+ *)
708+ info_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
709+ ;;
710+esac
711+
696712uWSGI_restart() {
697713
698− # usage: uWSGI_restart()
714+ # usage: uWSGI_restart() <myapp.ini>
715+
716+ local CONF="$1"
717+ if [[ -z $CONF ]]; then
718+ err_msg "uWSGI_restart: missing arguments"
719+ return 42
720+ fi
699721
700722 info_msg "restart uWSGI service"
701− systemctl restart uwsgi
723+
724+ case $DIST_ID-$DIST_VERS in
725+ ubuntu-*|debian-*)
726+ service uwsgi restart "${CONF%.*}"
727+ ;;
728+ arch-*)
729+ systemctl restart "uwsgi@${CONF%.*}"
730+ ;;
731+ *)
732+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
733+ return 42
734+ ;;
735+ esac
702736}
703737
704738uWSGI_app_available() {
@@ -708,7 +742,7 @@ uWSGI_app_available() {
708742 err_msg "uWSGI_app_available: missing arguments"
709743 return 42
710744 fi
711− [[ -f "${uWSGI_SETUP}/apps-available/${CONF}" ]]
745+ [[ -f "${uWSGI_APPS_AVAILABLE}/${CONF}" ]]
712746}
713747
714748uWSGI_install_app() {
@@ -725,13 +759,12 @@ uWSGI_install_app() {
725759 *) pos_args+=("$i");;
726760 esac
727761 done
728−
762+ mkdir -p "${uWSGI_APPS_AVAILABLE}"
729763 install_template "${template_opts[@]}" \
730− "${uWSGI_SETUP}/apps-available/${pos_args[1]}" \
764+ "${uWSGI_APPS_AVAILABLE}/${pos_args[1]}" \
731765 root root 644
732−
733766 uWSGI_enable_app "${pos_args[1]}"
734− uWSGI_restart
767+ uWSGI_restart "${pos_args[1]}"
735768 info_msg "installed uWSGI app: ${pos_args[1]}"
736769}
737770
@@ -742,18 +775,35 @@ uWSGI_remove_app() {
742775 local CONF="$1"
743776 info_msg "remove uWSGI app: ${CONF}"
744777 uWSGI_disable_app "${CONF}"
745− uWSGI_restart
746− rm -f "${uWSGI_SETUP}/apps-available/${CONF}"
778+ uWSGI_restart "${CONF}"
779+ rm -f "${uWSGI_APPS_AVAILABLE}/${CONF}"
747780}
748781
749782uWSGI_app_enabled() {
750783 # usage: uWSGI_app_enabled <myapp.ini>
784+
751785 local CONF="$1"
786+ local exit_val=0
752787 if [[ -z $CONF ]]; then
753788 err_msg "uWSGI_app_enabled: missing arguments"
754789 return 42
755790 fi
756− [[ -f "${uWSGI_SETUP}/apps-enabled/${CONF}" ]]
791+ case $DIST_ID-$DIST_VERS in
792+ ubuntu-*|debian-*)
793+ [[ -f "${uWSGI_APPS_ENABLED}/${CONF}" ]]
794+ exit_val=$?
795+ ;;
796+ arch-*)
797+ systemctl -q is-enabled "uwsgi@${CONF%.*}"
798+ exit_val=$?
799+ ;;
800+ *)
801+ # FIXME
802+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
803+ exit_val=1
804+ ;;
805+ esac
806+ return $exit_val
757807}
758808
759809# shellcheck disable=SC2164
@@ -762,16 +812,29 @@ uWSGI_enable_app() {
762812 # usage: uWSGI_enable_app <myapp.ini>
763813
764814 local CONF="$1"
815+
765816 if [[ -z $CONF ]]; then
766817 err_msg "uWSGI_enable_app: missing arguments"
767818 return 42
768819 fi
769− pushd "${uWSGI_SETUP}/apps-enabled" >/dev/null
770− rm -f "$CONF"
771− # shellcheck disable=SC2226
772− ln -s "../apps-available/${CONF}"
773− info_msg "enabled uWSGI app: ${CONF} (restart uWSGI required)"
774− popd >/dev/null
820+
821+ case $DIST_ID-$DIST_VERS in
822+ ubuntu-*|debian-*)
823+ mkdir -p "${uWSGI_APPS_ENABLED}"
824+ pushd "${uWSGI_APPS_ENABLED}" >/dev/null
825+ rm -f "$CONF"
826+ ln -s "${uWSGI_APPS_AVAILABLE}/${CONF}" .
827+ popd >/dev/null
828+ info_msg "enabled uWSGI app: ${CONF} (restart required)"
829+ ;;
830+ arch-*)
831+ systemctl enable "uwsgi@${CONF%.*}"
832+ ;;
833+ *)
834+ # FIXME
835+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
836+ ;;
837+ esac
775838}
776839
777840uWSGI_disable_app() {
@@ -783,11 +846,22 @@ uWSGI_disable_app() {
783846 err_msg "uWSGI_enable_app: missing arguments"
784847 return 42
785848 fi
786− rm -f "${uWSGI_SETUP}/apps-enabled/${CONF}"
787− # FIXME: restart uwsgi service won't stop wsgi forked processes of user searx.
788− # I had to kill them manually here ...
789− pkill -f "${uWSGI_SETUP}/apps-enabled/${CONF}" -9
790− info_msg "disabled uWSGI app: ${CONF} (restart uWSGI required)"
849+
850+ case $DIST_ID-$DIST_VERS in
851+ ubuntu-*|debian-*)
852+ service uwsgi stop "${CONF%.*}"
853+ rm -f "${uWSGI_APPS_ENABLED}/${CONF}"
854+ info_msg "disabled uWSGI app: ${CONF} (restart uWSGI required)"
855+ ;;
856+ arch-*)
857+ systemctl stop "uwsgi@${CONF%.*}"
858+ systemctl disable "uwsgi@${CONF%.*}"
859+ ;;
860+ *)
861+ # FIXME
862+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
863+ ;;
864+ esac
791865}
792866
793867# distro's package manager
utils/searx.sh+6−6
@@ -66,7 +66,7 @@ APACHE_SEARX_SITE="searx.conf"
6666
6767# shellcheck disable=SC2034
6868CONFIG_FILES=(
69− "${uWSGI_SETUP}/apps-available/${SEARX_UWSGI_APP}"
69+ "${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP}"
7070)
7171
7272# shellcheck disable=SC2034
@@ -246,7 +246,7 @@ git pull
246246${SEARX_SRC}/manage.sh update_packages
247247EOF
248248 install_settings
249− uWSGI_restart
249+ uWSGI_restart "$SEARX_UWSGI_APP"
250250}
251251
252252remove_all() {
@@ -458,14 +458,14 @@ activate_service() {
458458 rst_title "Activate $SEARX_INSTANCE_NAME (service)" section
459459 echo
460460 uWSGI_enable_app "$SEARX_UWSGI_APP"
461− uWSGI_restart
461+ uWSGI_restart "$SEARX_UWSGI_APP"
462462}
463463
464464deactivate_service() {
465465 rst_title "De-Activate $SEARX_INSTANCE_NAME (service)" section
466466 echo
467467 uWSGI_disable_app "$SEARX_UWSGI_APP"
468− uWSGI_restart
468+ uWSGI_restart "$SEARX_UWSGI_APP"
469469}
470470
471471enable_debug() {
@@ -475,7 +475,7 @@ enable_debug() {
475475cd ${SEARX_SRC}
476476sed -i -e "s/debug : False/debug : True/g" "$SEARX_SETTINGS_PATH"
477477EOF
478− uWSGI_restart
478+ uWSGI_restart "$SEARX_UWSGI_APP"
479479}
480480
481481disable_debug() {
@@ -484,7 +484,7 @@ disable_debug() {
484484cd ${SEARX_SRC}
485485sed -i -e "s/debug : True/debug : False/g" "$SEARX_SETTINGS_PATH"
486486EOF
487− uWSGI_restart
487+ uWSGI_restart "$SEARX_UWSGI_APP"
488488}
489489
490490inspect_service() {