1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-09-20 11:21:03 +00:00
supysonic/docs/setup/deploying/wsgi-standalone.rst

62 lines
2.4 KiB
ReStructuredText
Raw Normal View History

2021-01-10 17:01:21 +00:00
Standalone WSGI Containers
==========================
There are popular servers written in Python that contain WSGI applications and
serve HTTP. These servers stand alone when they run; you can let your clients
access them directly or proxy to them from your web server such as Apache
or nginx.
Gunicorn
--------
`Gunicorn`__ "Green Unicorn" is a WSGI HTTP Server for UNIX. It's a pre-fork
worker model. Running Supysonic on this server is quite simple. First install
Gunicorn with either :command:`pip install gunicorn` or
:command:`apt install gunicorn3` (the ``gunicorn`` package in this case is
for Python 2 which isn't supported anymore). Then::
$ gunicorn "supysonic.web:create_application()"
But this will only listen on the loopback interface, which isn't really useful.
Gunicorn provides many command-line options -- see :command:`gunicorn -h`.
For example, to run Supysonic with 4 worker processes (``-w 4``) binding to all
IPv4 interfaces on port 5000 (``-b 0.0.0.0:5000``)::
$ gunicorn -w 4 -b 0.0.0.0:5000 "supysonic.web:create_application()"
__ https://gunicorn.org/
uWSGI
-----
`uWSGI`__ is a fast application server written in C. It is very configurable
which makes it more complicated to setup than gunicorn.
To use it, install the package ``uwsgi`` with either :command:`pip` or
:command:`apt`. Using the later, wou might also need the additional package
``uwsgi-plugin-python3``.
Then to run Supysonic in uWSGI::
$ uwsgi --http-socket 0.0.0.0:5000 --module "supysonic.web:create_application()"
If it complains about an unknown ``--module`` option, try adding
``--plugin python3``::
$ uwsgi --http-socket 0.0.0.0:5000 --plugin python3 --module "supysonic.web:create_application()"
As uWSGI is highly configurable there are several options you could use to tweak
it to your liking. Detailing all it can do is way beyond the scope of this
documentation, if you're interested please refer to its documentation.
If you plan on using uWSGI behind a nginx reverse proxy, note that nginx
provides options to integrate directly with uWSGI. You'll find an example
configuration in `Flask's documentation`__ (the framework Supysonic is built
upon). Replace the ``myapp:app`` in their example by
``supysonic.web:create_application()`` (you might need to enclose it in
double-quotes).
__ https://uwsgi-docs.readthedocs.io/en/latest/
__ https://flask.palletsprojects.com/en/1.1.x/deploying/uwsgi/