diff --git a/docs/admin/installation-searx.rst b/docs/admin/installation-searx.rst index 11018bb3..76449beb 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 0ee4800a..f9161679 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 - - # Who will run the code - uid = searx - gid = searx - - # chdir to specified directory before apps loading - chdir = /usr/local/searx/searx-src/searx - - # disable logging for privacy - disable-logging = true - - # The right granted on the created socket - chmod-socket = 666 - - # Plugin to use and interpretor config - single-interpreter = true - - # enable master process - master = true - - # load apps in each worker instead of the master - lazy-apps = true - - # load uWSGI plugins - plugin = python3,http - - # 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 - - # plugin: python - # -------------- - # - # https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python - - # load a WSGI module - module = searx.webapp - - # set PYTHONHOME/virtualenv - virtualenv = /usr/local/searx/searx-pyenv - - # add directory (or glob) to pythonpath - pythonpath = /usr/local/searx/searx-src + .. literalinclude:: ../../build/docs/includes/searx.rst + :start-after: START searx uwsgi-description ubuntu-20.04 + :end-before: END searx uwsgi-description ubuntu-20.04 - # plugin http - # ----------- - # - # https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http + .. group-tab:: Arch Linux - # 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 + :start-after: START searx uwsgi-description arch + :end-before: END searx uwsgi-description arch + + + .. group-tab:: Fedora / RHEL + + .. literalinclude:: ../../build/docs/includes/searx.rst + :start-after: START searx uwsgi-description fedora + :end-before: END searx uwsgi-description fedora + + +.. tabs:: + + .. group-tab:: Ubuntu / debian + + .. 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 + + .. group-tab:: Arch Linux + + .. literalinclude:: ../../build/docs/includes/searx.rst + :language: ini + :start-after: START searx uwsgi-appini arch + :end-before: END searx uwsgi-appini arch + + .. group-tab:: Fedora / RHEL + + .. 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 6de66bca..f0c71031 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 38ccfdca..447e9911 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 "$@" # ---------------------------------------------------------------------------- +