RDMO Documentation Documentation - Release 0.11 RDMO project - Read the Docs
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Inhaltsverzeichnis
1 Installation 3
1.1 Erforderliche Pakete installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Erstellung des App-Verzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Python Pakete installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Einrichten der Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Einsatz 9
2.1 Entwicklungsserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Apache und mod_wsgi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Nginx und Gunicorn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Konfiguration 15
3.1 Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 E-Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4 Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.5 Themen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.6 Formate exportieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7 Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.8 Protokollieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4 Administration 29
4.1 Site einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Benutzer und Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 Social Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5 Management 37
5.1 Fragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.2 Domäne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.3 Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4 Bedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.5 Ansichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.7 Export and Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.8 Rollenkonzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
i6 Upgrade 53
6.1 Upgrade to version 0.9.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
iiRDMO Documentation Documentation, Release 0.11
RDMO ist ein Werkzeug zur Unterstützung der systematischen Planung, Organisation und Implementierung des Da-
tenmanagements während eines wissenschaftlichen Projekts. RDMO wird durch die Deutsche Forschungsgemein-
schaft (DFG) gefördert.
Webseite
https://rdmorganiser.github.io
Quelltext
https://github.com/rdmorganiser/rdmo
Dokumentation
http://rdmo.readthedocs.io
FAQ
http://www.forschungsdaten.org/index.php/FAQs
Mailing list
https://www.listserv.dfn.de/sympa/subscribe/rdmo
Slack
https://rdmo.slack.com
Demo
https://rdmo.aip.de
Warnung: Diese Software ist noch in der Entwicklungsphase.
Inhaltsverzeichnis 1RDMO Documentation Documentation, Release 0.11 2 Inhaltsverzeichnis
KAPITEL 1
Installation
Für Demonstrations-, Entwicklungs- oder Testzwecke kann RDMO auf Linux, Windows und macOS installiert wer-
den. Falls Sie jedoch eine Produktionsumgebung aufsetzen möchten, RDMO über ein Netzwerk oder das Internet an-
bieten möchten, empfehlen wir sehr eine aktuelle Linux-Version, namentlich CentOS7, Debian 8 oder 9, oder Ubuntu
16.04.3 LTS (Xenial Xerus) zu verwenden.
Der Code ist hauptsächlich in Python geschrieben und sollte mit Python höher als Version 3.4 laufen. RDMO funk-
tioniert auch mit Python 2.7. Beachten Sie, dass für ein CentOS7/Apache-Setup nur Python 2.7 verwendet werden
kann.
Eine RDMO-Installation hat drei Komponenten:
1. Ein Ordner, der alle Einstellungen und Anspassungen enthält, die ihre RDMO-Installation individualisiert. Wir
werden diesen Ordner rdmo-app nennen.
2. Das eigentliche rdmo Paket, welches zentral vom RDMO-Team gepflegt wird. Dies Paket wird in einer virtuel-
len Umgebung installiert.
3. Eine Datenbank, um den vom Benutzer erstellten Inhalt ihrer RDMO-Installation zu speichern. Aktuell unter-
sützen wir PostgreSQL, MySQL und SQLite.
Dieses Kapitel zeigt wie diese Komponenten installiert werden. Optionale Komponenten können danach installiert
werden, sie sind unter Konfiguration dokumentiert.
Für Test- und Entwicklungszwecke kann RDMO mit ihrem regulären Benutzer-Account betrieben werden. Im Pro-
duktionsbetrieb sollte ein dedizierter Benutzer verwendet werden. Wir empfehlen einen Benutzer namens rdmo mit
der Gruppe rdmo und dem Homeverzeichnis /srv/rdmo zu erstellen: sudo adduser rdmo --home /srv/
rdmo . Wir werden diesen Benutzer mit dem genannten Profil in der gesamten Dokumentation verwenden.
Verwenden Sie nicht den root Benutzer, um RDMO auszuführen! Es ist generell eine schlechte Idee und viele
Installationsschritte funktionieren nicht. sudo wird während der Installation verwendet, wenn root-Rechte nötig sind,
um Pakete zu installieren.
3RDMO Documentation Documentation, Release 0.11
1.1 Erforderliche Pakete installieren
Das Installieren der erforderlichen Software-Pakete für RDMO unterscheidet sich für verschiedene Betriebssysteme
und ist daher in einzelnen Abschnitten dargelegt. Hier müssen Sie den Superuser verwenden.
1.1.1 Linux
Wir empfehlen für die Installation der Voraussetzungen das Paket-System der Distribution zu verwenden. Bei Debi-
an/Ubunutu verwenden Sie:
sudo apt install build-essential libxml2-dev libxslt-dev zlib1g-dev \
python3-dev python3-pip python3-venv \
git pandoc
# optional, for pdf output
sudo apt install texlive texlive-xetex
Bei RHEL/CentOS verwenden Sie:
sudo yum install gcc gcc-c++ libxml2-devel libxslt-devel \
python34-devel python34-pip python34-virtualenv \
git pandoc
# optional, for pdf output
sudo yum install texlive texlive-xetex texlive-mathspec texlive-euenc \
texlive-xetex-def texlive-xltxtra
Bei Ubuntu 14.04, ist python3-venv nicht verfügbar. Bitte verwenden Sie stattdessen python3.5-venv.
Bei RHEL/CentOS ist selinux standardmäßig aktiviert. Dies führt zu unerwarteten Fehlern, abhängig davon, wo der
RDMO-Sourcecode auf dem System isntalliert ist. Auch wenn die bevorzugte Lösung die richtige Konfiguration von
selinux wäre (was im Rahmen dieser Dokumentation zu weit führen würde), kann selinux auf permissive
oder disabled unter /etc/selinux/config gesetzt werden (erfordert einen Neustart).
Wenn Sie Python 2.7 anstatt Python 3 benutzen möchten, verwenden Sie die entsprechenden Pakete:
apt install python-dev python-pip python-virtualenv # Debian/Ubuntu
yum install python-devel python-pip python-virtualenv # RHEL/CentOS
1.1.2 macOS
Wir empfehlen die Voraussetzungen mit brew zu installieren:
brew install python3 # for python 3
brew install python # for python 2
brew install git
brew install pandoc
# optional, for pdf export
brew install texlive
4 Kapitel 1. InstallationRDMO Documentation Documentation, Release 0.11
1.1.3 Windows
Bei Windows müssen die Software-Voraussetzungen von den einzelnen Internetseiten heruntergeladen und installiert
werden.
Für Python:
• herunterladen von https://www.python.org/downloads/windows/
• wir empfehlen eine Version >= 3.4
• vergessen Sie nicht zu überprüfen, dass währended des Setups Python zu den Umgebungsvariablen
hinzufügen gesetzt ist
Für git:
• herunterladen von https://git-for-windows.github.io
Für die Microsoft C++ Build Tools:
• herunterladen von https://wiki.python.org/moin/WindowsCompilers
Für Pandoc:
• herunterladen von https://github.com/jgm/pandoc/releases
Für pdflatex (optional, für pdf-Export):
• herunterladen http://miktex.org
Alle weiteren Schritte müssen in der Windows-Shell cmd.exe ausgeführt werden. Sie können diese vom Start-Menü
aus öffnen.
1.2 Erstellung des App-Verzeichnis
Im nächsten Schritt ist ein rdmo-app-Verzeichnis durch Klonen des entsprechenden Repositoriums im Home-
Verzeichnis ihres rdmo-Benutzers zu erstellen:
git clone https://github.com/rdmorganiser/rdmo-app
Beachten Sie, dass dies nicht das Haupt-rdmo-Repositorium ist, da es nur die Konfigurationsdateien enthält. In diesem
Ordner finden Sie folgendes:
• einen config-Ordner, der die Haupteinstellungen ihrer RDMO-Installation enthält
• einen requirements-Order, der Schnellverfahren zur Installation von verschiedenen obligatorischen und
optionalen Abhängigkeiten enthält
• ein manage.py-Skript, durch das Sie mit ihrer RDMO-Installation über die Kommandozeile interagieren kön-
nen. Für fast alle folgenden Schritte wird dieses Skript verwendet.
Der rdmo-app-Ordner entspricht einem project in Django.
1.3 Python Pakete installieren
Nachdem Sie sich den rdmo-app-Ordner angesehen haben, müssen Sie die rdmo-Pakete installieren und andere
Python-Abhängigkeiten.
Wechseln Sie dazu in den rdmo-app-Ordner und erstellen Sie eine virtualenv (mit ihrem Benutzer oder ihrem er-
stellten rdmo-Benutzer, nicht als root):
1.2. Erstellung des App-Verzeichnis 5RDMO Documentation Documentation, Release 0.11
cd rdmo-app
python3 -m venv env # for python3
virtualenv env # for python2.7
source env/bin/activate # on Linux or macOS
call env\Scripts\activate.bat # on Windows
pip install --upgrade pip setuptools # update pip and setuptools
Nachdem die virtuelle Umgebung aktiviert wurde, kann dort das rdmo-Paket mit Hilfe von pip installiert werden:
pip install rdmo
Die virtuelle Umgebung schottet die RDMO-Installation vom Rest des Systems ab. Dies ermöglicht es mehrere An-
wendungen mit verschiedenen Python-Abhängigkeiten auf einer Maschine laufen zu lassen und die Abhängigkeiten
ohne Root-Rechte zu installieren.
Wichtig: Die virtuelle Umgebung muss jedes Mal mit Hilfe von source env/bin/activate oder call
env\Scripts\activate.bat aktiviert werden , wenn ein neues Terminal benutzt wird.
1.4 Einrichten der Anwendung
Um die Anwendung einzurichten, erstellen Sie eine neue Datei config/settings/local.py in ihrem ge-
klontenrdmo-app-Ordner. Für unseren Beispielbenutzer mit dem Homeverzeichnis /srv/rdmo wäre dies /srv/
rdmo/rdmo-app/config/settings/local.py.
Sie können config/settings/sample.local.py als Vorlage verwenden, d.h.:
cp config/settings/sample.local.py config/settings/local.py # on Linux or macOS
copy config\settings\sample.local.py config\settings\local.py # on Windows
Die meisten Einstellungen ihrer RDMO-Instanz sind in dieser Datei festgelegt. Die unterschiedlichen Einträge sind im
Detail in später in der Dokumentation erklärt. Für eine Minimal-Konfiguration müssen Sie DEBUG = True setzen,
um ausführliche Fehlermeldungen zu erhalten und statische Dateien zu nutzen. Setzen Sie außerdem SECRET_KEY zu
einem langen, zufälligen String, den Sie geheim halten. Ihre Datenbank-Verbindung wird mit Hilfe der DATABASES
Variablen gesetzt. Die Konfiguration der Datenbank wird später in der Dokumentation erklärt. Wenn keine DATABASE
gesetzt ist, wird sqlite2 verwendet.
Dann starten Sie die Datenbank der Anwendung:
python manage.py migrate # initializes the database
python manage.py setup_groups # creates groups with different permissions
python manage.py createsuperuser # creates the admin user
1.4.1 Vendor Files von Drittanbietern
Standardmäßig werden Drittanbieterdateien (wie jQuery oder Bootstrap-Javascripts) aus den Content-Delivery-
Netzwerken abgerufen, in denen sie bereitgestellt werden. Wenn Sie Anfragen von Dritten vermeiden möchten, können
Sie diese selbst hosten. Dies kann mit zwei einfachen Schritten einfach erreicht werden.
1. Laden Sie die Herstellerdateien von den CDs herunter, indem Sie das mitgelieferte Skript ausführen.
6 Kapitel 1. InstallationRDMO Documentation Documentation, Release 0.11
python manage.py download_vendor_files
2. Stellen Sie sicher, dass Ihre local.py die folgende Zeile enthält
VENDOR_CDN = False
1.4.2 RDMO development server
Nach diesen Schritten kann RDMO mit dem integriertem Entwicklungsserver von Django betrieben werden:
python manage.py runserver
Anschließend ist RDMO unter http://127.0.0.1:8000 in ihrem (lokalen) Browser verfügbar. Die unterschiedlichen
Wege, wie RDMO betrieben werden kann, werden im nächsten Kapitel behandelt. Die neu installierte RDMO-
Instanz ist noch leer, d.h. es sind keine Fragebögen oder Ansichten verfügbar. Sie müssenimportiert und/oder wie
unterManagement beschrieben erstellt werden.
1.4. Einrichten der Anwendung 7RDMO Documentation Documentation, Release 0.11 8 Kapitel 1. Installation
KAPITEL 2
Einsatz
Wie bereits erwähnt kann RDMO in zwei verschiedenen Setups genutzt werden:
• für Entwicklung oder Testen benutzte Sie den eingebauten Django-Entwicklungsserver.
• für den Betrieb wird ein Webserver und das wsgi Protokoll verwendet. Wir empfehlen eine der folgenden zwei
Setups zu verwenden:
– Apache2 und mod_wsgi (nur hier kann Shibboleth verwendet werden)
– Nginx, Gunicorn und Systemd
2.1 Entwicklungsserver
Django besitzt einen integrierten Entwicklungsserver. Dieser wird wie folgt gestartet:
python manage.py runserver
Danach ist RDMO unter http://localhost:8000 in ihrem (lokalen) Browser verfügbar. Der Ent-
wicklungsserver ist nicht geeignet, um die Anwendung im Internet anzubieten.
Falls Sie den Entwicklungsserver für andere Maschinen zugänglich machen wollen, müssen sie folgendes
verwenden:
python manage.py runserver 0.0.0.0:8000
wobei 8000 der HTTP-Port ist und für ihre Bedürfnisse angepasst werden kann. Bitte benutzten Sie
dieses Setup ausschließlich für Tests und Entwicklung, da der Server nicht sicher ist.
Weitere Informationen über den Entwicklungsserver kann unter Django Dokumentation gefunden werden.
9RDMO Documentation Documentation, Release 0.11
2.2 Apache und mod_wsgi
Im Betrieb sollten Sie einen dedizierten Benutzer-Account für RDMO erstellen. Alle Schritte der Installa-
tion, für die Sie keine Root-Rechte benötigen, sollten mit diesem Benutzer ausgeführt werden. Wie überall
gehen wir davon aus, dass der Benutzer rdmo genannt wurde und sein Home-Verzeichnis /srv/rdmo
ist. Demnach ist ihre rdmo-app unter /srv/rdmo/rdmo-app zu finden.
Installieren Sie den Apache Server und mod_wsgi:
# Debian/Ubuntu
sudo apt install apache2 libapache2-mod-wsgi-py3 # for python3
sudo apt install apache2 libapache2-mod-wsgi # for python2.7
# CentOS
sudo yum install httpd mod_wsgi # only for python2.7
Als nächstes erstellen Sie eine virtuelle Host-Konfiguration. Leider werden verschiedene Versionen von
apache und mod-wsgi bei den verschiedenen Distributionen verwendet und daher ist jeweils ein leicht
unterschiedliches Setup notwendig:
Für Debian/Ubuntu:
# in /etc/apache2/sites-available/000-default.conf
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /srv/rdmo/rdmo-app/static_root/
Require all granted
WSGIDaemonProcess rdmo user=rdmo group=rdmo \
home=/srv/rdmo/rdmo-app python-home=/srv/rdmo/rdmo-app/env
WSGIProcessGroup rdmo
WSGIScriptAlias / /srv/rdmo/rdmo-app/config/wsgi.py process-
˓→group=rdmo
WSGIPassAuthorization On
Require all granted
Für CentOS 7:
# in /etc/httpd/conf.d/vhosts.conf on RHEL/CentOS
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
(Fortsetzung auf der nächsten Seite)
10 Kapitel 2. EinsatzRDMO Documentation Documentation, Release 0.11
(Fortsetzung der vorherigen Seite)
Alias /static /srv/rdmo/rdmo-app/static_root/
Require all granted
WSGIDaemonProcess rdmo user=rdmo group=rdmo home=/srv/rdmo/rdmo-app \
python-path=/srv/rdmo/rdmo-app:/srv/rdmo/rdmo-app/env/lib/
˓→python2.7/site-packages
WSGIProcessGroup rdmo
WSGIScriptAlias / /srv/rdmo/rdmo-app/config/wsgi.py process-
˓→group=rdmo
WSGIPassAuthorization On
Require all granted
Starten Sie den Apache-Server neu: sudo /etc/init.d/apache2 restart oder sudo
service apache2 restart . RDMO sollte nun unter YOURDOMAIN verfügbar sein. Beachten Sie,
dass der Apache-Benutzer Zugang zu /srv/rdmo/rdmo-app/static_root/ haben muss.
Wie Sie der virtuellen Host-Konfigurationen entnehmen können, werden die statischen Inhalte wie CSS
und JavaScript unabhängig vom WSGI-Python-Skript bedient. Um dies zu erreichen, müssen diese in dem
static_root-Ordner innerhalb der virtuellen Umgebung erfasst werden:
python manage.py collectstatic
Um Veränderungen am RDMO -Code vorzunehmen (z.B: nach dem Upgrade), muss der Webserver neu
geladen werden oder die Datei config/wsgi.py muss (scheinbar) verändert worden sein indem der
touch-Befehl verwendet wird:
touch config/wsgi.py
Außerdem muss das collectstatic-Kommando innerhalb der virtuellen Umgebung neu ausgeführt
werden:
python manage.py deploy
2.3 Nginx und Gunicorn
Für RDMO sollte ein dezidierter Benutzer verwendet werden. Alle Schritte in der Anleitung, welche keine
Root-Rechte benötigen, sollten mit diesem dezidierten Benutzer ausgeführt werden. Hier gehen wir davon
aus, dass der Benutzer rdmo´ genannt wurde, sein Home-Verzeichnis /srv/rdmo ist und demnach ihre
rdmo-app unter /srv/rdmo/rdmo-app zu finden ist.
Als erstes installieren Sie gunicorn in ihrer virtuellen Umgebung:
pip install -r requirements/gunicorn.txt
Dann testen Sie Gunicorn:
2.3. Nginx und Gunicorn 11RDMO Documentation Documentation, Release 0.11
gunicorn --bind 0.0.0.0:8000 config.wsgi:application
Dies sollte die Anwendung genauso wie runserver laufen lassen, aber ohne statische Inhalte wie CSS-
Dateien oder Bilder. Nach dem Test beenden Sie den gunicorn-Prozess wieder.
Dann erstellen Sie für den systemd service eine Datei für RDMO. Systemd wird den gunicorn-Prozess
bei der Intriebnahme starten und überwachen. Erstellen Sie eine neue Datei unter /etc/systemd/
system/rdmo.service und geben Sie ein (Sie benötigen root/sudo-Rechte dafür):
[Unit]
Description=RDMO gunicorn daemon
After=network.target
[Service]
User=rdmo
Group=rdmo
WorkingDirectory=/srv/rdmo/rdmo-app
ExecStart=/srv/rdmo/rdmo-app/env/bin/gunicorn --bind unix:/srv/rdmo/rdmo.
˓→sock config.wsgi:application
[Install]
WantedBy=multi-user.target
Dieser Service muss gestartet und aktiviert werden wie jeder andere Service auch:
sudo systemctl start rdmo
sudo systemctl enable rdmo
Danach installieren Sie nginx:
sudo apt install nginx # on Debian/Ubuntu
sudo yum install nginx # on RHEL/CentOS
Veränderen Sie die nginx-Konfiguration wie folgt (mit root/sudo-Rechten):
# in /etc/nginx/sites-available/default on Debian/Ubuntu
# in /etc/nginx/conf.d/vhost.conf on RHEL/CentOS
server {
listen 80;
server_name YOURDOMAIN;
location / {
proxy_pass http://unix:/srv/rdmo/rdmo.sock;
}
location /static/ {
alias /srv/rdmo/rdmo-app/static_root/;
}
}
Starten Sie nginx neu. RDMO sollte nun unter YOURDOMAIN verfügbar sein. Beachten Sie, dass der
Unix-Socket /srv/rdmo/rdmo.sock für nginx zugänglich sein muss.
Wie Sie der virtuellen Host-Konfiguration entnehmen können, werden statische Inhalte wie CSS und
JavaScript-Dateien unabhängig über den Reverse-Proxy dem gunicorn-Prozess zur Verfügung gestellt.
Um dies zu erreichen, werden diese in dem static_root-Ordner erfasst. Hierzu wird das Kommando
python manage.py collectstatic
12 Kapitel 2. EinsatzRDMO Documentation Documentation, Release 0.11
in ihrer virtuellen Umgebung ausgeführt.
Bei Veränderungen im RDMO-Code (z.B. nach einem Upgrade) muss der gunicorn-Prozess neu gestartet
werden:
sudo systemctl restart rdmo
2.3. Nginx und Gunicorn 13RDMO Documentation Documentation, Release 0.11 14 Kapitel 2. Einsatz
KAPITEL 3
Konfiguration
Die RDMO-Anwendung benutzt das Django Einstellungsmodul für seine Konfiguration. Um die Basiskonfiguration
und ihre lokalen Anpassungen und geheime Informationen (z.B.: Datenbankverbindungen) von einander zu trennen,
sind die RDMO-Einstellungen in zwei Dateien aufgeteilt:
• config/settings/base.py, als Teil des Git-Repositoriums, die vom RDMO-Entwicklungsteam verwal-
tet wird.
• config/settings/local.py, die von Git ignoriert wird und von Ihnen verändert werden muss.
Als Teil der Installation sollte config/settings/local.py anhand der Vorlage config/settings/
sample.local.py erstellt werden.
Da die Einträge in der lokalen Einstellungsdatei config/settings/local.py Einträge in den Einstellungen in
config/settings/sample.local.py überschreiben, sollte dieser Mechanismus verwendet werden, um die
Einstellungen, die bereits in config/settings/sample.local.py vorhanden sind, anzupassen.
Dies beinhaltet allgemeine Einstellungen, Datenbankverbindungen, wie E-mails versendet werden, die verschiedenen
Authentifizierungsmethoden, die Verwendung von Themen, und Caches.
3.1 Allgemeine Einstellungen
Einige allgemeine Einstellungen sollten in ihrer config/settings/local.py enthalten sein. Die erste und
wahrscheinlich wichtigste Einstellung ist, ob Sie RDMO im Debug-Modus ausführen:
DEBUG = True
Im Debug-Modus werden ausführliche Fehlerseiten angezeigt, falls etwas schief läuft, werden statische Inhalte wie
CSS und JavaScript-Dateien vom Entwicklungsserver automatisch gefunden. Der Debug-Modus darf nicht aktiviert
sein, wenn RDMO im normalen Betrieb mit dem Internet verbunden ist.
Django braucht einen Geheimschlüssel, der auf einen einzigartigen, unvorhersehbaren Wert gesetzt wird:
SECRET_KEY = 'this is not a very secret key'
15RDMO Documentation Documentation, Release 0.11
Dieser Schlüssel muss geheim bleiben, da ansonsten viele der eingebauten Sicherheitsmaßnahmen von Django versa-
gen.
Im Betrieb erlaubt Django nur Anfragen an bestimmte URLs, welche festgelegt werden müssen:
ALLOWED_HOSTS = ['localhost', 'rdmo.example.com']
Wenn Sie RDMO unter einem Alias wie http://example.com/rdmo laufen lassen möchten, müssen Sie die Basis-URL
festlegen:
BASE_URL = '/rdmo'
Ferner, möchten Sie vielleicht eine Hauptsprache für ihr RDMO und die Zeitzone festlegen:
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Europe/Berlin'
3.2 Datenbanken
RDMO kann mit allen Datenbanken, die vom Django-Framework unterstützt werden, verwendet werden. Die jeweilige
Datenbankverbindung wird mit der Einstellung DATABASE definiert. Eine Übersicht über die Django Datenbankein-
stellungen finden Sie hier. Im folgenden zeigen wir die Einstellungen für PostgreSQL, MySQL und SQLite.
3.2.1 PostgreSQL
PostgreSQL kann wie folgt installiert werden:
# Debian/Ubuntu
sudo apt install postgresql
# CentOS
sudo yum install postgresql-server postgresql-contrib
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
Um PostgreSQL als ihre Datenbank-Backend nutzen zu können, installieren Sie psycopg2 in ihrer virtuellen Um-
gebung:
pip install -r requirements/postgres.txt
Dann fügen Sie folgende Zeilen zu config/settings/local.py hinzu:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'rdmo',
'USER': 'rdmo',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
16 Kapitel 3. KonfigurationRDMO Documentation Documentation, Release 0.11
wobei Name der Name der Datenbank ist, USER der PostgreSQL Benutzer, PASSWORD dessen Passwort, HOST
der Datenbankhost und PORT der Port von PostgreSQL. Beachten Sie, dass abhängig von ihrem Setup nicht alle
Einstellungen benötigt werden. Falls Sie Peer-Authenfizierungsmethoden verwenden, brauchen Sie nur die NAME und
ENGINE-Einstellungen. Der Benutzer und die Datenbank werden wie folgt gesetzt:
sudo su - postgres
createuser rdmo
createdb rdmo -O rdmo
Dies setzt Peer-Authentifizierung für den RDMO-Benutzer voraus.
Das Kommando
python manage.py migrate
sollte nun die RDMO Datenbank-Tabellen in der PostgreSQL-Instanz erstellen.
3.2.2 MySQL
MySQL (oder die Community-basierte Variante MariaDB) kann wie folgt installiert werden:
# Debian/Ubuntu
sudo apt install mysql-client mysql-server libmysqlclient-dev # for MySQL
sudo apt install mariadb-client mariadb-server libmariadbclient-dev # for MariaDB
# CentOS
sudo yum install -y mysql mysql-server mysql-devel # for
˓→MySQL
sudo yum install -y mariadb mariadb-server mariadb-devel # for
˓→MariaDB
# set
˓→mariadb -> mysql if MySQL installed
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo mysql_secure_installation
Um MySQL/MariaDB als ihr Datenbank-Backend zu nutzen, installieren Sie mysqlclient in ihrer virtuellen Um-
gebung:
pip install -r requirements/mysql.txt
Danach, fügen Sie folgendes ihrer config/settings/local.py hinzu:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'rdmo',
'USER': 'rdmo',
'PASSWORD': 'not a good password',
'HOST': '',
'PORT': '',
'OPTIONS': {
'unix_socket': '',
}
}
}
3.2. Datenbanken 17RDMO Documentation Documentation, Release 0.11
Hier ist Name der Name der Datenbank, USER der MySQL-Benutzer, PASSWORD das selbstgwählte Passwort,
HOST der Datenbank-Host und PORT der zugehörige Port. Falls Sie/tmp/mysql.sock nicht benutzen, können
Sie unix-socket verwenden, um den Pfad zu setzen. Der Benutzer und die Datenbank werden wie folgt erstellt:
CREATE USER 'rdmo'@'localhost' identified by 'not a good password';
GRANT ALL ON `rdmo`.* to 'rdmo'@'localhost';
CREATE DATABASE `rdmo`;
auf der MySQL-shell.
Das Kommando
python manage.py migrate
sollte jetzt die RDMO Datenbank-Tabellen in MySQL angelegen.
3.2.3 SQLite
SQLite ist die Standardoption in RDMO und unter config/settings/base.py konfiguriert. Wir empfehlen,
dies nur für das Entwicklungs-/Test-Setup zu verwenden. Es kann unter config/settings/local.py konfigu-
riert werden, indem folgendes hinzugefügt wird:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '',
}
}
wobei Name der Name der Datenbankdatei ist.
Das Kommando
python manage.py migrate
sollte nun die RDMO Datenbank-Tabellen in der angegeben Datenbankdatei erstellen.
3.3 E-Mail
RDMO muss E-Mails an seine Benutzer schicken können. Die Vebindung zu dem SMPT-Server wird über folgende
Einstellungen in ihrer config/settings/local.py konfiguriert:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = '25'
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
EMAIL_USE_SSL = False
DEFAULT_FROM_EMAIL = ''
18 Kapitel 3. KonfigurationRDMO Documentation Documentation, Release 0.11
Hier ist EMAIL_HOST die URL oder IP des SMTP-Servers, EMAIL_PORT ist der zugehörige Port (meistens 25, 465,
oder 587), EMAIL_HOST_USER und EMAIL_HOST_PASSWORD sind die Zugangsdaten, falls der SMTP-Server eine
Authenfizierung verlangt.
Für eineSTARTTLS-Verbindung (meistens auf Port 587) muss EMAIL_USE_TLS auf True gesetzt werden, während
EMAIL_USE_SSL auf True gesetzt sein muss, um eine implizite TLS/SSL Verbindung (meistens auf dem Port 465)
zu ermöglichen.
DEFAULT_FROM_EMAIL setzt das Absender-Feld für die E-Mails, die dem Benutzer geschickt werden.
Für ein Entwicklungs-/Test-Setup kann ein einfaches E-Mail-Backend verwendet werden, dass nur die E-Mail auf dem
Terminal anzeigt:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_FROM = 'info@example.com'
Dies ist auch das Standard-Backend, falls keine E-Mail-Einstellungen in config/settings/local.py hinzu-
gefügt wurden.
3.4 Authentifizierung
RDMO hat drei Hauptmethoden für die Authentifizierung:
• Reguläre Benutzeraccounts mit Registrierung unter Verwendung der django-allauth Bibliothek
• Verwendung deiner (read-only) Verbindung zu einem LDAP Server
• Installieren eines Shibboleth Service-Anbieters neben RDMO, um sich mit einem Identity-Provider oder einer
ganzen Shibboleth-Förderation zu verbinden
Wichtig: Diese Methoden sind nur separat getestet worden und sollten daher als sich gegenseitig ausschließend
betrachtet werden (bis gegenteiliges bewiesen ist).
Falls keine der Methoden aktiviert ist, ist nur ein einfacher Login verfügbar und Benutzer müssen über das Django
Admin-Interface erstellt werden.
3.4.1 Django-allauth
RDMO verwendet das großartige django-allauth als Haupt-Authentifizierungs-Modul. Es ermöglicht Workflows für
Benutzerregistration und Passwortabfrage, genauso wie Authentifizierung durch Drittanbieter-Webseiten mit Hilfe von
OAUTH2.
Accounts
Um reguläre Accounts in RDMO anzulegen, fügen Sie folgendes zu ihrer config/settings/local.py hinzu:
from rdmo.core.settings import INSTALLED_APPS, AUTHENTICATION_BACKENDS
ACCOUNT = True
ACCOUNT_SIGNUP = True
INSTALLED_APPS += [
'allauth',
'allauth.account',
]
(Fortsetzung auf der nächsten Seite)
3.4. Authentifizierung 19RDMO Documentation Documentation, Release 0.11
(Fortsetzung der vorherigen Seite)
AUTHENTICATION_BACKENDS.append('allauth.account.auth_backends.AuthenticationBackend')
Die Einstellung ACCOUNT = True aktiviert die allgemeinen Django-allauth Eigenschaften in RDMO,
ACCOUNT_SIGNUP = True erlaubt es neue Benutzer in Ihrer RDMO-Instanz zu registrieren. Das Verhalten von
Django-allauth kann durch weitere Einstellungen konfiguriert werden, die unter django-allauth documentati-
on dokumentiert sind. RDMO setzt einige Standardwerte, die in config/settings/base.py gefunden werden
können.
Soziale Accounts
Um Accounts von Webseiten dritter Anbieter (Facebook, Github, etc.) mit RDMO zu verwenden, fügen Sie folgendes
zu ihrer config/settings/local.py hinzu:
from rdmo.core.settings import INSTALLED_APPS, AUTHENTICATION_BACKENDS
ACCOUNT = True
ACCOUNT_SIGNUP = True
SOCIALACCOUNT = True
INSTALLED_APPS += [
'allauth',
'allauth.account',
'allauth.socialaccount'
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.github',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.orcid',
'allauth.socialaccount.providers.twitter',
...
]
AUTHENTICATION_BACKENDS.append('allauth.account.auth_backends.AuthenticationBackend')
Die Einstellung SOCIALACCOUNT = True wird von RDMO verwendet, um bestimmte Teile der Benutzero-
berfläche mit den Accounts dritter Anbieter anzuzeigen, während wie zuvor die Zeilen nach INSTALLED_APPS
es dem Feature erlaubt von RDMO verwendet zu werden. Jeder Anbieter hat eine separate App, die Sie zu
INSTALLED_APPS hinzufügen können. Eine Liste aller von Django-allauth unterstützen Anbieter finden Sie hier.
Sobald die Installation abgeschlossen ist, müssen die Zugangsdaten ihres OAuth-Anbieters im Admin-Interface ein-
gegeben werden. Dies wird im Administration-Kapitel dieser Dokumentation erklärt.
3.4.2 LDAP
Um ein LDAP-Backend mit RDMO nutzen zu können, muss zunächst die nötige Software installiert werden. Bei
Debian/Ubuntu kann dies wie folgt geschehen:
sudo apt-get install libsasl2-dev libldap2-dev libssl-dev
Auf Python basierend verwenden wir django-auth-ldap, um uns mit dem LDAP-Server zu verbinden. Wie schon zuvor
sollte dies in einer für RDMO erstellten virtuellen Umgebung installiert werden:
pip install -r requirements/ldap.txt
20 Kapitel 3. KonfigurationRDMO Documentation Documentation, Release 0.11
LDAP-Installationen können sehr verschiedenartig sein und wir beschreiben nur einen bestimmten Fall. Wir nehmen
an, dass der LDAP-Service auf ldap.example.com läuft. RDMO benötigt einen System Account. Starten Sie:
ldapmodify -x -D 'cn=Directory Manager' -W
auf der Machine mit dem LDAP-Service und geben Sie ein:
dn: uid=rdmo,dc=ldap,dc=example,dc=com
changetype: add
objectclass: account
objectclass: simplesecurityobject
uid: rdmo
userPassword: YOURPASSWORD
und enden Sie die Datei mit einer Leerzeile gefolgt von ctrl-d.
Danach fügen Sie folgende Zeilen hinzu oder entfernen die Kommentarzeichen in config/settings/local.
py:
import ldap
from django_auth_ldap.config import LDAPSearch
from rdmo.core.settings import AUTHENTICATION_BACKENDS
PROFILE_UPDATE = False
PROFILE_DELETE = False
AUTH_LDAP_SERVER_URI = "ldap://ldap.example.com"
AUTH_LDAP_BIND_DN = "cn=rdmo,dc=ldap,dc=example,dc=com"
AUTH_LDAP_BIND_PASSWORD = "YOURPASSWORD"
AUTH_LDAP_USER_SEARCH = LDAPSearch("dc=ldap,dc=example,dc=com", ldap.SCOPE_SUBTREE,
˓→"(uid=%(user)s)")
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName",
"last_name": "sn",
'email': 'mail'
}
AUTHENTICATION_BACKENDS.insert(
AUTHENTICATION_BACKENDS.index('django.contrib.auth.backends.ModelBackend'),
'django_auth_ldap.backend.LDAPBackend'
)
Die Einstellungen PROFILE_UPDATE = False und PROFILE_DELETE = False deaktivieren das Updatefor-
mular des Benutzerprofils und die Seite, auf der der Nutzer sein eigenes Profil löschen kann. Der Benutzer kann dar-
aufhin sein seine Zugangsdaten nicht mehr ändern oder das eigene Profil löschen. Die anderen Einstellungen werden
von Django-auth-ldap benötigt und sind in der django-auth-ldap Dokumentation beschrieben.
3.4.3 Shibboleth
Um Shibboleth mit RMDO zu verwenden, ist es notwendig in der Betriebsumgebung einen Apache2-Service bereit-
zustellen. Das Setup ist hier dokumentiert.
Als nächstes installieren Sie das Shibboleth Apache Modul für die Service-Anbieter aus ihrem Distributionsreposito-
rium, z.B. für Debian/Ubuntu:
3.4. Authentifizierung 21RDMO Documentation Documentation, Release 0.11
sudo apt-get install libapache2-mod-shib2
Zusätzlich muss der Django-shibboleth-remoteuser in der virtuellen RDMO-Umgebung installiert werden:
pip install -r requirements/shibboleth.txt
Konfigurieren Sie ihren Shibboleth Service-Anbieter mithilfe der Dateien in /etc/shibboleth/. Dies kann zwi-
schen den Identity-Providern variieren. Für RDMO muss der REMOTE_SERVER gesetzt sein, sowie vier weitere
Attribute ihres Identity-Providers:
• ein Username (meistens eppn)
• eine E-Mail-Addresse (meistens mail oder email)
• ein Vorname (meistens givenName)
• ein Familienname (meistens sn)
In unserer Testumgebung kann dies durch das Verändern von /etc/shibboleth/shibboleth2.xml erreicht
werden:
und /etc/shibboleth/attribute-map.xml:
Starten Sie den Shibboleth Service neu:
service shibd restart
In ihrer virtuellen Host-Konfiguration (Apache2) fügen Sie folgendes hinzu:
SetHandler shib
AuthType shibboleth
require shibboleth
ShibRequireSession On
ShibUseHeaders On
In ihrer config/settings/local.py fügen Sie Folgendes hinzu oder entfernen die Kommentarsymbole:
from rdmo.core.settings import INSTALLED_APPS, AUTHENTICATION_BACKENDS, MIDDLEWARE_
˓→CLASSES
SHIBBOLETH = True
PROFILE_UPDATE = False
PROFILE_DELETE = False
INSTALLED_APPS += ['shibboleth']
AUTHENTICATION_BACKENDS.append('shibboleth.backends.ShibbolethRemoteUserBackend')
(Fortsetzung auf der nächsten Seite)
22 Kapitel 3. KonfigurationRDMO Documentation Documentation, Release 0.11
(Fortsetzung der vorherigen Seite)
MIDDLEWARE_CLASSES.insert(
MIDDLEWARE_CLASSES.index('django.contrib.auth.middleware.AuthenticationMiddleware
˓→') + 1,
'shibboleth.middleware.ShibbolethRemoteUserMiddleware'
)
SHIBBOLETH_ATTRIBUTE_MAP = {
'uid': (True, 'username'),
'givenName': (True, 'first_name'),
'sn': (True, 'last_name'),
'mail': (True, 'email'),
}
LOGIN_URL = '/Shibboleth.sso/Login?target=/projects'
LOGOUT_URL = '/Shibboleth.sso/Logout'
wobei die Werte von SHIBBOLETH_ATTRIBUTE_MAP, LOGIN_URL, und LOGOUT_URL entsprechend ihrem Se-
tup geändert werden müssen. Die Einstellung SHIBBOLETH = True deaktiviert das reguläre Login-Formular von
RDMO und deaktiviert das Udpateformular für das Benutzerprofil, so dass der Benutzer seine Zugangsdaten nicht
mehr ändern kann. Durch PROFILE_DELETE = False wird die Seite deaktiviert, auf der der Nutzer sein Profil
löschen kann. Da es RDMO unmöglich ist auf die Shibboleth Nutzerdatenbank schreibend zuzugreifen, sollten die
beiden genannten Seiten auf jeden Fall deaktiviert werden. Alles andere ist aus technischen Gründen nicht ratsam. Die
INSTALLED_APPS, AUTHENTICATION_BACKENDS, und MIDDLEWARE_CLASSES Einstellungen erlauben es,
den Django-Shibboleth-Remoteuser mit RDMO zu verwenden.
Starten Sie den Webserver neu.
service apache2 restart
3.5 Themen
3.5.1 Einleitung
RDMO nutzt Django, welches ein hohes Maß an Anpassungsfähigkeit durch eine eigene mächtige Methode bietet.
Templates und statische Assets (CSS-Dateien, Bilder, etc.) können mit geringem Aufwand eingebunden werden. Dies
erreicht man, indem man einen theme-Ordner innerhalb von rdmo-app erzeugt. Das Framework wird dann die
Dateien importieren, die in diesem theme-Ordner liegen und nicht die Gegenstücke aus dem Quellcode der RDMO-
Installation. Es ist also möglich den Satz der genutzten Dateien zu verändern, solange die Dateistruktur innerhalb von
theme analog zu der aus der RDMO-Installaion ist. Es gibt zwei Wege Themes zu erstellen.
3.5.2 Manuell erstellen
Wenn sie ein Theme von Hand erstellen möchten, sollten sie das Folgende tun.
1. Zunächst legen Sie innerhalb ihres rdmo-app-Verzeichnisses einen theme-Ordner mit einem static- und
einem templates-Ordner darin an:
mkdir theme theme/static theme/templates
2. Dann fügen Sie folgendes Ihrer config/settings/local.py hinzu:
3.5. Themen 23RDMO Documentation Documentation, Release 0.11
THEME_DIR = os.path.join(BASE_DIR, 'theme')
3. Kopieren Sie die Dateien, die sie modifizieren möchten in den theme-Ordner. Achten sie darauf, dass die rela-
tiven Pfade denen der Originaldaten der RDMO-Installation entsprechenden. Bitte schauen Sie in den Abschnit
weiter unten, in dem sich mehre Informationen finden.
3.5.3 Automatisch erstellen
Um das Erstellen von Themes zu vereinfachen gibt es ein manage.py Skript. Das Skript erstellt die Ordner theme/
static und theme/templates, kopiert ein grundlegenden Satz von Dateien in die Ordner und fügt den nötigen
Eintrag der local.py Konfiguration hinzu. Wenn Sie andere Dateien anpassen wollen, kopieren sie diese bitte von
Hand in die entsprechenden Ordner. Das Skript kann auf so genutzt werden:
python manage.py make_theme
3.5.4 Arbeiten mit Themes
Wenn sie die oben genannten Schritte durchgeführt haben überschreiben Templates und statische Dateien in ihrem
theme-Ordner die entsprechenden Originaldateien, solange sie den gleichen relativen Pfad besitzen, z.B. die Da-
tei theme/templates/core/base_navigation.html überschreibt rdmo/core/templates/core/
base_navigation.html.
Normalerweise befinden sich die Templates in Ihrer virtuellen Umgebung, z.B. /srv/rdmo/rdmo-app/env/
lib/python2.7/site-packages/rdmo/core/static/core/css/variables.scss. Der konkrete
Pfad ist abhängig von Ihrer Python Version und der verwendeten Plattform. Wir empfehlen daher, die Originaldatei aus
dem rdmo repository herunterzuladen. Für das Beispiel oben ist dies https://raw.githubusercontent.com/rdmorganiser/
rdmo/master/rdmo/core/static/core/css/variables.scss. Wenn Sie von Github runterladen achten Sie bitte darauf, die
blanken Text-Dateien zu beziehen. Wenn Sie versehentlich den Quellcode der Website nehmen, wird RDMO nicht
mehr funktionieren und einen Fehler ausgeben.
Einige Dateien, die Sie zur Anpassung verändern wollen:
SASS Variablen:
https://github.com/rdmorganiser/rdmo/blob/master/rdmo/core/static/core/css/variables.scss kann nach theme/
static/css/variables.scss kopiert werden und genutzt werden, um Farben anzupassen.
Navigationsleiste
https://github.com/rdmorganiser/rdmo/blob/master/rdmo/core/templates/core/base_navigation.html kann nach
theme/templates/core/base_navigation.html kopiert werden und genutzt werden, um die Navigati-
onsleiste anzupassen.
Homepage-Text
https://github.com/rdmorganiser/rdmo/blob/master/rdmo/core/templates/core/home_text_en.html und https:
//github.com/rdmorganiser/rdmo/blob/master/rdmo/core/templates/core/home_text_de.html können nach theme/
templates/core/home_text_en.html und theme/templates/core/home_text_de.html kopiert
werden und genutzt werden, um den Text der Homepage anzupassen.
24 Kapitel 3. KonfigurationRDMO Documentation Documentation, Release 0.11
Nutzerbedingungen
Der Inhalt, der in dem Nutzerbedingungen-Fenster erscheint, können durch Templates an der richtigen Stel-
le gesetzt werden. Für die verschiedenen Sprachen wird jeweils eine Datei benötigt, die sich wie folgt pla-
ziert werden müssen: theme/templates/account/terms_of_use_de.html und theme/templates/
account/terms_of_use_en.html. Setzen Sie die Variable ACCOUNT_TERMS_OF_USE auf True in Ihrer
config/settings/local.py, um die das Erscheinen der Nutzerbedingungen zu aktivieren.
Beachten Sie: Updates für das RDMO-Paket können die Veränderung des Theme inkompatibel werden lassen und
Fehler verursachen. In diesem Fall müssen die Dateien in theme so angepasst werden, dass die veränderten Funktio-
nalitäten von RDMO-Gegenstücken in ihren Dateien ebenfalls bereitgestellt werden.
3.6 Formate exportieren
RDMO unterstützt das Exportieren zu bestimmten Formaten mit Hilfe vom großartigen Pandoc Konvertierer. Die
Liste der zur Auswahl stehenden Formate kann angepasst werden indem die EXPORT_FORMATS-Einstellung in ihrem
config/settings/local.py konfiguriert wird.
EXPORT_FORMATS = (
('pdf', _('PDF')),
('rtf', _('Rich Text Format')),
('odt', _('Open Office')),
('docx', _('Microsoft Office')),
('html', _('HTML')),
('markdown', _('Markdown')),
('mediawiki', _('mediawiki')),
('tex', _('LaTeX'))
)
Die verschienden Formate, die von pandoc unterstützt werden, finden Sie auf der Pandoc-Homepage.
Das Seiten-Format und verschiedene andere Dinge, die Formatierung und Aussehen von Textdokumenten betreffen,
können mit Hilfe von Referenzdokumenten angepasst werden. Die Pandoc-Dokumentation hält eine ausführliche Liste
der unterstützten Einstellungen bereit, die unterhalb des Paragraphen ‚–reference-doc‘ eingesehen werden kann. Re-
ferenzdokumente können für die Formate .docx und .odt verwendet werden. Welche Datei als Referenzdokument
dient, wird in der config/settings/local.py definiert. Wenn diese Einträge nicht in Ihrer Konfiguration sind,
werden die Standard-Referenzdokumente aus der RDMO-Installation verwendet.
EXPORT_REFERENCE_DOCX='FULL PATH OF YOUR REFERENCE DOCX'
EXPORT_REFERENCE_ODT='FULL PATH OF YOUR REFERENCE ODT'
3.7 Cache
RDMO benutzt einen Cache für einige seiner Seiten. Im Entwicklungsmodus ist dies mit einem local-memory Caching
gemacht. Im Betrieb empfehlen wir Memcached zu nutzen. Memcached kann auf Debian/Ubuntu wie folgt installiert
werden:
sudo apt install memcached
Auf RHEL/CentOS sind weitere Schritte notwendig. Installieren Sie zunächst die Pakete:
sudo yum install memcached
3.6. Formate exportieren 25RDMO Documentation Documentation, Release 0.11
Danach veränderen Sie die Einstellungen, um externe Verbindungen zu verhindern:
# in /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1"
Dann starten Sie den Service:
systemctl start memcached
systemctl enable memcached
Zurück in ihrer virtuellen Umgebung müssen Sie Python-memcached installieren:
pip install -r requirements/memcached.txt
und fügen Sie zu config/settings/local.py folgende Zeiten hinzu:
CACHES = {
{
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'KEY_PREFIX': 'rdmo_default'
},
'api': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'KEY_PREFIX': 'rdmo_api'
}
}
3.8 Protokollieren
Das Protokollieren (Schreiben von Logs) kann in Django sehr komplex werden und ist ausführlich in der Django
Dokumentation erklärt. Für ein zu RDMO passendes Protokollieren ergänzen Sie folgende Zeilen in ihrer config/
settings/local.py :
import os
from . import BASE_DIR
LOGGING_DIR = '/var/log/rdmo/'
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue'
}
},
'formatters': {
(Fortsetzung auf der nächsten Seite)
26 Kapitel 3. KonfigurationRDMO Documentation Documentation, Release 0.11
(Fortsetzung der vorherigen Seite)
'default': {
'format': '[%(asctime)s] %(levelname)s: %(message)s'
},
'name': {
'format': '[%(asctime)s] %(levelname)s %(name)s: %(message)s'
},
'console': {
'format': '[%(asctime)s] %(message)s'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'error_log': {
'level': 'ERROR',
'class':'logging.FileHandler',
'filename': os.path.join(LOGGING_DIR, 'error.log'),
'formatter': 'default'
},
'rdmo_log': {
'level': 'DEBUG',
'class':'logging.FileHandler',
'filename': os.path.join(LOGGING_DIR, 'rdmo.log'),
'formatter': 'name'
},
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'console'
}
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'INFO',
},
'django.request': {
'handlers': ['mail_admins', 'error_log'],
'level': 'ERROR',
'propagate': True
},
'rdmo': {
'handlers': ['rdmo_log'],
'level': 'DEBUG',
'propagate': False
}
}
}
Dies produziert zwei Log-Dateien:
• /var/log/rdmo/error.log wird Ausnahme-Nachrichten von Anwendungsfehlern enthalten (Statusco-
de: 500). Diese Nachrichten entsprechen denen, die DEBUG = True erzeugt. Im normalen Betrieb sollen
3.8. Protokollieren 27RDMO Documentation Documentation, Release 0.11
solche Meldungen nicht vorkommen. Hinzukommt eine E-Mail an alle Admins, die in der ADMINS-Einstellung
konfiguriert sind.
• /var/log/rdmo/rdmo.log sind weitere Log-Informationen vom RDMO-Code enthalten.
28 Kapitel 3. KonfigurationKAPITEL 4
Administration
Das Django-Framework bietet ein reichhaltiges Administrationsinterface (kurz Admin-Interface), das Ihnen erlaubt
die meisten Einträge in der Datenbank direkt zu verändern. Natürlich können nur Benutzer mit den entsprechenden
Berechtigungen dieses Interface benutzen. Der Benutzer, der während der Installation mit Hilfe von ./manage.py
createsuperuser erstellt wurde, hat diesen Superuser-Status.
Das Admin-Interface ist unter dem Link Admin in der Navigationsleiste verfügbar. Es wird nur in seltenen Fällen be-
nutzt, da die meisten Konfigurationen des Fragebogens und andere Funktionen von RDMO über das benutzerfreund-
liche Management-Interface geändert werden können wie in dem folgenden Kapitel der Dokumentation beschrieben.
Das Admin-Interface wird nach der Installation benötigt, um den Titel und die URI auf der Website zu ändern, um die
Benutzer und Gruppe zu konfigurieren, um die Verbindung zu OAuth Anbietern zu konfigurieren und die mit der API
genutzten Tokens zu ändern.
4.1 Site einrichten
Screenshot vom Admin-Interface
29RDMO Documentation Documentation, Release 0.11
RDMO benutzt das Sites framework von Django. Es ist daher notwendig den Domänenamen and den Anzeigename
ihrer RDMO-Installation einzurichten. Dies kann in dem Admin-Interface unter Site getan werden. Die Seite richten
Sie wie folgt ein:
1. Klicken Sie auf den bereits eingerichten Domainnamen example.com.
2. Geben Sie die URI ihrer RDMO-Installation als Domänenamen ein (z.B. rdmo.aip.de).
3. Geben Sie den Titel ihrer RDMO-Installation als Anzeigenamen an (z.B. RDMO Demo).
4. Klicken sie auf Speichern.
4.2 Benutzer und Gruppen
Die Benutzer und Gruppen ihrer RDMO-Instanz werden unter Authentifizierung und Authorisierung verwaltet. Sie
können Benutzer erstellen, verändern und deren Passwörter direkt setzen, wobei dies meist von den Benutzern selbst
über das Account-Menü getan wird.
Der mit der Installation erstellte Benutzer hat zu allen Features von RDMO Zugang. Um anderen Benutzern den
Zugang zum Management oder dem Admin-Interface zu gewähren, müssen ihnen die notwendigen Rechte zugewiesen
werden. Dies kann auf zwei Arten erfolgen: durch die Gruppenzuordnung oder durch das Superuser-Flag.
4.2.1 Gruppen
Während der Installation erstellt das ./manage create-groups Kommando drei Gruppen:
Editor
Benutzer der Editorgruppe haben Zugang zum Management Interface und können alle Elemente des Datenmodells
editieren, mit Ausnahme der Benutzerdaten, die über das strukturierte Interview eingegeben wurden.
Reviewer
Benutzer der Reviewergruppe haben Zugang zum Management Interface wie die Editoren, jedoch ist es ihnen nicht
gestattet, dort Veränderungen vorzunehmen (Speichern von Änderungen nicht erlaubt). Diese Gruppe kann verwendet
werden, um ausgewählten Benutzern lesenden Zugriff auf das Management-Backend zu erlauben.
API
Benutzer der API-Gruppe können eine programmierbare API verwenden, um auf alle Elemente des Datenmodels
zuzgreifen. Sie benötigen einen Token, um einen API-Klienten nutzen zu können.
Bereits existierende Benutzer können diesen Gruppen zugeordnet werden, um Zugang zu diesen Funktionen zu erhal-
ten:
1. Klicken Sie auf Benutzer unter Authentifizierung und Autorisierung im Admin-Interface.
2. Klicken Sie auf den zu bearbeitenen Benutzer.
3. Klicken Sie auf die Gruppe zu dem der Benutzer hinzugefügt werden soll in dem Verfügbare Gruppen-Feld.
4. Klicken Sie auf den kleinen Pfeil, um die Gruppe zu dem Gewählte Gruppen-Feld zu bewegen.
5. Speichern Sie den Benutzer.
30 Kapitel 4. AdministrationRDMO Documentation Documentation, Release 0.11 4.2.2 Superuser Superuser verfügen alle Rechte und alle Rechteüberprüfungs-Routinen geben einen positiven Wert zurück. Dies er- möglicht ihnen nicht nur den Zugang zu den Management- und Admin-Interfaces, sondern auch den Zugang zu den Daten von allen anderen Benutzern (einschließlich der Projektseite). Um einem Benutzer Superuser-Privilegien zuzuweisen, gehen Sie wie folgt vor: 1. Klicken Sie auf Benutzer unter Authentifizierung und Autorisierung im Admin-Interface. 2. Klicken Sie auf den gewünschten Benutzer. 3. Kreuzen Sie die Box Superuser-Status an. 4. Speichern Sie den Benutzer. 4.3 Social Accounts Falls Sie django-allauth für die Authentifizierung verwenden und RDMO konfiguriert haben, um ein oder mehre- re OAuth-Anbieter zu verwenden (wie im Konfiguration Kapitel) beschrieben, müssen Sie ihre RDMO-Website bei diesen Services registrieren. Die Vorgehensweise ist jeweils verschieden. Meistens müssen Sie einige Informationen zu ihrer Website angeben. Es wird immer eine Redirect- oder Callback-URI verlangt. Im folgenden werden wir als Beispiel http://127.0.0.1:8000 verwenden (welche auf dem Entwicklungsserver funktioniert). Diese muss durch die richtige URI ihrer RDMO-Anwendung dann im Betrieb ersetzt werden. 4.3.1 ORCID Loggen Sie sich bei https://orcid.org ein und gehen Sie auf die Seite mit den Entwicklungstools: https://orcid.org/ developer-tools. Erstellen Sie eine App mit der Umleitungs-URI. http://127.0.0.1:8000/account/orcid/login/callback/ 4.3.2 GitHub Loggen Sie sich bei GitHub ein und gehen Sie auf https://github.com/settings/applications/new, um eine neue App zu erstellen. Verwenden Sie: http://127.0.0.1:8000/account/github/login/callback/ 4.3.3 Facebook Loggen Sie sich bei Facebook ein und gehen Sie auf https://developers.facebook.com. Klicken Sie oben rechts im Menü auf Meine Apps und wählen Sie Neue App hinzufügen. Erstellen Sie eine neue App. In dem darauffolgenden Fenster wählen Sie Facebook Login -> Starten und wählen Web als Plattform. Fügen Sie eine URI ein, unter der ihre Anwendung zugänglich ist (Beachten Sie: 127.0.0.1 wird nicht funktionieren.). Zurück zum Dashboard, gehen Sie zu Einstellungen -> Grundeinstellungen und kopieren App ID und das App Secret. 4.3.4 Twitter Loggen Sie sich bei Twitter ein und gehen Sie auf https://apps.twitter.com/app/ne, um eine neue App zu erstellen. 4.3. Social Accounts 31
Sie können auch lesen