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 i
6 Upgrade 53 6.1 Upgrade to version 0.9.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 ii
RDMO 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 1
RDMO 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. 3
RDMO 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. Installation
RDMO 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 5
RDMO 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. Installation
RDMO 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 7
RDMO 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. 9
RDMO 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. Einsatz
RDMO 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 11
RDMO 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. Einsatz
RDMO 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 13
RDMO 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' 15
RDMO 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. Konfiguration
RDMO 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 17
RDMO 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. Konfiguration
RDMO 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 19
RDMO 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. Konfiguration
RDMO 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 21
RDMO 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. Konfiguration
RDMO 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 23
RDMO 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. Konfiguration
RDMO 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 25
RDMO 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. Konfiguration
RDMO 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 27
RDMO 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. Konfiguration
KAPITEL 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 29
RDMO 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. Administration
RDMO 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