Wagtail/Django Installation
Voraussetzungen für die Installation von Wagtail/Django
- einen Tarif mit Django-Funktionalität
- SSH-Zugang (z.B. via PuTTY)
- Eine leere MySQL-Datenbank
- Kenntnisse über den Editor
vim
. Alternativ können die Dateien auch über FTP oder SFTP hochgeladen werden.
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
undpassword
- Name der Datenbank, hier
- 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.
Bei Fragen steht Ihnen unser Support gerne zur Verfügung.