|
Size: 1696
Comment:
|
Size: 1788
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 3: | Line 3: |
| '''`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. | '''`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 13: | Line 13: |
| 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. | 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. ---- |
| Line 17: | Line 19: |
| === Alpine Linux === | == 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/UnixSocket|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 === |
| Line 36: | Line 86: |
| ---- == 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 [[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 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 Unix socket instead of a port, try:
socket = /app/example.com/example.sock chmod-socket = 660
Usage
NGINX
See here for details.
Containers
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"]
