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 2 commits into from Nov 12, 2015
Changes from all commits
File filter
Filter file types
Failed to load comments.
Jump to
Jump to file
Failed to load files.


Just for now

@@ -29,36 +29,45 @@ Given a flask application in, 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: