ILIAS-Tricks not only for Schools

Einen Webserver mit VirtualBox installieren

[wolfganghuebsch], [iliasadmin1] - 27. Jul 2016, 22:04
Diese Anleitung wurde für die inzwischen veraltete Version ILIAS 5.1 geschrieben. Bitte lesen Sie auch die Anleitung für die aktuelle Version:

Gezeigt wird die Installation von ILIAS 5.1 unter Ubuntu 14.04 LTS Server. Das Ergebnis kann mal als VirtualBox-Image weiter unten herunterladen. Die Installation wurde mit der Netzwerkonfiguration "Netzwerkbrücke" umgesetzt, um ein realitätsnahes Szenario anzubieten.
Die Installation erfolgt mit VirtualBox. Sie umfasst:

  • Installation der Server-Komponenten
  • Installation von ILIAS 5.1 via git
  • Installation des Musterclients (bzw. Schulclients) und eines "frischen" Clients
  • Installation des Lucene-RPC-Servers
  • Installation des Java-Chatservers
  • SSL-Unterstützung
  • WebAccess-Checker
  • Cronjobs

Wichtige Hinweise zur Inbetriebnahme des Images

  • Der Lucene-RPC-Server ist zwar installiert, funktioniert aber nicht. Zuvor müssen Sie noch die beiden Dateien ojdbc14.jar und orai18n.jar nach Anleitung (s.u. "Einrichtung der Lucene-Suche") herunterladen. Dies hat lizenzrechtliche Gründe; ich darf diese Dateien nicht einfach zum Download anbieten. Der Rest  (inkl. Chat) funktioniert aber auch ohne diese Dateien.
  • Beim Starten könnten Sie einen Schreck bekommen, wenn Sie dieses Bild sehen:
  • Die Ursache ist harmlos: Beim Chat muss die IP des Servers eingetragen werden, unter welcher er bei Ihnen läuft (siehe "Einrichtung des Java-Chatservers"; kann in der ILIAS-Administration->Chat erledigt werden, also ohne Editor). Danach verschwindet die Meldung. Da Sie erst die IP-Adresse herausfinden müssen, ist ein Login erforderlich. Aber wo ist der Loginprompt?
  • Um den Loginprompt zu sehen, müssen Sie einmal Enter drücken. Danach können Sie sich mit dem Benutzer schulclient und dem Passwort schulclient einloggen.
  • Werden Sie root: sudo -s
  • Finden Sie die IP heraus: ifconfig
  • Loggen Sie sich via SSH ein und via Browser. Ändern Sie wie oben beschrieben die IP des Chatservers in ILIAS->Administration->Chat.
  • Bei Fragen wenden Sie sich an wolfgang.huebsch@gmx.de :-)

Wenn Sie VirtualBox installiert haben, können Sie das ZIP-File einfach herunter laden, entpacken und starten.

Am Ende gibt es Tipps zur Umsetzung und zur E-Mail-Konfiguration.

Letztes Update: 13.06.2017

Vorbereitungen

Benutzernamen und Passwörter

User: schulclient oder root
Passwort (für alles): schulclient

Installation des Betriebssystems

Die Daten der VM können in VirtualBox abgerufen werden. Es handelt sich um eine Installation in deutscher Sprache. Alle Daten befinden sich auf einer Festplatte. Automatische Aktualisierungen wurden ausgechaltet.

Als Netzwerk wurde "Netzwerkbrücke" gewählt. Dort muss für jedem Host die physikalische Netzwerkkarte ausgewählt werden, die über einen Internetzugang verfügt, z.B. WLAN0.

Die installierte Software wurde wie folgt gewählt:

Erstes Login über die Konsole und SSH

Wir loggen uns über die Konsole von VirtualBox direkt ein mit dem User/Passwort schulclient:

Nach dem erfolgreichen Login werden wir mit sudo -s Root (Administrator).
Um die IP-Adresse herauszufinden geben wir ein: ifconfig Die IP-Adresse lautet 192.168.2.29:

In in diesem Fall lautet die IP 192.168.2.32 (siehe folgendes Bild):

Mit einem SSH-Client unserer Wahl (Windows-User sollten Putty verwenden) loggen wir uns entsprechend ein. Der Port ist noch auf Standard gesetzt (22). Wer Linux oder OS X als Host verwendet, gibt einfach ein:
ssh 192.168.2.32 -l schulclient


Wichtig: Wir machen alles als root, führen also nach jedem Login sudo -s aus. Beispiel:

Komponenten installieren und einstellen

Durch die obige Auswahl der Komonente LAMP sind schon die wesentlichen Teile installiert, die wir für ILIAS benötigen. Es fehlen lediglich diese Programme, die wir alle auf einen Schlag installieren - zentraler Paketverwaltung sei Dank :-)

apt-get install php5-gd php5-xsl php-pear php5-ldap php5-radius php5-mcrypt php5-xmlrpc php5-dev php5-curl curl htmldoc imagemagick nano phpmyadmin openjdk-7-jre zip git htop wget memcached php5-memcached libapache2-mod-xsendfile recode
Hinweis: Wir verwenden apache2 als Webserver.

Als Test des Webservers können wir im Browser mit 192.168.2.32/phpmyadmin PHPMyAdmin aufrufen und uns einloggen mit dem Benutzer root und dem Passwort schulclient.

Einstellungen in der Datei php.ini

Wer den Webserver ernsthaft betreiben möchte, muss einige Dinge in der Datei /etc/php5/apache2/php.ini einstellen. Details dazu finden sich unter http://www.ilias.de/docu/goto_docu_pg_6531_367.html. Wir stellen die wichtigsten Parameter wie folgt ein und öffnen dazu die Datei mit dem Editor Nano:

nano /etc/php5/apache2/php.ini

Anpassung an die ILIAS-Skripte:
max_execution_time = 600
max_input_vars = 10000
memory_limit = 200M

Damit der Upload funktioniert:
; or any higher values for post_max_size and upload_max_filesize
post_max_size = 60M
upload_max_filesize = 40M

Wir stellen die Fehlerausgabe an, solange wir an dem Server herumschrauben. Im Produktivbetrieb schalten wir es wieder ab:
display_errors = On

Sehr wichtig ist es, das Errorreporting einzustellen. Notice-Meldungen dürfen nicht angezeigt werden, da ansonsten das Kopieren von Elementen in ILIAS nicht klappt (bleibt bei 0% stehen):
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

Session-Verwaltung:

session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 3600
session.hash_function = 0

Wir starten den Webserver neu, damit die Änderungen aktiv werden:
/etc/init.d/apache2 restart

Die Meldung Could not reliably determine the server's fully qualified domain name ignorieren wir zunächst.

Den Webserver Apache einstellen

Die Konfigurationsdateien befinden sich im Verzeichnis /etc/apache2. Im Verzeichnis /etc/apache2/sites-available kann man die wesentlichen Parameter bestimmen. Auch wichtig ist die Datei /etc/apache2/apache2.conf und /etc/apache2/ports.conf. Ich belasse diese Parameter aber aus Zeitgründen alle auf Standard.

Allerdings aktivieren wir einige Module, sofern nicht schon aktiv:

a2enmod rewrite dav_fs dav expires headers proxy socache_shmcb ssl vhost_alias

ILIAS installieren

Für die Installation von ILIAS benügen wir 2 Verzeichnisse. Zum einen ist dies das Verzeichnis im Webspace /var/www/html/ilias und zum anderen das Verzeichnis außerhalb des Webspaces /opt/ilias. Letzteres legen wir nun an:

mkdir /opt/iliasdata
mkdir /opt/iliasdata/lucene

Wir laden nun ILIAS herunter. Wir wechseln in das Verzeichnis /var/www/html und laden mit Git alles herunter:

git clone https://github.com/ILIAS-eLearning/ILIAS.git ilias

Weitere wichtige Git-Befehle finden sich unter http://www.ilias.de/docu/goto_docu_pg_32446_367.html.
Dort wird auch beschrieben, wie man Updates einspielt oder die Version wechselt.

