Differences between revisions 1 and 9 (spanning 8 versions)
Revision 1 as of 2021-11-20 20:53:05
Size: 1502
Comment:
Revision 9 as of 2022-09-26 17:43:34
Size: 1732
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Python UWSGI = = UWSGI =
Line 3: Line 3:
'''`uWSGI`''' is an HTTP server written in C that uses the '''uwsgi''' protocol. ''Many'' programs written in Python interface with the internet through this server.

For details on the server itself or the protocol, see [[UWSGI|here]].
'''`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.
Line 21: Line 19:
If using Python 2, note that '''Alpine Linux''' has dropped support for the corresponding software. The last version to offer a `uwsgi-python` package is 3.10. If using Python 2, note that '''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.
Line 23: Line 21:
For [[Docker/Dockerfiles|Dockerfiles]], consider the below a template: For [[Docker/Dockerfile|Dockerfiles]], consider the below a template:
Line 44: Line 42:
`uWSGI` requires a configuration file to run. A basic one looks like: `uWSGI` requires a configuration file to run, typically named `uwsgi.ini`. A basic one looks like:
Line 67: Line 65:
=== Unix Sockets ===

If exposing the server over a [[Linux/Networking|Unix socket]] instead of a port, try:

{{{
socket = /app/example.com/example.sock
chmod-socket = 660
}}}


UWSGI

uWSGI is a 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 operating systems 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.

Alpine Linux

If using Python 2, note that Alpine Linux has dropped support for the corresponding software. The last version to offer a uwsgi-python package is 3.10.

For Dockerfiles, consider the below a template:

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"]


Configuration

uWSGI requires a configuration file to run, typically named uwsgi.ini. A basic one looks like:

[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 Python program that will be served.

Unix Sockets

If exposing the server over a Unix socket instead of a port, try:

socket = /app/example.com/example.sock
chmod-socket = 660


CategoryRicottone

Python/Uwsgi (last edited 2023-04-22 20:28:28 by DominicRicottone)