Hinweise für eigene Programme (in PHP usw.)

Stand: 16.05.2017

Aus der Konzeption des Webserverparks ergeben sich einige Besonderheiten, die beim Programmieren und Installieren eigener Programme zu beachten sind.

Notfallvorsorge

Im Falle größerer Katastrophen wird auf ein leistungsschwächeres Notfallsystem umgeschaltet. Auf diesem werden keine PHP-Skripte oder CGI-Programme ausgeführt. Sofern Sie nichts unternehmen, führt der Versuch eines Aufrufs während des Notbetriebs zu einer Fehlermeldung.

Sie können aber zu jedem PHP-Skript und zu jedem CGI-Programm eine Notfalldatei anlegen, welche angezeigt wird, falls während des Notbetriebs jemand einen Aufruf versucht. Dazu erzeugen Sie zu jeder Datei „xxxxx.php“ eine normale HTML-Datei namens „xxxxx.php-sos.html“ (analog für die Dateiendungen .php5 und .cgi). Der Name der HTML-Datei ergibt sich also aus dem Namen des Skripts/Programms durch Anhängen von „-sos.html“.

Sitzungen / Sessions

Da verschiedene WWW-Zugriffe von verschiedenen Backend-Servern verarbeitet werden, muss bei der Verwaltung von Sitzungen darauf geachtet werden, dass die Sitzungsdaten an einer Stelle abgelegt werden, auf die alle Backend-Server zugreifen können.

Neu (16.05.2017): Beim Einrichten eines Webspaces wird für diesen Zweck das Verzeichnis /www/data/NNN/sessions/ angelegt. Sorgen Sie bitte beim Starten eines Programms dafür, dass alle Sitzungsdateien dort und alle anderen Daten, die von einem Zugriff zum nächsten überdauern sollen, ebenfalls in Unterverzeichnissen von /www/data/NNN/ abgelegt werden und nicht in /tmp/.

Neu (16.05.2017): Wer die Programmiersprache PHP benutzt, findet die entsprechende Zeile bereits in der zuständigen Datei /www/data/NNN/php.ini eingetragen. Dort können auch weitere Konfigurationseinstellungen eingetragen werden.

Programmiersprachen / Skriptsprachen

Zur Verfügung stehen unter anderem:

Aus Sicherheitsgründen nicht zur Verfügung stehen jedoch die Apache-Module mod_php und mod_perl. Daher stehen vereinzelte PHP-Features nicht zur Verfügung (insbesondere keine persistenten Datenbankverbindungen). Ausnahmen sind nur für extrem frequentierte Webspaces, z. B. LearnWeb, möglich.

Auf kann in gewissem Rahmen andere Software nachinstalliert werden. Bitte nehmen Sie bei Bedarf frühzeitig Kontakt mit uns auf, damit wir gemeinsam die beste Lösung für Ihre Problemstellung finden können.

Aufgrund der PHP-Einbindung als Apache-Handler finden PHP-Skripte, die in zugangsgeschützten Verzeichnissen liegen, die eingegebene Nutzerkennung in $_SERVER['REDIRECT_REMOTE_USER'], während alle anderen Programme, die als als CGI-Programme eingebunden werden, die übliche Umgebungsvariable REMOTE_USER auslesen können. (Achtung: Diese Variablen können zusätzlich auch eine Domainangabe enthalten: „username“ und „username@uni-muenster.de“ bezeichnen den gleichen Nutzer, „username@anderedomain“ einen anderen Nutzer aus einer anderen Domain. Die spezielle Nutzerkennung „(null)“ (inklusive der runden Klammern) gibt an, dass der Nutzer sich zwar ausgewiesen hat, seine Identität aber nicht zur Verfügung steht.)

CPAN-Module für PERL

Soweit in den eingebundenen CentOS- und EPEL-Repositories vorhanden, sind PERL-Module bereits aus diesen Repositories installiert worden. Wenn Sie weitere Module in Ihrem Webspace installieren möchten, verwenden Sie dazu bitte das Verzeichnis /www/data/NNN/perl5lib/:

mkdir /www/data/NNN/perl5lib
cd
wget .../XXX-YYY-0.0.0.tar.gz
tar zxf XXX-YYY-0.0.0.tar.gz
cd XXX-YYY-0.0.0
perl Makefile.PL PREFIX=/www/data/NNN/perl5lib/XXX-YYY-0.0.0
make
make test
make install
/www/bin/repairwebspace NNN

Da der Webserver die Umgebungsvaraiable PERL5LIB=/www/data/NNN/perl5lib setzt, werden die so erzeugten Module problemlos gefunden.

Versand von E-Mails

E-Mails können ganz normal mit den Werkzeugen der verwendeten Skriptsprache verschickt werden. Jedoch sollten Sie darauf achten, dass als Absender eine sinnvolle Adresse eingetragen wird, damit eventuelle Fehlermeldungen bei Ihnen landen und nicht die Systemverwalter belästigen:

Wer die PHP-Funktion mail() benutzt, sollte bitte als fünftes Argument (additional parameters) die Angabe „-f absender“ angeben, etwa so:

$ok=mail($to,$subj,$message,'','-f username@uni-muenster.de');

Wer direkt die Systemfunktion /usr/sbin/sendmail benutzt, sollte dabei ebenfalls die Option „-f Absender“ angeben.

Regelmäßig ablaufende Programme (Cron-Jobs)

Das Installieren von Cron-Jobs ist auf dem Webserverpark nicht möglich. Sie können jedoch in Ihrem Hauptverzeichnis ein Verzeichnis /www/data/NNN/cron und darin eine Datei /www/data/NNN/cron/daily ablegen und mit dem Befehl „chmod +x /www/data/NNN/cron/daily“  ausführbar machen. Diese Datei wird dann täglich einmal in der Nacht irgendwann zwischen 3 Uhr und 5 Uhr aufgerufen.

Falls es unbedingt nötig ist, können Sie im gleichen Verzeichnis auch Skripte namens /www/data/NNN/cron/xxx.loop ablegen (xxx passend ersetzen). Das System schaut alle fünf Minuten nach diesen Skripten: Falls ein Skript gerade nicht läuft und seit dem Ende des vorherigen Laufs mindestens fünf Minuten vergangen sind, wird es neu gestartet. Für diese Skripte gilt ein CPU-Zeit-Limit von nur gut einer Minute. Normalerweise läuft so ein Skript also alle 10 Minuten. Um ein Skript stündlich auszuführen, ergänzen Sie ein „sleep 3000“ (= eine Stunde minus 10 Minuten).