Rechte neu setzen

Da wir mit root unsere Arbeiten im Dateisystem durchführen, aber root nicht der "Betreiber" des Webservers ist (sondern www-data) müssen wir die Rechte regelmäßig anpassen. Aber auch aus anderen Gründen ist dies sinnvoll und obligatorisch. Am besten wird dies durch ein Skript erledigt, das wir zu diesem Zweck immer wieder ausführen. Wir erstellen uns dazu ein Verzeichnis:

mkdir /opt/scripts und erstellen mit dem Editor nano die Datei rechteneu:
nano rechteneu

Dort hinein kopieren wir diese bash-Befehle:

1
2
3
4
5
6
7
#!/bin/bash

chmod 774 -R /var/www/html
chown www-data:www-data -R /var/www/html

chown www-data:www-data -R /opt/iliasdata
chmod 774 -R /opt/iliasdata

Später fügen wir hier noch Zeilen hinzu.

Dann wird das Skript ausführbar gemacht (im Verzeichnis /opt/scripts):
chmod +x rechteneu

und ausgeführt:
./rechteneu

ILIAS-Setup aufrufen

Da nun alle Dateien heruntergeladen und die Rechte korrekt gesetzt wurden, rufen wir ILIAS im Browser auf:
192.168.2.32/ilias/setup/setup.php

Die weiteren Schritte sind eigentlich wenig erklärungsbedürftig. Um Latex kümmern wir uns nicht. Hier noch ein Bild:

Einen neuen Client erstellen

Während wir gleich den Schulmuster-Client herunterladen, erstellen wir nun zunächst einen neuen Client. Als Datenbank wählen wir MySQL. Im nächsten Fenster geben wir zunächst den Root-Account MySQL ein:

Im nächsten Fenster wählen wir "Create Database" mit der Kollation "utf8_general_ci":
Hinweis: Danach "Apply Hotfixes" ausführen.

Die dann folgende  Installation der Sprache sollte selbsterklärend sein. Ebenso wie die folgende Maske. Wir registrieren den Client, da wir eine NIC-ID benötigen. Dann klicken wir auf "Finished" und können uns einloggen unter
192.168.2.32/ilias

Wir gehen noch einmal in das ILIAS-Setup und aktivieren im Menü "List auf Clients" die Option "Client Selection" oben rechts.

Installation des Schulclients

Kopieren der Dateien

Auf BBS-ILIAS finden sich die Download-Links: https://bbs-ilias.de/info/goto.php?target=cat_71&client_id=info. Wir kopieren uns den Downloadlink https://bbs-ilias.de/schulclient.zip in die Zwischenablage und wechseln in das Verzeichnis /opt und erstellen dort ein Verzeichnis muster:
mkdir /opt/muster

und wechseln dorthin und laden alles herunter:
wget https://bbs-ilias.de/schulclient.zip

Die Dateien werden entpackt und gleich an Ort und Stelle verschoben (das Verschieben ist wichtig, da das Verzeichnis iliasschoolmaster 2 Mal vorkommt...):
unzip schulclient.zip
unzip Customizing.zip

cd Customizing
cp -R * /var/www/html/ilias/Customizing
cd ..

unzip iliasdatadir.zip
mv iliasschoolmaster /opt/iliasdata/

unzip iliaswebdir.zip
mv iliasschoolmaster /var/www/html/ilias/data/

/opt/scripts/rechteneu

Upload der Datenbank

Wir laden uns die Datenbank auf unseren Rechner und rufen http://192.168.2.32/phpmyadmin/ auf. Mit dem User root und dem Passwort schulclient loggen wir uns ein. Wir erstellen zunächst eine leere Datenbank:

Wir rufen diese Datenbank auf und importieren unsere Datei Datenbank.zip:

In einem Produktivsystem würden wir nun einen Datenbankuser mit einem komplizierten Passwort erstellen und dieser Datenbank zuordnen. Wir verzichten darauf.

Einstellung der Datei client.ini.php

