123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- .. _searx uwsgi:
- =====
- uwsgi
- =====
- .. sidebar:: further reading
- - `systemd.unit`_
- - `uWSGI Emperor`_
- .. contents:: Contents
- :depth: 2
- :local:
- :backlinks: entry
- .. _systemd.unit: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
- .. _One service per app in systemd:
- https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd
- .. _uWSGI Emperor:
- https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html
- .. _uwsgi ini file:
- https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html#ini-files
- .. _systemd unit template:
- http://0pointer.de/blog/projects/instances.html
- Origin uWSGI
- ============
- How uWSGI is implemented by distributors is different. uWSGI itself
- recommend two methods
- `systemd.unit`_ template files as described here `One service per app in systemd`_.
- There is one `systemd unit template`_ and one `uwsgi ini file`_ per uWSGI-app
- placed at dedicated locations. Take archlinux and a searx.ini as example::
- unit template --> /usr/lib/systemd/system/uwsgi@.service
- uwsgi ini files --> /etc/uwsgi/searx.ini
- The searx app can be maintained as know from common systemd units::
- systemctl enable uwsgi@searx
- systemctl start uwsgi@searx
- systemctl restart uwsgi@searx
- systemctl stop uwsgi@searx
- The `uWSGI Emperor`_ mode which fits for maintaining a large range of uwsgi apps.
- The Emperor mode is a special uWSGI instance that will monitor specific
- events. The Emperor mode (service) is started by a (common, not template)
- systemd unit. The Emperor service will scan specific directories for `uwsgi
- ini file`_\s (also know as *vassals*). If a *vassal* is added, removed or the
- timestamp is modified, a corresponding action takes place: a new uWSGI
- instance is started, reload or stopped. Take Fedora and a searx.ini as
- example::
- to start a new searx instance create --> /etc/uwsgi.d/searx.ini
- to reload the instance edit timestamp --> touch /etc/uwsgi.d/searx.ini
- to stop instance remove ini --> rm /etc/uwsgi.d/searx.ini
- Distributors
- ============
- The `uWSGI Emperor`_ mode and `systemd unit template`_ is what the distributors
- mostly offer their users, even if they differ in the way they implement both
- modes and their defaults. Another point they might differ is the packaging of
- plugins (if so, compare :ref:`install packages`) and what the default python
- interpreter is (python2 vs. python3).
- Fedora starts a Emperor by default, while archlinux does not start any uwsgi
- service by default. Worth to know; debian (ubuntu) follow a complete different
- approach. *debian*: your are familiar with the apache infrastructure? .. they
- do similar for the uWSGI infrastructure (with less comfort), the folders are::
- /etc/uwsgi/apps-available/
- /etc/uwsgi/apps-enabled/
- The `uwsgi ini file`_ is enabled by a symbolic link::
- ln -s /etc/uwsgi/apps-available/searx.ini /etc/uwsgi/apps-enabled/
- From debian's documentation (``/usr/share/doc/uwsgi/README.Debian.gz``): You
- could control specific instance(s) by issuing::
- service uwsgi <command> <confname> <confname> ...
- sudo -H service uwsgi start searx
- sudo -H service uwsgi stop searx
- My experience is, that this command is a bit buggy.
- .. _uwsgi configuration:
- All together
- ============
- Create the configuration ini-file according to your distribution (see below) and
- restart the uwsgi application.
- .. tabs::
- .. group-tab:: Ubuntu / debian
- .. kernel-include:: $DOCS_BUILD/includes/searx.rst
- :start-after: START searx uwsgi-description ubuntu-20.04
- :end-before: END searx uwsgi-description ubuntu-20.04
- .. hotfix: a bug group-tab need this comment
- .. group-tab:: Arch Linux
- .. kernel-include:: $DOCS_BUILD/includes/searx.rst
- :start-after: START searx uwsgi-description arch
- :end-before: END searx uwsgi-description arch
- .. hotfix: a bug group-tab need this comment
- .. group-tab:: Fedora / RHEL
- .. kernel-include:: $DOCS_BUILD/includes/searx.rst
- :start-after: START searx uwsgi-description fedora
- :end-before: END searx uwsgi-description fedora
- .. tabs::
- .. group-tab:: Ubuntu / debian
- .. kernel-include:: $DOCS_BUILD/includes/searx.rst
- :start-after: START searx uwsgi-appini ubuntu-20.04
- :end-before: END searx uwsgi-appini ubuntu-20.04
- .. hotfix: a bug group-tab need this comment
- .. group-tab:: Arch Linux
- .. kernel-include:: $DOCS_BUILD/includes/searx.rst
- :start-after: START searx uwsgi-appini arch
- :end-before: END searx uwsgi-appini arch
- .. hotfix: a bug group-tab need this comment
- .. group-tab:: Fedora / RHEL
- .. kernel-include:: $DOCS_BUILD/includes/searx.rst
- :start-after: START searx uwsgi-appini fedora
- :end-before: END searx uwsgi-appini fedora
|