Internet Information Services
Internet Information Services (IIS) ist die Webserver-Software, die mit Windows Server sowie bestimmten Client-Versionen von Windows gebündelt ist. Bitte beachten Sie, dass der Apache-Webserver eine viel bessere Community-Unterstützung bietet und es in der Regel weniger Probleme gibt, wenn Moodle auf Apache ausgeführt wird. Das Windows-Betriebssystem ist für große Installationen nicht geeignet. Bitte ziehen Sie stattdessen die Verwendung von Linux oder anderen Unix-ähnlichen Betriebssystemen in Betracht.
IIS-Installationsschritte (Windows 11 und einige frühere Versionen)
- Öffnen Sie die Windows-Einstellungen in Windows 11. Suchen Sie nach Systemsteuerung und öffnen Sie die App. In früheren Versionen von Windows befindet sich diese App möglicherweise an einem anderen Ort.
- Suchen Sie in der Systemsteuerung oben rechts im Fenster nach Programme und Sie finden Programme und Funktionen.
- Klicken Sie unter dieser Option auf Windows-Funktionen aktivieren oder deaktivieren.
- Aktivieren Sie Internetinformationsdienste und darunter auch Internetinformationsdienste / World Wide Web-Dienste / Anwendungsentwicklungsfunktionen / CGI, das angezeigt wird, wenn Sie auf das +-Zeichen klicken, um die Menüs zu erweitern.
- In einem neuen Browserfenster auf dem Windows-Computer sollte beim Aufrufen von localhost der Begrüßungsbildschirm für IIS angezeigt werden.
Hinweis: Der Microsoft Web Platform Installer wird von Microsoft nicht mehr unterstützt.
PHP Installation
Wie oben erwähnt, wurde das offizielle MS Platform-Installationsprogramm eingestellt und wird nicht mehr unterstützt. Bitte führen Sie die folgenden Schritte manuell aus:
- Laden Sie die neueste Version von PHP Non Thread Safe herunter, die von der aktuellen Moodle-Version unterstützt wird, unter http://windows.php.net/download/. In Moodle 4.5 ist PHP 8.1.0 oder höher erforderlich.
- Entpacken Sie die Zip-Datei in ein Verzeichnis wie C:\PHP\
- Laden Sie die entsprechende Version von Visual C++ Redistributable für Visual Studio 2015-2022 x64 oder x86 herunter und installieren Sie sie. Möglicherweise müssen Sie Ihren Computer nach der Installation dieser Software neu starten.
FastCGI-Handler registrieren
- Öffnen Sie den Internetinformationsdienste-Manager (IIS). Sie finden ihn, indem Sie auf das Suchsymbol in der Windows-Taskleiste klicken und Internetinformationsdienste in die Suchleiste eingeben.
- Doppelklicken Sie auf das Symbol Handlerzuordnungen.
- Wählen Sie im Bereich Aktionen auf der rechten Seite des Fensters Modulzuordnung hinzufügen... aus der Liste aus.
Geben Sie die folgenden Einstellungen ein:
- Anforderungspfad: Geben Sie *.php ein, um alle PHP-Dateien zu verarbeiten.
- Modul: Wählen Sie FastCgiModule aus der Dropdown-Liste aus.
- Ausführbare Datei: Suchen Sie die Datei php-cgi.exe im extrahierten PHP-Verzeichnis. Beispiel: C:\PHP\php-cgi.exe.
- Name: Geben Sie einen eindeutigen Namen für die Handlerzuordnung in das Feld Name ein. Beispiel: PHP-FastCGI.
- Klicken Sie auf Anforderungsbeschränkungen.
- Wählen Sie Handler nur aufrufen, wenn Anforderung zugeordnet ist.
- Klicken Sie auf die Option Datei oder Ordner.
- Klicken Sie auf OK, um die Beschränkungen zu speichern.
- Klicken Sie auf OK, um die Handler-Konfiguration zu speichern.
- Wenn Sie im Dialogfeld Modulzuordnung hinzufügen aufgefordert werden, eine FastCGI-Anwendung zu erstellen, klicken Sie auf Ja.
Gehen Sie nach dem Speichern zurück und bearbeiten Sie die FastCGI-Anwendung, indem Sie die Aktivitätszeitüberschreitung auf mindestens eine Stunde erhöhen. Dadurch wird verhindert, dass Moodle-Skripte bei langen Prozessen fehlschlagen.
PHP Konfiguration
- Suchen Sie im von Ihnen erstellten PHP-Verzeichnis die Datei php.ini-production und kopieren Sie sie in php.ini im selben Verzeichnis.
- Bearbeiten Sie die kopierte Datei php.ini (mit Notepad oder Ihrem bevorzugten Editor) und nehmen Sie folgende Änderungen vor:
- Aktivieren Sie die folgenden Erweiterungen, indem Sie das Kommentarzeichen ; am Anfang der Zeile in php.ini entfernen:
- curl
- fileinfo
- gd
- intl
- mbstring
- exif
- mysqli. Verwenden Sie diese, wenn Ihre Datenbank in MySQL liegt.
- openssl
- pgsql. Verwenden Sie diese, wenn Ihre Datenbank in PostgreSQL liegt.
- soap
- sodium
- zend_extension=opcache
- cgi.force_redirect = 0 und stellen Sie sicher, dass der Wert 0 ist.
- fastcgi.impersonate = 1 und stellen Sie sicher, dass der Wert 1 ist.
- max_input_vars = 1000 und ändern Sie den Wert auf mindestens 5000, wie von Moodle gefordert.
- Legen Sie Ihre date.timezone in php.ini fest. Verwenden Sie die Liste der in PHP unterstützten Zeitzonen als Referenz.
- Legen Sie in php.ini geeignete Speichergrenzen und Zeitlimits fest.
IIS Konfiguration
- URL-Rewriting wie unten beschrieben einrichten.
- IIS so konfigurieren, dass detaillierte Fehlerseiten angezeigt werden.
- Sehr lange CGI-Zeitüberschreitung einstellen – 1 Stunde oder besser noch mehr.
- Im IIS-Manager das Moodle-Verzeichnis dirroot als neues virtuelles Verzeichnis hinzufügen oder als Website-Verzeichnis festlegen.
Standarddokument
- Stellen Sie sicher, dass Sie index.php als Standarddokument hinzufügen.
Slash-Parameter
Slash-Parameter sind erforderlich, damit verschiedene Funktionen in Moodle korrekt funktionieren, wie unter Verwendung von Slash-Parametern beschrieben.
IIS 7 sollte relativen Pfadargumente standardmäßig unterstützen. Wenn dies nicht funktioniert, versuchen Sie, Folgendes in der php.ini zu aktivieren:
cgi.fix_pathinfo = 1
URL-Rewriting
In einigen Versionen von IIS ist das Rewrite-Modul nicht standardmäßig enthalten. Laden Sie je nach Ihrer Windows-Version entweder die x86- oder die x64-Version herunter und installieren Sie sie. Möglicherweise müssen Sie IIS neu starten und den IIS-Manager erneut öffnen, um das Modul anzuzeigen.
Fügen Sie die folgende Rewrite-Regel hinzu, um die Unterstützung für Unicode-Dateinamen in Moodle zu aktivieren und die interne Dateilängenbeschränkung zu umgehen, die die Bereitstellung von YUI-Dateien verhindert:
- Verwenden Sie die Leere Regel, um die neue Regel hinzuzufügen.
- Geben Sie der Regel einen Namen. Zum Beispiel: Moodle rewrite.
- Entspricht dem Muster – Reguläre Ausdrücke –
^([^\?]+?\.php)(\/.+)$ - Aktion – Rewrite –
{R:1}\?file={R:2} - Abfragezeichenfolge anhängen – aktiviert
- Verarbeitung nachfolgender Regeln beenden – aktiviert
Klicken Sie im rechten Bereich auf Anwenden, um die Regel zu speichern und anzuwenden.
Optionale Korrektur von UTF-8-Dateinamen
Standardmäßig kann IIS keine Unicode-Zeichen in Dateien verarbeiten, die in Moodle hochgeladen werden. Dies kann dazu führen, dass JavaScript auf der Moodle-Website nicht funktioniert (Navigation lässt sich nicht erweitern usw.) oder CSS-Stile beschädigt werden.
Siehe Verwendung der UTF-8-Kodierung für Servervariablen und So erhalten Sie UTF-8-Kodierungsunterstützung in IIS 7.5 unter Windows 7 und Windows Server 2008 R2 mit dem Hotfix KB 2277918.
Ausführen:
reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
CGI-Zeitüberschreitungen
Standardmäßig ist IIS so konfiguriert, dass die Ausführung von PHP-Skripten nach 5 Minuten Aktivität beendet wird. Dies beeinträchtigt lang laufende Moodle-Skripte wie Aktualisierungen oder Cron-Jobs. Die Zeitüberschreitung sollte auf mindestens eine Stunde erhöht werden.
Verzeichnisberechtigungen
Das Standard-IIS-Konto lautet IIS_IUSRS. Stellen Sie sicher, dass es über die entsprechenden Zugriffsrechte für die Verzeichnisse dirroot (nur Lesen) und dataroot (Lesen/Schreiben) von Moodle verfügt.
Behandlung von 40x-Fehlern
Dadurch können fehlende Dateien von Moodle thematisiert werden.
- Öffnen Sie den Tab Internetinformationsdienste (IIS)-Manager. Diese befindet sich in der Taskleiste unter Server-Manager und dann unter Extras.
- Identifizieren Sie die Moodle-Website. Gehen Sie zum Bereich Verbindungen und klicken Sie auf das Pluszeichen (+) neben Ihrem Servernamen, um ihn zu erweitern. Erweitern Sie dann Sites. Gehen Sie als Nächstes zur Moodle-Website.
- Öffnen Sie Fehlerseiten. Doppelklicken Sie auf das Symbol Fehlerseiten im Startfenster und klicken Sie auf Bearbeiten.
- Geben Sie den HTTP-Statuscode ein. Wenn das Dialogfeld Benutzerdefinierte Fehlerseite bearbeiten angezeigt wird, geben Sie unter Statuscode den Wert 404 ein.
- Wählen Sie URL auf dieser Website ausführen. Wählen Sie im selben Dialogfeld URL auf dieser Website ausführen, damit Sie Ihre benutzerdefinierte Seite bereitstellen können.
- Geben Sie die URL ein. Geben Sie in das Textfeld URL (relativ zum Stammverzeichnis der Website) den Pfad /error/index.php ein und klicken Sie dann auf OK.
- Wählen Sie Funktionseinstellungen bearbeiten. Nachdem Sie auf OK geklickt haben, klicken Sie mit der rechten Maustaste auf den 404-Fehler und wählen Sie Funktionseinstellungen bearbeiten.
- Wählen Sie Benutzerdefinierte Fehlerseite und klicken Sie dann auf OK. Nachdem Sie auf OK geklickt haben, sollte Ihre neue Seite live und bereit sein.
Optional (Sicherheitsverbesserung)
Sie können den oben beschriebenen Vorgang für den 403-Fehler wiederholen und ihn zu /error/index.php?code=404 umleiten. Dadurch werden alle 403-Fehler von IIS an dieselbe Seite weitergeleitet, aber auch der HTTP-Status wird aus Sicherheitsgründen durch 404 überschrieben
Interne Pfade verbergen
IIS enthält das URL-Rewrite-Modul. Mit dieser Erweiterung können Sie Regeln für IIS festlegen, um eingehende URL-Anfragen umzuschreiben.
Moodle und viele andere PHP-Anwendungen werden derzeit mit Rewrite-Regeln als Teil ihrer .htaccess-Datei ausgeliefert. Diese Regeln teilen Apaches mod_rewrite mit, wie und wann eingehende Anfragen umgeschrieben werden sollen. Das IIS-URL-Rewrite-Modul kann diese Regeln lesen und in URL-Rewrite-Regeln übersetzen.
RewriteEngine On RewriteRule "(\/vendor\/)" - [F] RewriteRule "(\/node_modules\/)" - [F] RewriteRule "(^|/)\.(?!well-known\/)" - [F] RewriteRule "(composer\.json)" - [F] RewriteRule "(\.lock)" - [F] RewriteRule "(\/environment.xml)" - [F] Options -Indexes RewriteRule "(\/install.xml)" - [F] RewriteRule "(\/README)" - [F] RewriteRule "(\/readme)" - [F] RewriteRule "(\/moodle_readme)" - [F] RewriteRule "(\/upgrade\.txt)" - [F] RewriteRule "(phpunit\.xml\.dist)" - [F] RewriteRule "(\/tests\/behat\/)" - [F] RewriteRule "(\/fixtures\/)" - [F]
So konvertieren Sie diese Regeln in das für die URL-Umschreibung in IIS spezifische Format:
1. Starten Sie den IIS-Manager.
2. Wählen Sie links im Bereich Verbindungen die Option Standardwebsite aus.
3. Klicken Sie rechts in der Funktionsansicht auf URL-Rewriting.
4. Klicken Sie rechts im Bereich Aktionen auf Regeln importieren.
5. Kopieren Sie die oben aufgeführten Beispielregeln für mod_rewrite und fügen Sie sie in das Textfeld Rewrite-Regeln ein.
6. Der Tab Strukturansicht des Felds Konvertierte Regeln zeigt sofort das Ergebnis der Konvertierung an. Sie können auch auf den Tab XML-Ansicht klicken, um zu sehen, wie die Regeln in der Datei Web.config gespeichert sind.
Weitere Informationen finden Sie unter diesem Link: https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/importing-apache-modrewrite-rules.
Fehlerbehebung
Standardmäßig verwendet IIS benutzerdefinierte Fehlerseiten, die Fehlerdetails auf Produktionswebsites absichtlich verbergen:
Bei der Diagnose von Problemen in Moodle ist dies jedoch nicht sehr hilfreich. Sie können diese Standardfehlermeldungen in IIS vorübergehend deaktivieren, damit Sie eine spezifische Moodle-Fehlermeldung sehen. Setzen Sie dazu die Einstellung existingResponse für benutzerdefinierte Fehlerseiten in IIS für Ihre Moodle-Website auf PassThrough. Das Ergebnis ist, dass Moodle bei Auftreten eines Problems eine spezifischere Meldung über den Fehler anzeigt:
Die generische IIS-Fehlermeldung 404, die normalerweise keine Details zum Problem enthält, wird nicht mehr angezeigt.
Die Debugging-Option unter Website-Administration > Entwicklung > Debugging sollte ebenfalls aktiviert werden, damit Sie die Debugging-Meldungen sehen können.