Im Verzeichnis ilias/data/iliasschoolmaster befindet sich die Datei client.ini.php, welche wir nun öffnen:
nano /var/www/html/ilias/data/iliasschoolmaster/client.ini.php

Dort müssen wir den Datenbankuser einstellen, in unserem Falle root mit dem Passwort schulclient. In einem Produktivsystem wird dies natürlich mit einem anderen User gemacht. Das Ganze sieht dann so aus:

1
2
3
4
5
6
7
[db]
type = "mysql"
host = "localhost"
user = "root"
pass = "schulclient"
name = "Qiliasmaster"
port = ""

Nun sollte der Schulclient laufen. Es folgen die Feinheiten.

Einrichung der Java-Komponenten

Unter den Java-Komponenten verstehe ich den Lucene-RPC-Server, den man u.a. für die geniale Volltextsuche benötigt und den Chatserver. Der Chatserver wird übrigens ab ILIAS 5.2 nicht mehr mit Java laufen.

Einrichtung der Lucene-Suche

Zunächst gehen Sie in das Verzeichnis /var/www/html/ilias/Services/WebServices/RPC/lib/

Im Browser rufen wir die Seite http://www.oracle.com/technetwork/apps-tech/jdbc-10201-088211.html auf und stimmen dem Licence Agreement zu. Dann laden wir die Dateien herunter (Hinweis: Mittlerweile geht dieser Schritt nicht mehr. Sie müssen einen anderen Weg finden, die Dateien dorthin zu laden, z.B. mit proftpd und Filezilla):

wget http://download.oracle.com/otn/utilities_drivers/jdbc/10205/ojdbc14.jar
wget http://download.oracle.com/otn/utilities_drivers/jdbc/10204/orai18n.jar

Wir erstellen das Konfigfile im selben Verzeichnis:

nano ilServer.properties

und kopieren diese Zeilen hinein:

Wenn die Datei ilServer.properties bereits besteht, löschen wir zuvor den Inhalt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Server]
IpAddress = 127.0.0.1
Port = 11111
IndexPath = /opt/iliasdata/lucene
LogFile = /var/log/ilServerinfo.log
LogLevel = WARN
NumThreads = 1
RamBufferSize = 256

[Client1]
ClientId = steuerkreis
NicId = 9627
IliasIniPath = /var/www/info/ilias.ini.php

[Client2]
ClientId = info
NicId = 8747
IliasIniPath = /var/www/info/ilias.ini.php

Der obige Code ist von einem Blogeintrag von mir kopiert und muss angepasst werden.  Wir benötigen die beiden Client-IDs und die zugehörigen NIC-IDs, welche wir im ILIAS-Setup Details->Overview erhalten. Ebenso muss der ILIAS-INI-Pfad angepasst werden, da unser ILIAS-Verzeichnis sich nicht in /var/www/info sondern in /var/www/html/ilias befindet. Unten können wir die Daten ablesen:

So sieht das dann richtig aus:
Anmerkung: Ich bin hier so kleinschrittig, weil es immer wieder Fehler in diesem Bereich gibt. Ein häufiger Fehler ist, dass der Port oder die IP falsch angegeben werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Server]
IpAddress = 127.0.0.1
Port = 11111
IndexPath = /tmp
LogFile = /var/log/ilServerinfo.log
LogLevel = WARN
NumThreads = 1
RamBufferSize = 256

[Client1]
ClientId = client1
NicId = 10033
IliasIniPath = /var/www/html/ilias/ilias.ini.php

[Client2]
ClientId = iliasschoolmaster
NicId = 8484
IliasIniPath = /var/www/html/ilias/ilias.ini.php

Um das Ganze zu starten, erstellen wir das Start-Stop-Skript:

nano /etc/init.d/ilserver


mit diesem Inhalt, welcher bereits an diese Installation angepasst wurde (wir beachten bitte das folgende Warndreieck!):

