Django-hosting » History » Revision 23

« Previous | Revision 23/28 (diff) | Next »
Nico Schottelius, 12/02/2019 11:54 AM

Django hosting by ungleich


This document is IN PRODUCTION (since 2016-04-08)

How to use

  1. Configure your app
  2. Deploy your app
  3. Install project specific python requirements into the pyvenv
  4. Restart uwsgi to restart your app
  5. Go to http://your-hostname/ and enjoy!

Configure your app


  • Ensure that there is projectname/ in your project root


Add the following to your

    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'app',

Static and media files

Static files should be placed in /home/app/app/static and media files in /home/app/app/media.

Use the following code for configuration:

PROJECT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')


You can login to your VM as user app (for the django app) and root (in case you need to change settings):

git clone <path-to-your-project> ~/app
  • Deploy / update your app into the folder ~app/app (that is the app folder in the home of the user app)
  • We recommended to use git to deploy it

Install python requirements into the pyvenv

Pyvenv has been installed to ~app/pyvenv for you.
Required packages for the hosting like PostgreSQL support and uwsgi support have already been placed.

You need to use pyvenv found in ~app/pyvenv, as uwsgi loads this pyvenv before loading your app.

To install your requirements use:

. ~/pyvenv/bin/activate
pip install ...

Restarting the app

  • sudo systemctl restart uwsgi

Viewing logfiles

  • nginx access log: tail -F /var/log/nginx/access.log
  • nginx error log: tail -F /var/log/nginx/error.log
  • uwsgi log: tail -F /var/log/uwsgi/app/app.log

Description of the stack


  • Debian
  • nginx
  • PostgreSQL
  • uwsgi
  • pyvenv


  • user "app"
    • in group "adm" (to view logfiles)
  • PostgreSQL with
    • database "app"
    • Listens only on localhost / socket (no remote connections)

Updated by Nico Schottelius over 4 years ago · 23 revisions