Installationsanleitung¶
- Installationsanleitung
- Installation
- Konfiguration
Systemvorraussetzungen¶
CPU¶
Wir empfehlen eine mittlere 4 Kern CPU
Memory¶
Der Speicherbedarf ist abhängig von Nutzer und Zugriffszahlen und kann bei Installationen für eine größere Anzahl von Schulen steigen. Wir empfehlen mindestens 4 GB RAM
Harddrive¶
Das VSB selber benötigt max. 500 MB Platz im laufenden Betrieb. Für Datenbank und Dateien sollten 200 GB zur verfügung stehen. Abhängig von der Anzahl der geführten Schulen ist auch hier ein höherer Speicherbedarf zu erwarten.
Bandwidth¶
Mindestens 100 Mbit/s WAN anbindung
Empfohlene Umgebung¶
Debian GNU Linux 8 / Ubuntu 16.04 LTS
ruby2.4
postgresql-9.6
ImageMagick 7+
wkhtmltopdf 0.12.4+
Unterstützte Umgebung¶
Server
Server OS: any Linux
Ruby: ruby2.2+ evtl. JRuby 9.x (not well tested)
postgresql-9.4+
wkhtmltopdf 0.12.4+
ImageMagick 6+
Client¶
Desktop: Windows 7+, MacOS X 10.7+, Linux
Web Browser: IE11+, Microsoft Edge, Firefox 14+, Chrome 18+
Installation¶
Dieser Abschnitt beschreibt die Installation des virtuellen Schulboards. Ein Upgrade wird am Ende des Dokumentes beschrieben.
Es wird davon ausgegangen, das Sie einen Ansprechpartner bei er Universität zu Köln für die Installation der Software haben. Die Installation erfordert eine Registrierung durch Ihren Ansprechpartner. Ohne Registrierung ist die Installation nicht nutzbar, da die Kommunikation mit dem Schulboardnetzwerk verweigert wird.
Bitte erfragen Sie von Ihrem Ansprechpartner eine Registrierung für die Domain, unter der Sie das Virtuelle Schulboard hosten wollen. Sie bekommen dann folgende Informationen:
VSB_ID
VSB_API_KEY
CSB_API_KEY
Nach Durchführung aller Schritte ist das System für die erstmalige Konfiguration über das Webinterface bereit.
Vorbereiten der Installation¶
Das für die Installation benötigte Archiv kann heruntergeladen werden. Downloads
Der vorgeschlagene Installationsort ist /opt/vschoolboard. Dieses Verzeichnis ist im folgenden das Arbeitsverzeichnis, wenn nicht anders angegeben. Alle vorkommen von <version> müssen durch die oben angegebene Version ersetzt werden. Der Benutzer <user> ist der Benutzer, unter dem der Ruby Applicationserver ausgeführt werden wird.
Entpacken Sie das Archiv folgendermaßen:
$user> sudo -i $root> mkdir /opt/vschoolboard; cd /opt/vschoolboard $root> tar -xzf vsb-<version>.tar.gz
Benutzerdaten und Anwendung werden getrennt.
vsb | Applikationsdaten |
data | Benutzerdaten |
Führen Sie folgende Befehle aus:
$root> mv ./src ./vsb; rm vsb-*.tar.gz $root> mkdir -p ./data/uploads; ln -s /opt/vschoolboard/data/uploads /opt/vschoolboard/vsb/public/uploads
Um ein unkontrolliertes Anwachsen des Speicherbedarfs zu vermeiden, empfiehlt es sich eine Logrotationsdirektive einzurichten.
Führen Sie folgendes aus:
$root> echo "/opt/vschoolboard/vsb/log/*.log { daily missingok rotate 7 compress delaycompress notifempty copytruncate } /opt/vschoolboard/vsb/log/*.std* { daily missingok rotate 7 compress delaycompress notifempty copytruncate }" >> /etc/logrotate.conf
Installation von Abhängigkeiten¶
Abhängig von der Umgebung gibt es verschiedene Möglichkeiten die Abhängigkeiten zu installieren. Nach Möglichkeit sollte immer der Paketmanager verwendet werden.
ruby2.3 ruby2.3-dev | Ruby Interpreter. Alternativ auch JRuby 9.x |
postgresql-9.5 libpq-dev | Postgresql Datenbank |
wkhtmltopdf | Für Pdf erzeugung |
imagemagick | Für Sklarierung/Bearbeitung von Bilderuploads |
Führen Sie folgendes aus:
$root> apt-get update $root> apt-get install ruby2.3 ruby2.3-dev $root> gem install bundler $root> apt-get install postgresql-9.5 libpq-dev wkhtmltopdf imagemagick
Verzeichnisrechte¶
Die Verzeichnisberechtigungen für den Applikationsserver und den Webproxy sollten angepasst werden. Die korrekten Berechtigungen sind mit den Standardberechtigungen schwer umzusetzen. Daher können die Berechtigungen optional, wenn bereits erweiterte ACL‘s verwendung finden, damit eingerichtet werden.
Folgende Berechtigungen sind notwendig und auch ausreichend.
Verzeichnis | Applicationserver | Proxy-Webserver |
/opt/vschoolboard/data | Lese und Schreibzugriff | Lesezugriff |
/opt/vschoolboard/vsb/log | Lese und Schreibzugriff | Kein Zugriff |
/opt/vschoolboard/vsb/tmp | Lese und Schreibzugriff | Kein Zugriff |
/opt/vschoolboard/vsb/ | Lesezugriff | Kein Zugriff |
Einfache Verzeichnisrechte¶
In diesem Szenario gilt:
<group> ist die gruppe, der der Proxy-Webserver angehört. Der Benutzer, unter dem der App-Server ausgeführt wird, muss dieser Gruppe auch angehören. Benutzer <user> ist der Benutzer, der die Installation und später auch Updates durchführt.
Einfache Verzeichnisrechte geben dem Webproxy mehr Rechte als er benötigt.
Für einfache Verzeichnisrechte führen Sie aus:
$root> mkdir -p ./vsb/log ./vsb/tmp ./vsb/tmp/pids $root> chown -R <user>:<group> ./ $root> chmod -R 750 ./ $root> chmod -R 770 ./data $root> chmod -R 770 ./vsb/log $root> chmod -R 770 ./vsb/tmp
Ruby Gems¶
$user> cd ./vsb $user> bundler install --deployment
Datenbank erstellen¶
Erstellen Sie die Datenbank für das Schulboard. Es empfiehlt sich regelmäßige Backups des Datenbestandes durchzuführen. Informationen hierzu finden Sie unter https://www.postgresql.org/docs/9.6/static/backup.html
Die Daten im Verzeichnis /opt/vschoolboard/data sollten ebenfalls regelmäßig gesichert werden.
$user> sudo -i $root> su - postgres $postgres> psql -c "CREATE USER vschoolboard WITH PASSWORD '************';" $postgres> psql -c "CREATE DATABASE vschoolboard WITH OWNER 'vschoolboard' ENCODING 'utf8';" $postgres> exit
Cron¶
Um den Administrationsaufwand gering zu halten, werden regelmäßige Wartungsaufgaben automatisiert. Hierfür muss ein Crontabeintrag vorgenommen werden. Bestimmen Sie zunächst den Pfad für den Ruby-Paketmanager „bundler“. <bundle executable> bezieht sich auf diesen Pfad.
Führen Sie folgendes aus:
$root> exit $user> whereis bundle $user> crontab -e
Folgende Einträge machen:
# m h dom mon dow command 0 0 * * * cd ~/opt/vschoolboard && RAILS_ENV=production <bundle executable> exec rake vsb:cron['daily'] 0 0 * * 1 cd ~/opt/vschoolboard && RAILS_ENV=production <bundle executable> exec rake vsb:cron['weekly'] 0 0 1 * * cd ~/opt/vschoolboard && RAILS_ENV=production <bundle executable> exec rake vsb:cron['monthly'] 0 0 * 1 * cd ~/opt/vschoolboard && RAILS_ENV=production <bundle executable> exec rake vsb:cron['annually']
Konfiguration¶
Im folgenden wird die Applikation und der Applikationsserver konfiguriert und das Datenbankschema initialisiert. Die Applikation wird zunächst einmal nur auf dem localhost durch den Applicationserver bereitgestellt. Später wird ein existierender Webserver als reverse-proxy eingerichtet, um den öffentlichen Zugriff zu ermöglichen.
Hauptkonfigurationsdatei¶
In der Regel muss nur diese Datei eingerichtet werden.
Im Verzeichnis /opt/vschoolboard/vsb: kopieren Sie zunächst das Template:
$user> cp config/local_env.tmpl.yml config/local_env.yml $user> vi config/local_env.ymlPassen Sie danach die Einträge in der Datei an:
Key | Funktion | Eintrag |
CSB_API_DOMAIN | Verbindung mit zentralem Schulboard | https://virtuelles-schulboard.de |
VSB_ID | Eindeutige ID für diese Installation | Bei der Registrierung erhaltene ID |
VSB_API_KEY | Token, das beim Zugriff auf die eigene Webschnittstelle geprüft wird. | Bei der Registrierung erhaltener Key |
CSB_API_KEY | Token, dass beim Zugriff auf die Webschnittstelle des zentralen Schulboards geprüft wird. | Bei der Registrierung erhaltener Key |
SECRET_KEY_BASE | Für Cookie signaturen. | Ausgabe von:$user> rake secret |
VSCHOOLBOARD_DATABASE_ADAPTER | Datenbankzugriff | postgresql |
VSCHOOLBOARD_DATABASE_ENCODING | Datenbankzugriff | unicode |
VSCHOOLBOARD_DATABASE_CONNECTION_POOL | Datenbankzugriff | 16 |
VSCHOOLBOARD_DATABASE_USER | Datenbankzugriff | vschoolboard |
VSCHOOLBOARD_DATABASE_DB_NAME | Datenbankzugriff | vschoolboard |
VSCHOOLBOARD_DATABASE_PASSWORD | Datenbankzugriff | Das zuvor gesetzte Passwort |
VSCHOOLBOARD_DATABASE_HOST | Datenbankzugriff | localhost |
MAILER_DELIVERY_METHOD | Versandart | 'smtp' oder 'sendmail' |
MAILER_FROM | Absenderadresse für systemmails | gewünschte email |
MAILER_REPLY_TO | Antwortadresse für systemmails | gewünschte email |
MAILER_SMTP_ADDRESS | SMTP server domain | Nur für MAILER_DELIVERY_METHOD=smtp |
MAILER_SMTP_PORT | SMTP server port | Nur für MAILER_DELIVERY_METHOD=smtp |
MAILER_SMTP_DOMAIN | HELO domain, i.d.R. der schulboardserver selber | Nur für MAILER_DELIVERY_METHOD=smtp |
MAILER_SMTP_USER_NAME | SMPT authentification benutzer | Nur für MAILER_DELIVERY_METHOD=smtp |
MAILER_SMTP_PASSWORD | SMPT authentification passwort | Nur für MAILER_DELIVERY_METHOD=smtp |
MAILER_SMTP_AUTHENTICATION | authentication type: 'plain' (clear password), 'login' (base64 password), 'cram_md5' | Nur für MAILER_DELIVERY_METHOD=smtp |
MAILER_SMTP_ENABLE_STARTTLS_AUTO | 'true' oder 'false' | Nur für MAILER_DELIVERY_METHOD=smtp |
MAILER_SMTP_OPENSSL_VERIFY_MODE | type of certificate check by OpenSSL: 'none' oder 'peer' | Nur für MAILER_DELIVERY_METHOD=smtp |
MAILER_SENDMAIL_LOCATION | sendmail executable: defaults to '/usr/sbin/sendmail' | Nur für MAILER_DELIVERY_METHOD=sendmail |
MAILER_SENDMAIL_ARGUMENTS | sendmail arguments: defaults to '-i' | Nur für MAILER_DELIVERY_METHOD=sendmail |
Es gibt weitere Konfigurationsdateien, die aber in der Regel nicht angepasst werden müssen. Führen Sie folgendes aus:
$user> cp config/environments/production.tmpl.rb config/environments/production.rb $user> cp config/puma/production.tmpl.rb config/puma/production.rb $user> cp config/database.tmpl.yml config/database.yml
Datenbank initialisieren¶
Führen Sie folgendes aus um die Datenbank zu initialisieren:
$user> RAILS_ENV=production rake vsb:initialize
Assets vorbereiten¶
Führen Sie folgendes aus um die statischen Inhalte zusammenzustellen:
$user> RAILS_ENV=production rake assets:precompile
Startscripte erstellen¶
Es werden init scripte für den Applicationserver und die MessageQueue erstellt. Die MessageQueue wird als abhängigkeit für den AppServer definiert, daher ist für den Start der Applikation letztlich nur ein init-script verantwortlich.
<user> ist in den Startscripten der Benutzer, unter dem der Applicationserver laufen soll. Achten Sie darauf, dass er der Gruppe angehört, die Verzeichnisberechtigungen hat.
Applikationsserver¶
Erstellen Sie ein Startscript:
$user> sudo -i $root> vi /etc/systemd/system/vschoolboard-app.service
Mit folgendem Inhalt:
[Unit] Description=Application Server virtuelles Schulboard Requires=vschoolboard-mq.service [Service] Type=oneshot ExecStart=/opt/vschoolboard/vsb/srvctl.sh start production ExecStop=/opt/vschoolboard/vsb/srvctl.sh stop RemainAfterExit=yes User=<user> [Install] WantedBy=multi-user.target
Message queue¶
Erstellen Sie ein Startscript:
$root> vi /etc/systemd/system/vschoolboard-mq.service
Mit folgendem Inhalt:
[Unit] Description=Message Queue virtuelles Schulboard [Service] Type=simple ExecStart=/opt/vschoolboard/vsb/mqctl.sh start production ExecStop=/opt/vschoolboard/vsb/mqctl.sh stop production User=<user> [Install] WantedBy=multi-user.target
Aktivieren Sie die Startscripte:
$root> systemctl enable vschoolboard-app.service $root> systemctl enable vschoolboard-mq.service
Webproxy einrichten¶
Zur Einrichtung eines reverse-proxy können verschiedene Webserver zum Einsatz kommen. Die Einrichtung wird am Beispiel Apache beschrieben. Sollte der Proxy nicht auf dem selben System laufen wie der Application Server, muss der Application Server an eine Netzwerkadresse binden, die der Proxy erreichen kann.
$user> vi config/puma/production.rb
Hier den Eintrag bind 'tcp://127.0.0.1:9292' entsprechend anpassen. Dies ist auch nötig, wenn der Port 9292 bereits in Verwendung ist.
Virtuellen Host einrichten¶
Apache¶
Erstellen Sie einen virtuellen Host:
$root> vi /etc/apache2/sites-available/001-vschoolboard.conf
Und tragen Sie ein:
<VirtualHost *:80> DocumentRoot /opt/vschoolboard/vsb/public ServerName <schulboard-domain> ServerSignature Off ProxyRequests Off <Proxy *> Order Allow,Deny Allow from all </Proxy> <Location /assets> ProxyPass ! Require all granted </Location> ProxyPass / http://127.0.0.1:9292/ retry=0 timeout=5 ProxyPassReverse / http://127.0.0.1:9292/ ProxyVia On </VirtualHost>
Die Konfiguration aktivieren:
$root> a2ensite 001-vschoolboard.conf $root> a2enmod proxy $root> a2enmod proxy_http $root> service apache2 restart
Nginx¶
Besipielkonfiguration für Nginx
upstream puma_vschoolboard { server http://127.0.0.1:9292 } server { server_name <domain>; listen 80; root /opt/vschoolboard/vsb/public; underscores_in_headers on; location / { try_files $uri/index.html $uri.html $uri @ruby; } location @ruby { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; proxy_read_timeout 300; proxy_pass http://puma_vschoolboard; } }
SSL einrichten¶
Die Anwendung sollte ausschliesslich per SSL erreichbar sein. Die Einrichtung ist nicht mehr Gegenstand dieser Dokumentation. Siehe z.B: https://httpd.apache.org/docs/2.4/ssl/
Installation abschliessen¶
Die Installation ist abgeschlossen. Starten Sie jetzt den App-Server und rufen sie das Schulboard im Browser auf:
$root> systemctl start vschoolboard-app.service
Sollten Sie die Meldung „Registrierung noch nicht durchgeführt“ erhalten, kontaktieren Sie Ihren Ansprechpartner. Ansonsten können Sie den einmaligen Setup-Prozess durchführen.
Die folgenden Schritte werden nacheinander über das Web-UI abgearbeitet, nach dem Abschluss des Setups ist dieses nicht mehr verfügbar.
Grundlegende Systemeinstellungen¶
Geben Sie den Namen dieser Installation an. Der Name wird beim Login und in der Menüleiste angezeigt.
Wählen Sie das Bundesland für diese Installation. Dies bestimmt, welche Regelsätze für den Ablauf von Fördermassnahmen verwendet werden.
Administratorzugang anlegen¶
Der Administrator bekommt unabänderliche Berechtigungen um Einrichtungen und Personen anzulegen.
Oberste Organisationseinheit anlegen¶
Tragen Sie hier die Einrichtung ein, der alle anderen Bildungseinrichtungen in dieser Installation untergeordnet sein werden.
Setup abgeschlossen¶
An dieser Stelle ist das Setup abgeschlossen und nicht mehr verfügbar. Sie sehen jetzt die gerade angelegt Einrichtung. Nutzen Sie die weitere Dokumentation für administrative Benutzer um das System weiter einzurichten und Mitarbeiter und Lehrer und Bildungseinrichtungen zu erstellen.