Der libpath muss in Zeile 31 eingestellt werden! Hier lautet er
libpath="/var/www/html/ilias/Services/WebServices/RPC/lib/" #Path to ojdbc14.jar, orai18n.jar, ilServer.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/sh
### BEGIN INIT INFO
# Provides: ilserverstart2
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Lucene-ILIAS-Server (Java)
# Description: This file should be used to construct scripts to be
# placed in /etc/init.d.
### END INIT INFO

# Author: Foo Bar <foobar@baz.org>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="iliasserver"
NAME=ilserverneu
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--options args"
PIDFILE=/tmp/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME


JAVABIN="/usr/bin/java"
libpath="/var/www/html/ilias/Services/WebServices/RPC/lib/" #Path to ojdbc14.jar, orai18n.jar, ilServer.properties
inifile="ilServer.properties" #Name of INI-FIle
enc="-Dfile.encoding=UTF-8"
#######################################################################################################################
case "$1" in
start)
echo "Starting ILIAS Java-Server"
cd $libpath
$JAVABIN $enc -cp "ojdbc14.jar:orai18n.jar:ilServer.jar" de.ilias.ilServer $inifile start &
;;

stop)
echo "Shutting down ILIAS Java-Server"
cd $libpath
$JAVABIN -jar ilServer.jar $inifile stop
;;

status)
cd $libpath
$JAVABIN -jar ilServer.jar $inifile status
;;

restart)
$0 stop
sleep 2
$0 start
;;

*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
esac

exit 0

Das Skript wird ausführbar gemacht:

chmod +x /etc/init.d/ilserver

Dann starten wir den Server:

/etc/init.d/ilserver start

Wir sorgen dafür, dass der ilserver automatisch beim Booten startet:

cd /etc/init.d
update-rc.d -f ilserver remove
update-rc.d ilserver defaults 93
 

Lucene-Suche in ILIAS aktivieren

Wir loggen uns in die beiden Clients nacheinander ein und geben zunächst unter
Administration->Allgemeine Einstellungen->Server->Java-Server
die IP und den Port ein. Am bestebn kopiert man diese Daten, da hier oft Tippehler auftreten:

nano /var/www/html/ilias/Services/WebServices/RPC/lib/ilServer.properties

So soll das dann aussehen:

Danach wird die Suche unter Administration->Suche aktiviert. Um auch etwas zu finden, muss die Indizierung ausgelöst werden. Dies wird erledigt unter Administration->Allgemeine Einstellungen->Cron-Jobs->Lucene-Suchindex aktualisieren.

Im Schulclient kann man dann Lucene testen (Eingabe des Suchwortes "Klasse"):

Problembehandlung Lucene

Ist php-curl installiert?

apt-get install php5-curl

Es ist immer nur eine Kleinigkeit, ein Versehen. Sachdienliche Hinweise liefert zuverlässig das Logfile:

nano /var/log/ilServerinfo.log

Oder: Nach einem Reboot wird alles gut ...

reboot

Ob der Server läuft, kann man gut mit htop herausfinden:

htop

ergibt im Erfolgsfall:

Mit

/etc/init.d/ilServer stop

müssen diese Einträge nach einigen Sekunden verschwinden.

Einrichtung des Java-Chatservers

Für den Chatserver benötigen wir eine IP, die von außen - also aus dem lokalen Netzwerk oder Internet - erreichbar ist. In unserem Fall ist dies die IP 192.168.2.32, die wir oben über ifconfig ermittelten. Wir legen einen beliebigen Port fest, z.B. 8181 und geben diese Werte in ILIAS ein. Zunächst aktivieren wir abder SOAP unter Administration->Allgemeine Einstellungen->Server Soap.

Unter Administraton->Chat geben wir nun die obigen Daten ein und aktivieren ihn natürlich:
Hinweis: Man benötigt einen User, der sich einloggen kann (hier: schueler1) und man muss die Instanz eindeutig benennen. Das Bild unten zeigt die Einstellung des Clients iliasschoolmaster (nicht client1, den wir beim Chat vernachlässigen).

Im Fenster "Chat-Server-Einstellungen" geben wir ein:

