Inhaltsverzeichnis
Masterserver
Grundsystem
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
sudo apt-get install apache2 php5.6-mysql mysql-server php5.6 php5.6-mysql php5.6-curl php5.6-gd php5.6-intl php-pear php5.6-imagick php5.6-imap php5.6-mcrypt php5.6-memcache php5.6-pspell php5.6-recode php5.6-snmp php5.6-sqlite php5.6-tidy php5.6-mbstring php5.6-xmlrpc php5.6-xsl git openjdk-11-jre-headless
Apache 2
sudo a2enmod php5.6
sudo a2enmod rewrite
sudo service apache2 restart
mySQL
mysql -u root
CREATE DATABASE master
CREATE USER 'master'@'localhost' IDENTIFIED BY 'master';
GRANT ALL PRIVILEGES ON master.* TO 'master'@'localhost';
FLUSH PRIVILEGES;
quit
mysql -u master -p master < database.sql
mysql -u master -p master < content.sql
Masterserver
- Eclipse installieren und nach dem Readme ein JAR-File kompilieren.
- JAR auf den Server kopieren
mkdir /opt/masterserver && cd /opt/masterserver
mkdir config
wget https://git.openslx.org/bwlp/masterserver.git/plain/config/global.properties.example -O config/global.properties
wget https://git.openslx.org/bwlp/masterserver.git/plain/config/mysql.properties.example -O config/mysql.properties
mkdir /var/mnt/images -p
keytool -genkey -keyalg RSA -alias master -keystore config/masterserver.jks -validity 365 -keysize 2048
(temporär selbstsigniert)nano config/global.properties
⇒ Keystore Alias und Passwort anpassennano config/mysql.properties
⇒ DBName, User und PW anpassen
Datenbank
mysql -u master -p master
INSERT INTO organization (organizationid, name, authmethod, publickey) VALUES ('hochschule-rhein-waal.de', 'Hochschule Rhein-Waal', 'https://lehrpool.hochschule-rhein-waal.de/Shibboleth.sso/SAML2/ECP','');
(Shib-Teil unsicher)INSERT INTO organization_suffix (organizationid, suffix) VALUES ('hochschule-rhein-waal.de', 'hochschule-rhein-waal.de');
INSERT INTO user (userid, password, organizationid, firstname, lastname, email, fixedname) VALUES ('master@master.lc', '$6$eb20be7a4c353a2f$6gILRMb4OH.lTGWc.K4vU2AN3cfR9zX9sVaPQbOQ8zFovxfvMW1jGe0JLGmKWHJ9T4LEq3UJErApmpfPVcVyF.', 'hochschule-rhein-waal.de', 'Mr', 'Master', 'master@lehrpool.hochschule-rhein-waal.de', 1);
INSERT INTO satellite (organizationid, satellitename, addresses, publickey, dateline, userid) VALUES ('hochschule-rhein-waal.de', 'Test1', '["hostname","10.100.61.92"]', NULL, '0', NULL);
quit
Webinterface
Basic
cd /opt
cp config.php.example config.php
vi config.php
define('CONFIG_PREFIX', '/');
define('CONFIG_FORCE_DOMAIN', 'master.lehrpool.hochschule-rhein-waal.de');
$lines = @file('/opt/masterserver/config/mysql.properties', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
nano /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /opt/bwlp-webadmin ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /opt/bwlp-webadmin> Options -Indexes +FollowSymLinks +Includes AllowOverride All Order allow,deny Allow from All Require all granted </Directory> </VirtualHost>
mkdir img && wget https://www.hochschule-rhein-waal.de/sites/default/themes/at_hrw/logo.png -O img/bwLehrpool_198x46.png
(quick'n'dirty)
SSL
sudo a2ensite default-ssl
sudo vi /etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /opt/bwlp-webadmin/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/master.crt SSLCertificateKeyFile /etc/apache2/ssl/master.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> <Directory /opt//bwlp-webadmin> Options -Indexes +FollowSymLinks +Includes AllowOverride All Order allow,deny Allow from All Require all granted </Directory> </VirtualHost> </IfModule>
sudo a2enmod ssl
cd /etc/apache2 && sudo mkdir ssl && cd ssl
sudo openssl req -new -newkey rsa:4096 -nodes -keyout master.key -out master.csr
- Zertifikat beantragen und nach
/etc/apache2/ssl/master.crt
kopieren sudo /etc/init.d/apache2 restart
Service
cd /opt/masterserver
java -jar image-master-1.0-SNAPSHOT-jar-with-dependencies.jar
(Als Test, exit mit CTRL-C)sudo nano /etc/systemd/system/masterserver.service
[Unit] Description=Lehrpool Masterserver [Service] User=master WorkingDirectory=/opt/masterserver ExecStart=/opt/masterserver/systemd.sh SuccessExitStatus=143 TimeoutStopSec=10 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
cd /opt/masterserver && sudo vi systemd.sh
#!/bin/sh /usr/bin/java -Djava.net.preferIPv4Stack=true -jar /opt/masterserver/image-master-1.0-SNAPSHOT-jar-with-dependencies.jar
sudo chown master systemd.sh
sudo chmod u+x systemd.sh
sudo systemctl daemon-reload
sudo systemctl enable masterserver.service
sudo systemctl start masterserver
systemctl status masterserver.service
Masterserver SSL
sudo cat /etc/apache2/ssl/master.crt chain.txt > all.pem
sudo openssl pkcs12 -export -in all.pem -inkey /etc/apache2/ssl/master.key -name master.lehrpool.hochschule-rhein-waal.de -out master.p12
- Leeren Keystore erstellen:
keytool -genkey -alias foo -keystore master.jks
keytool -delete -alias foo -keystore master.jks
sudo keytool -importkeystore -deststorepass master -destkeystore master.jks -srckeystore master.p12 -srcstoretype PKCS12
sudo cp master.jks /opt/masterserver/config/masterserver.jks
sudo systemctl restart masterserver
Satellit
vi /opt/dmsd/config.properties
master.address = master.lehrpool.hochschule-rhein-waal.de
(Wenn die Optionen fehlen, nutzt der Satellit SSL)master.port = 9090master.ssl = false:wq
reboot
Suite
- In Eclipse importieren
/bwsuite/dozentenmodul/src/main/properties/branding.properties
anpassen:masterserver.address=master.lehrpool.hochschule-rhein-waal.de;
- Run ⇒ Run As ⇒ maven install
- JAR liegt im Ordner
target
java -jar dozmod-client-1.0-SNAPSHOT-jar-with-dependencies.jar
Die command line parameter(scheint jetzt zu gehen [Boolen.parse])host port useSSL
funktionieren nach unseren Tests nicht.
Finetuning
- im Webinterface des Masterservers können Testuser angelegt werden.
- in der Tabelle users muss für die Spalte fixedname vorher ein Default Wert (0) konfiguriert werden
- die shibid des Users, der Adminrechte haben soll, muss in
inc/user.inc.php
config.php
eingetragen werden
- die Spalte „password“ muss null erlauben, damit sich shib-user registrieren können (qnd fix). Denkbar wäre auch ein default-Wert. Beides ist irgendwie meeeh.
DFN AAI
Neuen Satellitenserver anlegen
INSERT INTO satellite (organizationid, satellitename, addresses, publickey, dateline, userid) VALUES ('hochschule-rhein-waal.de', 'Test1', '["hostname","10.100.61.92"]', NULL, '0', NULL);
- organizationid: Die ID, die bei der scopedAffiliation im DFN-AAI hinter dem @ steht. Nur Usern dieser org wird der Satellit angezeigt.
- satellitename: Anzeigename, wird in der Suite nach dem Anmelden angezeigt
- addresses: JSON-Array mit Netzwerkadressen. Einzelne Adressen in Double Quotes.
Die Syntax ist genau einzuhalten!
- z.B.:
- ["192.168.1.10"]
- ["hostname.tld.local", "10.1.1.100"]
- publickey: Zweck unbekannt
- dateline: Zweck unbekannt
- userid: Zweck unbekannt, muss aber NULL sein (Ansonsten wird der Sat nicht in der
shib/api.php
gelistet)