summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/admin/installation-searx.rst5
-rw-r--r--docs/admin/installation-uwsgi.rst88
-rwxr-xr-xutils/lib.sh60
-rwxr-xr-xutils/searx.sh30
4 files changed, 96 insertions, 87 deletions
diff --git a/docs/admin/installation-searx.rst b/docs/admin/installation-searx.rst
index 11018bb3b..76449beb6 100644
--- a/docs/admin/installation-searx.rst
+++ b/docs/admin/installation-searx.rst
@@ -30,6 +30,9 @@ Create user
:start-after: START create user
:end-before: END create user
+install searx & dependencies
+============================
+
Start a interactive shell from new created user and clone searx:
.. include:: ../../build/docs/includes/searx.rst
@@ -55,7 +58,6 @@ from the login (*~/.profile*):
Open a second terminal for the configuration tasks and left the ``(searx)$``
terminal open for the tasks below.
-
Configuration
==============
@@ -67,7 +69,6 @@ a name of your choice -- *and/or* edit ``/etc/searx/settings.yml`` if necessary.
:start-after: START searx config
:end-before: END searx config
-
Check
=====
diff --git a/docs/admin/installation-uwsgi.rst b/docs/admin/installation-uwsgi.rst
index 0ee4800ad..f9161679f 100644
--- a/docs/admin/installation-uwsgi.rst
+++ b/docs/admin/installation-uwsgi.rst
@@ -4,79 +4,53 @@
uwsgi
=====
-Create the configuration file ``/etc/uwsgi/apps-available/searx.ini`` with this
-content:
+Create the configuration ini-file according to your distribution (see below) and
+restart the uwsgi application.
-.. code:: ini
+.. tabs::
- [uwsgi]
+ .. group-tab:: Ubuntu / debian
- # uWSGI core
- # ----------
- #
- # https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core
+ .. literalinclude:: ../../build/docs/includes/searx.rst
+ :start-after: START searx uwsgi-description ubuntu-20.04
+ :end-before: END searx uwsgi-description ubuntu-20.04
- # Who will run the code
- uid = searx
- gid = searx
- # chdir to specified directory before apps loading
- chdir = /usr/local/searx/searx-src/searx
+ .. group-tab:: Arch Linux
- # disable logging for privacy
- disable-logging = true
+ .. literalinclude:: ../../build/docs/includes/searx.rst
+ :start-after: START searx uwsgi-description arch
+ :end-before: END searx uwsgi-description arch
- # The right granted on the created socket
- chmod-socket = 666
- # Plugin to use and interpretor config
- single-interpreter = true
+ .. group-tab:: Fedora / RHEL
- # enable master process
- master = true
+ .. literalinclude:: ../../build/docs/includes/searx.rst
+ :start-after: START searx uwsgi-description fedora
+ :end-before: END searx uwsgi-description fedora
- # load apps in each worker instead of the master
- lazy-apps = true
- # load uWSGI plugins
- plugin = python3,http
+.. tabs::
- # By default the Python plugin does not initialize the GIL. This means your
- # app-generated threads will not run. If you need threads, remember to enable
- # them with enable-threads. Running uWSGI in multithreading mode (with the
- # threads options) will automatically enable threading support. This *strange*
- # default behaviour is for performance reasons.
- enable-threads = true
+ .. group-tab:: Ubuntu / debian
- # plugin: python
- # --------------
- #
- # https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python
+ .. literalinclude:: ../../build/docs/includes/searx.rst
+ :language: ini
+ :start-after: START searx uwsgi-appini ubuntu-20.04
+ :end-before: END searx uwsgi-appini ubuntu-20.04
- # load a WSGI module
- module = searx.webapp
+ .. group-tab:: Arch Linux
- # set PYTHONHOME/virtualenv
- virtualenv = /usr/local/searx/searx-pyenv
+ .. literalinclude:: ../../build/docs/includes/searx.rst
+ :language: ini
+ :start-after: START searx uwsgi-appini arch
+ :end-before: END searx uwsgi-appini arch
- # add directory (or glob) to pythonpath
- pythonpath = /usr/local/searx/searx-src
+ .. group-tab:: Fedora / RHEL
-
- # plugin http
- # -----------
- #
- # https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http
-
- # Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
- http = 127.0.0.1:8888
-
-Activate the uwsgi application and restart:
-
-.. code:: sh
-
- cd /etc/uwsgi/apps-enabled
- ln -s ../apps-available/searx.ini
- /etc/init.d/uwsgi restart
+ .. literalinclude:: ../../build/docs/includes/searx.rst
+ :language: ini
+ :start-after: START searx uwsgi-appini fedora
+ :end-before: END searx uwsgi-appini fedora
diff --git a/utils/lib.sh b/utils/lib.sh
index 6de66bcaf..f0c710311 100755
--- a/utils/lib.sh
+++ b/utils/lib.sh
@@ -708,35 +708,39 @@ uWSGI_GROUP=
# How distros manage uWSGI apps is very different. From uWSGI POV read:
# - https://uwsgi-docs.readthedocs.io/en/latest/Management.html
-case $DIST_ID-$DIST_VERS in
- ubuntu-*|debian-*)
- # init.d --> /usr/share/doc/uwsgi/README.Debian.gz
- # For uWSGI debian uses the LSB init process, this might be changed
- # one day, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833067
- uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-available"
- uWSGI_APPS_ENABLED="${uWSGI_SETUP}/apps-enabled"
- ;;
- arch-*)
- # systemd --> /usr/lib/systemd/system/uwsgi@.service
- # For uWSGI archlinux uses systemd template units, see
- # - http://0pointer.de/blog/projects/instances.html
- # - https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd
- uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-archlinux"
- uWSGI_APPS_ENABLED="${uWSGI_SETUP}"
- ;;
- fedora-*)
- # systemd --> /usr/lib/systemd/system/uwsgi.service
- # The unit file starts uWSGI in emperor mode (/etc/uwsgi.ini), see
- # - https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html
- uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-available"
- uWSGI_APPS_ENABLED="${uWSGI_SETUP}.d"
- uWSGI_USER="uwsgi"
- uWSGI_GROUP="uwsgi"
- ;;
- *)
- info_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
- ;;
+uWSGI_distro_setup() {
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ # init.d --> /usr/share/doc/uwsgi/README.Debian.gz
+ # For uWSGI debian uses the LSB init process, this might be changed
+ # one day, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833067
+ uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-available"
+ uWSGI_APPS_ENABLED="${uWSGI_SETUP}/apps-enabled"
+ ;;
+ arch-*)
+ # systemd --> /usr/lib/systemd/system/uwsgi@.service
+ # For uWSGI archlinux uses systemd template units, see
+ # - http://0pointer.de/blog/projects/instances.html
+ # - https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd
+ uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-archlinux"
+ uWSGI_APPS_ENABLED="${uWSGI_SETUP}"
+ ;;
+ fedora-*)
+ # systemd --> /usr/lib/systemd/system/uwsgi.service
+ # The unit file starts uWSGI in emperor mode (/etc/uwsgi.ini), see
+ # - https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html
+ uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-available"
+ uWSGI_APPS_ENABLED="${uWSGI_SETUP}.d"
+ uWSGI_USER="uwsgi"
+ uWSGI_GROUP="uwsgi"
+ ;;
+ *)
+ info_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
+ ;;
esac
+}
+
+uWSGI_distro_setup
uWSGI_restart() {
diff --git a/utils/searx.sh b/utils/searx.sh
index 38ccfdcab..447e9911e 100755
--- a/utils/searx.sh
+++ b/utils/searx.sh
@@ -645,8 +645,38 @@ rst-doc() {
eval "echo \"$(< ${REPO_ROOT}/docs/build-templates/searx.rst)\""
+ # I use ubuntu-20.04 here to demonstrate that versions are also suported,
+ # normaly debian-* and ubuntu-* are most the same.
+
+ for DIST_NAME in ubuntu-20.04 arch fedora; do
+ (
+ DIST_ID=${DIST_NAME%-*}
+ DIST_VERS=${DIST_NAME#*-}
+ [[ $DIST_VERS =~ $DIST_ID ]] && DIST_VERS=
+ uWSGI_distro_setup
+
+ echo -e "\n.. START searx uwsgi-description $DIST_NAME"
+ echo "location: ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP}"
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ echo "restart: sudo -H service uwsgi restart ${SEARX_UWSGI_APP%.*}" ;;
+ arch-*)
+ echo "restart: sudo -H systemctl restart uwsgi@${SEARX_UWSGI_APP%.*}" ;;
+ fedora-*)
+ echo "restart: sudo -H touch ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP}";;
+ esac
+ echo -e ".. END searx uwsgi-description $DIST_NAME"
+
+ echo -e "\n.. START searx uwsgi-appini $DIST_NAME"
+ eval "echo \"$(< ${TEMPLATES}/${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP})\""
+ echo -e "\n.. END searx uwsgi-appini $DIST_NAME"
+
+ )
+ done
+
}
# ----------------------------------------------------------------------------
main "$@"
# ----------------------------------------------------------------------------
+