Der Chatserver wird nun per Skirpt gestartet. Die folgenden Schritte sind auszuführen:

touch /etc/init.d/ilchat
chmod +x /etc/init.d/ilchat
nano /etc/init.d/ilchat

Es wird der unten stehende Code eingefügt. Ggf. müssen die Pfade in den den Zeilen 21 und 22 angepasst werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash
# For new Chat since ILIAS 4.2

### BEGIN INIT INFO
# Provides: ilchatserver
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts ilias chatsrver
# Description: starts ilias chatserver using start-stop-daemon
### END INIT INFO








JAVABIN=/usr/bin/java
ILIASDIR=/var/www/html/ilias # Type in the root directory of your ILIAS installation
ILIAS_DATA_DIR=/opt/iliasdata # Type in the ILIAS Data directory (outside webspace)
USER=root # Type in the user who should run the chatserver
CLIENT=iliasschoolmaster # Type in the exact name of your ILIAS client

case "$1" in
start)
if [ -f /tmp/chatserver.pid ]
then
echo "The chat server seems to be running. Type 'chatserver stop' or remove the file '/tmp/chatserver.pid' manually"
exit 1
fi
echo "Starting chat server"
su -c "$JAVABIN -jar $ILIASDIR/Modules/Chatroom/server/Chatserver.jar $ILIAS_DATA_DIR/$CLIENT/chatroom/server.properties $ILIAS_DATA_DIR/$CLIENT/$

echo $! > /tmp/chatserver.pid
;;

stop)
echo "Shutting down chatserver"
{
kill `cat /tmp/chatserver.pid`
unlink /tmp/chatserver.pid
} 2> /dev/null
;;

restart)
$0 stop
sleep 2
$0 start
;;

*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac

exit 0

Wir starten den Chatserver dann mit

/etc/init.d/ilchat start


Wir sorgen dafür, dass der Chatserver und der Lucene-Server automatisch beim Booten starten:

cd /etc/init.d

update-rc.d -f ilchat remove
update-rc.d -f ilserver remove
update-rc.d ilserver defaults 93
update-rc.d ilchat defaults 94


Hinweis: Der Chatserver gibt seinen Output auf die Konsole aus. Das ist ein Schönheitsfehler, mit dem wir leben können.

Feinheiten

Pear-Pakete installieren

pear install mail
pear install Auth_HTTP
pear install XML_RPC

Webroot anpassen

Wenn wir unsere Server-IP-Adresse 192.168.2.32 eingeben, werden wir bisher nicht auf ILIAS weiter geleitet. Das ändern wir durch eine index.php-Date, die die Weiterleitung nach /ilias übernimmt:

cd /var/www/html
rm index.html
nano index.php

Wir fügen diesen Code ein:

1
2
3
4
<?php
header("Location: ./ilias");
exit();
?>

Cache-Einstellungen

Im ILIAS-Setup können wir für die Mandanten Memcache in den Client-Details unter "Global Cache" aktivieren. Die Memcache-Node setzen wir wie folgt (Host: 127.0.0.1 - Port: 11211):

Nach dem Speichern der Einstellung mit "Add Memcache Node" wählen wir noch die Komponenten auf der Folgeseite aus:

Cronjobs ausführen

Um wiederkehrende Aufgaben automatisch auszuführen, öffnen wir die Datei crontab:

nano /etc/crontab

In der Crontab sollten folgende Einträge vorhanden sein:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

#IlServer neu starten
20 1 * * * www-data /etc/init.d/ilserver stop >/dev/null 2>&1
25 1 * * * root rm /tmp/ilserverneu.pid >/dev/null 2>&1
30 1 * * * www-data /etc/init.d/ilserver start

#Chat neu starten
20 2 * * * www-data /etc/init.d/ilchat stop >/dev/null 2>&1
25 2 * * * root rm /tmp/chatserver.pid >/dev/null 2>&1
30 2 * * * www-data /etc/init.d/ilchat start

#ILIAS-Cronjobs ausführen - schulclient ist hier ein Passwort!
* */4 * * * root /usr/bin/php /var/www/html/ilias/cron/cron.php rootschule schulclient iliasschoolmaster > /dev/null
#

