Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update uwsgi/nginx deployment documentation #1558

Merged
merged 2 commits into from
Nov 12, 2015
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions docs/deploying/uwsgi.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,36 +29,45 @@ Given a flask application in myapp.py, use the following command:

.. sourcecode:: text

$ uwsgi -s /tmp/uwsgi.sock --module myapp --callable app
$ uwsgi -s /tmp/uwsgi.sock --manage-script-name --mount /yourapplication=myapp:app

Or, if you prefer:

.. sourcecode:: text

$ uwsgi -s /tmp/uwsgi.sock -w myapp:app
$ uwsgi -s /tmp/uwsgi.sock --manage-script-name --mount /yourapplication=myapp:app

The ``--manage-script-name`` will move the handling of ``SCRIPT_NAME`` to
uwsgi, since its smarter about that. It is used together with the ``--mount``
directive which will make requests to ``/yourapplication`` be directed to
``myapp:app``, where ``myapp`` refers to the name of the file of your flask
application (without extension). ``app`` is the callable inside of your
application (usually the line reads ``app = Flask(__name__)``.

If you want to deploy your flask application inside of a virtual environment,
you need to also add ``--virtualenv /path/to/virtual/environment``. You might
also need to add ``--plugin python`` or ``--plugin python3`` depending on which
python version you use for your project.

Configuring nginx
-----------------

A basic flask uWSGI configuration for nginx looks like this::
A basic flask nginx configuration looks like this::

location = /yourapplication { rewrite ^ /yourapplication/; }
location /yourapplication { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_param SCRIPT_NAME /yourapplication;
uwsgi_modifier1 30;
uwsgi_pass unix:/tmp/uwsgi.sock;
uwsgi_pass unix:/tmp/yourapplication.sock;
}

This configuration binds the application to ``/yourapplication``. If you want
to have it in the URL root it's a bit simpler because you don't have to tell
it the WSGI ``SCRIPT_NAME`` or set the uwsgi modifier to make use of it::
to have it in the URL root its a bit simpler::

location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
uwsgi_pass unix:/tmp/yourapplication.sock;
}

.. _nginx: http://nginx.org/
Expand Down