Project

General

Profile

Actions

Django-hosting » History » Revision 29

« Previous | Revision 29/30 (diff) | Next »
Nico Schottelius, 09/03/2024 02:24 PM


Django hosting by ungleich

Status

This document is IN PRODUCTION (since 2016-04-08).
Pricing can be found on the ungleich products page.

Version 1: VM Based (obsolete as of 2023)

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 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')

Usually to generate/deploy the static files, you can use collectstatic:

python manage.py collectstatic                                                             

Deploy (first time)

You can login to your VM as user app:

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

Deploy (update)

ssh app@MYHOSTNAME
cd ~/app
git pull

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
  • nginx
  • PostgreSQL
  • uwsgi
  • python3 venv

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 3 months ago · 29 revisions