Apache einrichten inkl. SSL-Verschlüsselung

Bearbeitung der Datei /etc/hosts

Die Datei /etc/hosts sah nach der Installation wie folgt aus:

1
2
3
4
5
6
127.0.0.1       localhost

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Nach einen Restart des Apaches mit /etc/init.d/apache2 restart kam es immer zu dieser Fehlermeldung:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Diese können wir unterdrücken, in dem wir Zeile 1 wie folgt verändern:

127.0.0.1       localhost schulclient.local


Wenn später noch echte Domains und IP-Adressen hinzukommen, könnte eine Zeile wie diese hinzugefügt werden:

195.110.43.152 bbs-ilias.de www.bbs-ilias.de www

Die Datei für den http-vhost optimieren

Unter /etc/apache2 befinden sich die wichtigen Konfigurationsdateien für den Apache. Zunächst schauen wir an, welche Konfigurationsdateien derzeit aktiv sind, in dem wir einen Blick in das entsprechende Verzeichnis werfen:

ls /etc/apache2/sites-enabled
000-default.conf

Die Datei 000-default.conf werden wir nun deaktivieren:
a2dissite 000-default.conf

Stattdessen gehen wir nun in das Verzeichnis /etc/apache2/sites-available und erstellen eine neue Vhost-Datei:
nano schulclient.conf

Wir fügen folgenden Inhalt ein:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<VirtualHost *:80>
# ServerAdmin admin@bbs-ilias.de
# ServerName www.bbs-ilias.de
# ServerAlias bbs-ilias.de
DocumentRoot /var/www/html
KeepAlive on

#Gesamte Installazion SSL:
# RewriteEngine on
# ReWriteCond %{SERVER_PORT} !^443$
# RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

#Einzelne Verzeichnisse SSL:
# RewriteEngine On
# RewriteCond %{HTTPS} !=on
# RewriteRule ^/?ilias/(.*) https://%{SERVER_NAME}/ilias/$1 [R,L]


XSendFilePath /var/www/html
XSendFilePath /opt/iliasschule

<Directory /var/www/html>
Options -Indexes +FollowSymlinks
AllowOverride All
Order allow,deny
allow from all

ExpiresActive On
ExpiresByType text/css "access plus 7 day"
ExpiresByType image/gif "access plus 7 day"
ExpiresByType image/jpg "access plus 7 day"
ExpiresByType image/jpeg "access plus 7 day"
ExpiresByType image/png "access plus 7 day"

DirectoryIndex index.html
DirectoryIndex index.htm
DirectoryIndex index.php
</Directory>

ErrorLog ${APACHE_LOG_DIR}/schulclient-error.log

CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

</VirtualHost>

Im oberen Teil sind einige Zeilen auskommentiert, mit deren Hilfe man https erzwingen kann oder deren Infos später hinzugefügt werden können.

Wir aktivieren die Datei mit
a2ensite schulclient.conf

und starten den Webserver neu
/etc/init.d/apache2 restart

https für den Apache2 aktivieren

SSL-Verbindungen über das Protokoll https sind heutzutage eine Selbstverständlichkeit. Man muss für ein günstiges Zertifikat (12 Monate) etwa 17 Euro "hinlegen". Dazu gab es auch schon einen Blogbeitrag. Wir werden unser Zertifikat aber selbst ausstellen, so dass wir Meldungen, wie "Dieser Verbindung wird nicht vertraut" erhalten - sei es drum.

Zunächst richten wir uns einen Ordner ein, in dem wir die benötigten Dateien abspeichern und wechseln dorthin:

mkdir /etc/apache2/ssl

Um mich nicht unnötig zu wiederholen: Es gibt unzählige Anleitungen zu diesem Thema. Ich halte mich nun selber an eine Anleitung: https://thomas-leister.de/eine-eigene-openssl-ca-erstellen-und-zertifikate-ausstellen/
Hinweis: Den Mittelteil der Anleitung, in der es um den Import des Zertifikats in Browsern geht, überspringen wir.

