Project

General

Profile

Actions

Django-hosting » History » Revision 19

« Previous | Revision 19/30 (diff) | Next »
Nico Schottelius, 04/08/2016 01:19 PM


django-hosting.ch by ungleich (v2016-04-08-1)

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

WSGI

  • Ensure that there is projectname/wsgi.py in your project root

Database

Add the following to your settings.py:

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

Static and media files

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

Use the following code for configuration:

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

Deploy

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

ssh app@MYHOSTNAME
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

Technologies

  • Debian 8
  • nginx
  • PostgreSQL
  • uwsgi

Configuration

  • 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 8 years ago · 19 revisions