RDMO Documentation Documentation - Release 0.11 RDMO project - Read the Docs

Die Seite wird erstellt Nathaniel Link
 
WEITER LESEN
RDMO Documentation Documentation - Release 0.11 RDMO project - Read the Docs
RDMO Documentation Documentation
                        Release 0.11

                       RDMO project

                             22.04.2019
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