2022-03-08 17:36:49 +01:00
|
|
|
# -*- mode: conf; coding: utf-8 -*-
|
2020-02-25 20:20:17 +01:00
|
|
|
[uwsgi]
|
|
|
|
|
|
|
|
# uWSGI core
|
|
|
|
# ----------
|
|
|
|
#
|
|
|
|
# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core
|
|
|
|
|
|
|
|
# Who will run the code
|
|
|
|
uid = ${SERVICE_USER}
|
|
|
|
gid = ${SERVICE_GROUP}
|
|
|
|
|
[fix] external_bang - UnicodeDecodeError: 'ascii' codec can't decode (#2043)
Python's default encoding depends on the platform, set (python) default encoding
UTF-8 in uwsgi ini files:
LANG=C.UTF-8
LANGUAGE=C.UTF-8
LC_ALL=C.UTF-8
Error pattern:
Traceback (most recent call last):
File "/usr/local/searx/searx-src/searx/webapp.py", line 74, in <module>
from searx.search import SearchWithPlugins, get_search_query_from_webapp
File "/usr/local/searx/searx-src/searx/search.py", line 32, in <module>
from searx.external_bang import get_bang_url
File "/usr/local/searx/searx-src/searx/external_bang.py", line 13, in <module>
for bang in json.load(json_file)['bang']:
File "/usr/lib/python3.8/json/__init__.py", line 293, in load
return loads(fp.read(),
File "/usr/lib/python3.8/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 31341: ordinal not in range(128)
close: https://github.com/asciimoo/searx/issues/2041
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2020-07-11 12:17:06 +02:00
|
|
|
# set (python) default encoding UTF-8
|
|
|
|
env = LANG=C.UTF-8
|
|
|
|
env = LANGUAGE=C.UTF-8
|
|
|
|
env = LC_ALL=C.UTF-8
|
|
|
|
|
2020-02-25 20:20:17 +01:00
|
|
|
# chdir to specified directory before apps loading
|
2022-05-27 18:41:08 +02:00
|
|
|
chdir = ${SEARXNG_SRC}/searx
|
2020-02-25 20:20:17 +01:00
|
|
|
|
2021-11-18 18:27:26 +01:00
|
|
|
# SearXNG configuration (settings.yml)
|
2021-10-02 17:18:05 +02:00
|
|
|
env = SEARXNG_SETTINGS_PATH=${SEARXNG_SETTINGS_PATH}
|
2020-02-25 20:20:17 +01:00
|
|
|
|
|
|
|
# disable logging for privacy
|
|
|
|
logger = systemd
|
2020-03-06 22:06:19 +01:00
|
|
|
disable-logging = true
|
2020-02-25 20:20:17 +01:00
|
|
|
|
|
|
|
# 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
|
2020-02-26 19:07:55 +01:00
|
|
|
plugin = python
|
2020-02-25 20:20:17 +01:00
|
|
|
|
|
|
|
# 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
|
2022-05-27 18:41:08 +02:00
|
|
|
virtualenv = ${SEARXNG_PYENV}
|
2020-02-25 20:20:17 +01:00
|
|
|
|
|
|
|
# add directory (or glob) to pythonpath
|
2022-05-27 18:41:08 +02:00
|
|
|
pythonpath = ${SEARXNG_SRC}
|
2020-02-25 20:20:17 +01:00
|
|
|
|
|
|
|
|
2020-03-06 14:47:00 +01:00
|
|
|
# speak to upstream
|
|
|
|
# -----------------
|
2020-02-25 20:20:17 +01:00
|
|
|
#
|
2020-03-06 14:47:00 +01:00
|
|
|
# Activate the 'http' configuration for filtron or activate the 'socket'
|
|
|
|
# configuration if you setup your HTTP server to use uWSGI protocol via sockets.
|
2020-02-25 20:20:17 +01:00
|
|
|
|
2020-03-06 14:47:00 +01:00
|
|
|
# using IP:
|
|
|
|
#
|
|
|
|
# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http
|
2020-02-25 20:20:17 +01:00
|
|
|
# Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
|
2020-03-06 14:47:00 +01:00
|
|
|
|
2022-05-27 18:41:08 +02:00
|
|
|
http = ${SEARXNG_INTERNAL_HTTP}
|
2020-03-06 14:47:00 +01:00
|
|
|
|
|
|
|
# using unix-sockets:
|
|
|
|
#
|
2022-05-27 18:41:08 +02:00
|
|
|
# Don't forget to create the folder where the sockets should take place::
|
2020-03-06 14:47:00 +01:00
|
|
|
#
|
2022-05-27 18:41:08 +02:00
|
|
|
# mkdir -p "$(dirname ${SEARXNG_UWSGI_SOCKET})"
|
|
|
|
# chown -R "${SERVICE_USER}:${SERVICE_GROUP}" "$(dirname ${SEARXNG_UWSGI_SOCKET})"
|
2020-03-06 14:47:00 +01:00
|
|
|
#
|
2022-05-27 18:41:08 +02:00
|
|
|
# socket = ${SEARXNG_UWSGI_SOCKET}
|
2021-01-05 11:22:48 +01:00
|
|
|
|
2022-03-08 18:13:13 +01:00
|
|
|
# uwsgi serves the static files
|
|
|
|
# expires set to one year since there are hashes
|
2022-05-27 18:41:08 +02:00
|
|
|
static-map = /static=${SEARXNG_STATIC}
|
2022-03-08 18:13:13 +01:00
|
|
|
static-expires = /* 31557600
|
|
|
|
static-gzip-all = True
|
|
|
|
offload-threads = %k
|
|
|
|
|
2021-01-05 11:22:48 +01:00
|
|
|
# Cache
|
2022-03-08 18:13:13 +01:00
|
|
|
cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
|