Apache richtig konfigurieren

This page is a translated version of the page Apache configuration and the translation is 100% complete.

Apache HTTP Server (httpd) ist der am weitesten verbreitete Webserver in Zusammenhang mit MediaWiki.

Module

PHP

PHP als Modul für Apache

MediaWiki wurde so programmiert, dass es PHP als Apache-Modul verwendet. PHP auf deinem Webserver ist wahrscheinlich als Modul konfiguriert, wenn deine URLs wie folgt anfangen:

example.com/index.php/Main_Page

Um zu überprüfen, welche PHP-Version du verwendest oder wie PHP konfiguriert wurde, kannst du entweder auf der Seite Special:Version nachsehen oder eine Abfrage auf die phpinfo()-Methode machen.

Installieren Sie PHP, Apache und das PHP-Modul für Apache. Anschließend stellen Sie sicher, dass der Apache-Service läuft. Für bestimmte Befehle lesen Sie die Dokumentation Ihres Betriebssystems oder Ihrer Distribution.

PHP als CGI

Sollte PHP als CGI auf deinem Webserver laufen, wirst du wahrscheinlich nicht sehr schöne URLs als Standard vorgesetzt bekommen. Das „Problem” kannst du über die verkürzten URLs beheben.

CGIWrap

Solltest du auf deinem eigenen Server Apache laufen haben und dein PHP über CGI laufen, gibt es die Möglichkeit einer Installation von CGIWrap. Dieses Tool erlaubt es dir, den Apache-Server über einen anderen Benutzer für die CGIs laufen zu lassen.

Auf diese Art kannst du einen neuen Benutzer für deine MediaWiki-Seiten erstellen.

Eine genauere Anleitung für das Installieren von CGIWrap liegt außerhalb des möglichen Rahmens, da du es für deinen Server selber kompilieren musst - abhängig von der jeweiligen Version des Betriebssystems deines Servers.

Nichtsdestoweniger, um wenigstens einen kleinen Überblick zu bekommen, kannst du folgende Schritte für CGIWrap beachten:

  • Erstelle einen Wikimedia-Benutzer
useradd -M -s /sbin/nologin wikiuser
  • Du benötigst einen cgi-bin-Ordner, welcher CGIWrap enthält (z. B. /home/myuser/cgi-bin). Sobald alles einmal konfiguriert wurde, brauchst du nur mehr den cgi-bin-Ordner. Die Debugordner kannst du in einen anderen Ordner verschieben, sofern du sie benötigst. Deine CGIWrap-Datei sollte nur für Apache zugänglich sein (chown und chmod dementsprechend einstellen).
chown apache:apache cgiwrap
chmod 500 cgiwrap
  • Erstelle innerhalb des cgi-bin-Ordners einen Softlink auf das MediaWiki-Rootverzeichnis.
ln -s /home/myuser/public_html/wiki /home/myuser/cgi-bin/wikilink
  • In der .htaccess-Datei deines Wikis musst du folgende Definitionen festlegen:
AddHandler php-wrapper .php
Action php-wrapper /cgi-bin/cgiwrap/wikiuser/wikilink
  • Zum Schluss ist es sinnvoll, nur den in Schritt #1 erstellten Benutzer per chown und chmod die Berechtigungen auf alle .php-Dateien innerhalb des MediaWiki-Ordners zu erteilen.
find . -name \*.php -exec chown wikiuser:wikiuser {} \;
find . -name \*.php -exec chmod 500 {} \;

Die Dateien werden wie gewohnt verfügbar sein. Es ist nicht weiter nötig, in deinem Pfad cgi-bin zu definieren, weil es für dich automatisch erledigt wird.

Ich empfehle dir wärmstens, mit /cgi-bin/cgiwrapd... als php-wrapper zu starten, da dieser dir genau anzeigt, woran gerade gearbeitet wird. Weiters empfehle ich dir, den CGIWrap-Sourceordner solange bestehen zu lassen, bis alles funktioniert. Dieser Schritt ist eine einzige Trial-and-Error-Phase, welche länger dauert als man es normal gewöhnt ist.

Dennoch ist der Prozess den Aufwand wert, weil dein MediaWiki als eigener, seperater Prozess mit seiner eigenen UID laufen wird, ohne irgendwelche anderen UIDs zu stören. Inverse is also true, except for root, that can read anything anywhere.

mod_alias / mod_rewrite

Die empfohlene Methode der Verschönerung von URLs beinhaltet ein wenig Arbeit mit mod_alias. Ein anderer Lösungsweg benutzt stattdessen mod_rewrite.

mod_security

ModSecurity ist bekannt dafür, Probleme mit MediaWiki zu verursachen. Sollten dir deine Fehlermeldungen komisch vorkommen oder keinen Sinn ergeben, schau dir bitte deine Errorlog-Datei an, um den wirklichen Grund für die Fehlermeldungen zu sehen.

VisualEditor und Unterseiten

Um Fehler bei der Kontaktaufnahme mit dem Parsoid-Server zu vermeiden, muss AllowEncodedSlashes NoDecode zum VirtualHost-Konfigurationsblock des Wikis hinzugefügt werden (oder zur allgemeinen Serverkonfiguration, wenn keine VirtualHosts verwendet werden).[1]

Größe des Thread stack

Die Stack-Größe ist für jeden Apache-Thread konfigurierbar, wobei der Standardwert auf den jeweiligen System-OS variiert. Um MediaWiki auf einer Windows-Umgebung zum Laufen zu bringen, ist es nötig, die Stack-Größe zu erhöhen (sofern es Probleme gibt). Die Standardgröße liegt hier bei 1MB, was in den meisten Fällen zu Stack Overflows während der Laufzeit eines PHP-Skriptes führt. Die folgende Konfiguration der httpd.conf setzt die Stack-Größe auf 8MB - also die Standardgröße auf Linux-Umgebungen:

<IfModule mpm_winnt_module>
ThreadStackSize 8388608
</IfModule>

Crawlers und Bots

Sie sollten wirklich eine robots.txt -Datei verwenden, um gut funktionierenden Spidern mitzuteilen, dass sie dynamisch erstellte Seiten (beispielsweise Bearbeitungsseiten) nicht herunterladen sollen. Dadurch können Sie die Belastung Ihres Webservers verringern, Ihre Bandbreite schonen und Probleme mit doppelten Inhalten bei Suchmaschinen vermeiden. Schädliche Bots könnten jedoch Ihren Webserver blockieren und Ihre Bandbreite verschwenden, indem sie eine große Anzahl von Seiten in extrem kurzer Zeit herunterladen. Eine Anforderungsdrosselung kann hiervor schützen.

Siehe auch

Einzelnachweise