Nun erstellen wir die entsprechende vhost-Datei im Verzeichnis /etc/apache2/sites-available:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<IfModule mod_ssl.c>

<VirtualHost *:443>
# ServerAdmin admin@bbs-ilias.de
# ServerName www.bbs-ilias.de
# ServerAlias bbs-ilias.de
DocumentRoot /var/www/html
KeepAlive on
XSendFilePath /var/www/html
XSendFilePath /opt/iliasschule

<Directory /var/www/html>
Options -Indexes +FollowSymlinks
AllowOverride All
Order allow,deny
allow from all

ExpiresActive On
ExpiresByType text/css "access plus 7 day"
ExpiresByType image/gif "access plus 7 day"
ExpiresByType image/jpg "access plus 7 day"
ExpiresByType image/jpeg "access plus 7 day"
ExpiresByType image/png "access plus 7 day"

DirectoryIndex index.html
DirectoryIndex index.htm
DirectoryIndex index.php
</Directory>

ErrorLog ${APACHE_LOG_DIR}/schulclient-sslerror.log

CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/zertifikat-pub.pem
SSLCertificateKeyFile /etc/apache2/ssl/zertifikat-key.pem
SSLCACertificateFile /etc/apache2/ssl/ca-root.pem

BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>

Ist die Datei fertig, muss sie wieder aktiviert werden:
a2ensite schulclient-ssl.conf
/etc/init.d/apache2 restart

Ruft man nun den Server über den Browser via https auf, erscheint diese Meldung (in Firefox):

Klickt man nun auf "Ich kenne das Risiko", kommt diese Meldung nicht wieder, und verschlüsselt ist es trotzdem :-)
Letzlich sieht das dann so aus:

Den Server im Internet bekannt machen

Man kann durchaus diese Installation als produktiven Webserver im Internet verwenden. Natürlich müsste man alle Passwörter und zum Teil die Benutzernamen überarbeiten. Wenn der Server über SSH im Internet verfügbar sein soll, würde ich den SSH-Port ändern.

PHPMyAdmin sollte einen neuen Standardpfad erhalten und mit einer.htaccess-Datei abgesichert werden. Auch dazu gibt es Anleitungen im Internet. Oder man deinstalliert es, wenn man es nicht mehr benötigt.

In vielen Schulen laufen solche Server in VirtualBox mit Portweiterleitung über den DSL-Anschluss von "Schulen ans Netz". Dagegen ist auch nichts einzuwenden. Auf keinen Fall sollte man dies mit seinem eigenen Hausanschluss realiseren, da man dann nicht mehr im Internet anonym ist. Letztlich sehe ich diese Arbeit hier als Anregung zum Lernen und Verstehen; als Sprungbrett zu einem vernünftigen vServer. Hier empfehle ich https://www.hosteurope.de/. Ein kleinerer vServer ab 60 GiB HDD und 4 GiB RAM sollte ausreichen. SSD-Speicher zu nehmen, lohnt sich! Auch kann man leicht das Paket upgraden, also ohne Neuinstallation.

E-Mail-Unterstützung

Um die E-Mail-Unterstützung zu realisieren, sehe ich 3 Wege:

  1. Ein vServer mit Plesk
  2. Die Installation von SSMTP
  3. Die Installation von Postfix

Alle 3 Varianten sind für den engagierten Poweruser umsetzbar. Bei Plesk ist man extrem eingeschränkt und kann auch schnell alles zerstören. Ohne Vollbackups sollte man hier nichts machen. Ich mag Plesk nicht. SSMTP ist extrem simpel und dann völiig ausreichend, wenn der Server ohnehin nur senden soll. Die Einrichtung ist eigentlich Minutensache. Postfix kann auch Mails empfangen und stellt den Königsweg dar, wenn man über eine Domain mit einer festen IP verfügt. Wer den Server mit VirtualBox betreibt, muss eigentlich SSMTP nehmen und wird damit auch zufrieden sein.


No comment has been posted yet.