mirror of
https://github.com/spl0k/supysonic.git
synced 2024-11-09 19:52:16 +00:00
Some deployment docs
This commit is contained in:
parent
33d0739c4e
commit
2469698261
54
docs/setup/deploying/apache.rst
Normal file
54
docs/setup/deploying/apache.rst
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
Apache and mod_wsgi
|
||||||
|
===================
|
||||||
|
|
||||||
|
If you are using the `Apache`__ webserver, you can use it to run Supysonic with
|
||||||
|
the help of `mod_wsgi`__.
|
||||||
|
|
||||||
|
__ https://httpd.apache.org/
|
||||||
|
__ https://github.com/GrahamDumpleton/mod_wsgi
|
||||||
|
|
||||||
|
Installing `mod_wsgi`
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
If you don't have `mod_wsgi` installed yet you have to install it and enable it
|
||||||
|
first as follows::
|
||||||
|
|
||||||
|
# apt install libapache2-mod-wsgi-py3
|
||||||
|
# a2enmod wsgi
|
||||||
|
|
||||||
|
Creating a `.wsgi` file
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
To run Supysonic within Apache you need a :file:`supysonic.wsgi` file. Create
|
||||||
|
one somewhere and fill it with the following content::
|
||||||
|
|
||||||
|
from supysonic.web import create_application
|
||||||
|
application = create_application()
|
||||||
|
|
||||||
|
Store that file somewhere that you will find it again (e.g.:
|
||||||
|
:file:`/var/www/supysonic/supysonic.wsgi`).
|
||||||
|
|
||||||
|
Configuring Apache
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The last thing you have to do is to edit the Apache configuration to tell it to
|
||||||
|
load the application. Here's a basic example of what it looks like:
|
||||||
|
|
||||||
|
.. code-block:: apache
|
||||||
|
|
||||||
|
WSGIScriptAlias /supysonic /var/www/supysonic/supysonic.wsgi
|
||||||
|
<Directory /var/www/supysonic>
|
||||||
|
WSGIApplicationGroup %{GLOBAL}
|
||||||
|
WSGIPassAuthorization On
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
With that kind of configuration, the server address will look like
|
||||||
|
`http://server/supysonic/`.
|
||||||
|
|
||||||
|
For more information consult the `mod_wsgi documentation`__. Note that the
|
||||||
|
``WSGIPassAuthorization`` directive is required for some clients as they provide
|
||||||
|
their credentials using the *basic access authentification* mechanism rather
|
||||||
|
than as URL query parameters.
|
||||||
|
|
||||||
|
__ https://modwsgi.readthedocs.io/en/latest/
|
19
docs/setup/deploying/index.rst
Normal file
19
docs/setup/deploying/index.rst
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Running the web server
|
||||||
|
======================
|
||||||
|
|
||||||
|
Once Supysonic is installed and configured, you'll have to start its web server
|
||||||
|
for the clients to be able to access the music. Here you have several options,
|
||||||
|
whether you want to run it as independant process(es), then possibly putting it
|
||||||
|
behind a reverse proxy, or running it as a WSGI application within Apache.
|
||||||
|
|
||||||
|
As Supysonic is a WSGI application, you have numerous deployment options
|
||||||
|
available to you. If you want to deploy it to a WSGI server not listed here,
|
||||||
|
look up the server documentation about how to use a WSGI app with it. When
|
||||||
|
setting one of those, you'll want to call the :func:`create_application` factory
|
||||||
|
function from module :mod:`supysonic.web`.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
wsgi-standalone
|
||||||
|
apache
|
61
docs/setup/deploying/wsgi-standalone.rst
Normal file
61
docs/setup/deploying/wsgi-standalone.rst
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
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/
|
Loading…
Reference in New Issue
Block a user