Wagtail/Django Installation

Nachfolgend finden Sie eine ausführliche Anleitung zur Installation von Wagtail/Django.


Inhalt


Voraussetzungen für die Installation von Wagtail/Django

Kundenspezifische Variablen

  • Ihre Domain, in diesem Beispiel www.example.com
  • Ihr Benutzername, hier ssd123
  • Ihr Project, hier project
  • Ihre Zugangsdaten zur MySQL-Datenbank:
    • Name der Datenbank, hier ssd123db
    • Benutzer und Passwort zur Datenbank, hier ssd123db und password
  • Einen SECRET_KEY für die Verschlüsselungen.

Installation

  • melden Sie sich mit SSH am Server an und erstellen nun dort die VirtualEnv.
    ssd123@django1:~$ cd priv
    ssd123@django1:~/priv$ python3 -m venv project
    ssd123@django1:~/priv$ source project/bin/activate
    (project) ssd123@django1:~/priv$ pip install wagtail mysqlclient
    (project) ssd123@django1:~/priv$ pip wagtail start project project
    (project) ssd123@django1:~/priv$ deactivate
    ssd123@django1:~/priv$
    
  • nach dem Aktivieren der VirtualEnv können die installierten Pakete dann in der Datei requirements.txt abgelegt und gesichert werden:
    ssd123@django1:~$ cd priv
    ssd123@django1:~/priv$ python3 -m venv project
    ssd123@django1:~/priv$ source project/bin/activate
    (project) ssd123@django1:~/priv$ pip freeze | grep -v "pkg-resources" | tee requirements.txt
    

    Somit kann die VirtualEnv jederzeit mit dem dort gespeicherten Versionsstand neu aufgebaut werden.

Secret Key

Der SECRET_KEY ist eine zufällige Folge von 50 Zeichen. Sie wird normalerweise beim Aufruf von django-admin startapp erzeugt.

Bei Wagtail muss dieses Secret selbst erzeugt werden:

ssd123@django1:~/priv$ source project/bin/activate
(project) ssd123@django1:~/priv$ python
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information.
>>> from django.utils.crypto import get_random_string
>>> chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
>>> get_random_string(50,chars)
'*e)m!hiqn$-w_#b2=d^g!l=7*f#)0z9nnyprzkn7a@xlj_#cgk'
>>> quit()
(project) ssd123@django1:~/priv$

Einstellungen innerhalb von Django

Datenbank

Legen Sie die Zugangsdaten zur MySQL-Datenbank in der Datei ~/priv/db.conf ab:

# db.conf
[client]
database = ssd123db
user = ssd123db
password = password
default-character-set = utf8

Django Settings

Die Einstellungen für Django werden in der Datei ~/priv/project/project/settings/production.py abgelegt:

from .base import *

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '*e)m!hiqn$-w_#b2=d^g!l=7*f#)0z9nnyprzkn7a@xlj_#cgk'
#SECURE_CONTENT_TYPE_NOSNIFF = True
# SECURITY WARNING: define the correct hosts in production!
ALLOWED_HOSTS = ['www.example.com’]  
DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'OPTIONS': {
      'read_default_file': '/var/www/ssd123/priv/db.conf',
      'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
    },
  }
}

STATIC_ROOT = '/var/www/ssd123/htdocs/project/static/'
STATIC_URL = '/static/'

MEDIA_ROOT = '/var/www/ssd1470/htdocs/project/media/'
MEDIA_URL = '/media/'

try:
  from .local import *
except ImportError:
  pass

Start

Anlegen der Tabellen und der benötigten statischen Dateien

ssd123@django1:~$ cd priv
ssd123@django1:~/priv$ source project/bin/activate
(project) ssd123@django1:~/priv$ python project/manage.py migrate
(project) ssd123@django1:~/priv$ python project/manage.py collectstatic --noinput

wsgi-Wrapper

Jetzt brauchen wir nur noch die app.wsgi Datei, um dem Web Server auf unsere Wagtail Anwendung aufmerksam zu machen.

Diese wird als htdocs/project/app.wsgi mit folgendem Inhalt erstellt:

#!/usr/bin/python3
import sys, os

sys.path.insert(0, '/var/www/ssd123/priv/project')
sys.path.insert(0, '/var/www/ssd123/priv/project/lib/python3.7/site-packages')
sys.path.insert(0, '/var/www/ssd123/priv')

from django.core.wsgi import get_wsgi_application

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings.production'
application = get_wsgi_application()

.htaccess

Damit der Webserver die Anfragen an Django/Python übergeben kann, muss im Ordner htdocs/project die .htaccess-Datei mit folgendem Inhalt erstellt werden:

Options +ExecCGI
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.wsgi/$1 [QSA,L]
# X-Content-Type nosniff
Header set X-Content-Type-Options nosniff

Um nun die Domain auf diese Wagtail Anwendung umzulenken, wird in LiveConfig der entsprechende Eintrag vorgenommen werden.

Mit unseren Beispielvariablen wäre das die Domain example.com auf das Ziel Webspace mit dem Ordner project.

Vielen Dank an Christoph B. für die Aufbereitung dieses Artikels.