Browse Source

docs: generic doocumentation for searx-uwsgi

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 5 years ago
parent
commit
3cb7daedb7
4 changed files with 96 additions and 87 deletions
  1. 3 2
      docs/admin/installation-searx.rst
  2. 31 57
      docs/admin/installation-uwsgi.rst
  3. 32 28
      utils/lib.sh
  4. 30 0
      utils/searx.sh

+ 3 - 2
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
 =====
 

+ 31 - 57
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
 
 

+ 32 - 28
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() {
 

+ 30 - 0
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 "$@"
 # ----------------------------------------------------------------------------
+