= Uwsgi = '''uWSGI''' is a [[Protocols/CGI#Web_Server_Gateway_Interface|WSGI]] server. Although it is written in [[C]], it's more commonly used by [[Python]] projects. There is an official Python module. <> ---- == Installation == Most [[Linux]] distributions offer both the server and the Python plugin as a package. Try installing `uswgi` and `uwsgi-python3`, or `uwsgi-python` for the Python 2 version. ---- == Configuration == `uwsgi` requires a configuration file to run, typically named `uwsgi.ini`. {{{ [uwsgi] uid = www-data gid = www-data socket = :9000 plugin = python chdir = /app/example.com wsgi-file = /app/example.com/example.wsgi master workers = 3 max-requests = 200 harakiri = 60 die-on-term }}} The `wsgi-file` is the WSGI script that will be served. === Unix Sockets === If exposing the server over a [[Linux/Networking#Unix_Sockets|Unix socket]] instead of a port, try: {{{ socket = /app/example.com/example.sock chmod-socket = 660 }}} ---- == Usage == === Nginx === See [[Nginx/Uwsgi|here]] for details. === Containers === If using Python 2, note that [[Linux/Alpine|Alpine Linux]] has [[https://alpinelinux.org/posts/Alpine-3.11.0-released.html|dropped support]] for the corresponding software. The last version to offer a `uwsgi-python` package is 3.10. The below image recipe can be used. {{{ FROM alpine:3.10 RUN apk add python uwsgi uwsgi-python RUN addgroup -S -g 82 www-data && adduser -S -u 82 -D -h /var/www -s /sbin/nologin www-data COPY --chown=www-data:www-data local/path/to/app /app WORKDIR /app EXPOSE 9000 ENTRYPOINT ["/usr/sbin/uwsgi"] CMD ["--ini", "/app/uwsgi.ini"] }}} ---- CategoryRicottone