Size: 1502
Comment:
|
Size: 1696
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. |
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.
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