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

Stand: 31.07.2012

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.

PHP-Programme, die die Session-Funktionen benutzen, sollten daher als eine der ersten Anweisungen im Programm die Lage der Sitzungsdaten angeben:

ini_set('session.save_path','/www/data/NNN/sessions');

Natürlich sollte das Verzeichnis /www/data/NNN/sessions/ vorher angelegt werden.

In gleicher Weise sollten auch Sitzungsdaten bei Verwendung anderer Programmiersprachen und überhaupt alle anderen Daten, die von einem Zugriff zum nächsten überdauern sollen, in Unterverzeichnissen von /www/data/NNN/ abgelegt 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 Wunsch können Perl-Module und 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.)

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).


Impressum | © 2012 Universität Münster
Zentrum für Informationsverarbeitung (ZIV)
Röntgenstraße 7-13
· 48149 Münster
Tel.: +49 251 83-31600 · Fax: +49 251 83-31555
E-Mail: ziv@uni-muenster.de