Adm:Einrichtung Wikis MW1.35: Unterschied zwischen den Versionen

Aus Salzwiki
Zur Navigation springen Zur Suche springen
Zeile 426: Zeile 426:
* saltwiki.net, www.saltwiki.net
* saltwiki.net, www.saltwiki.net
* repository.hawk-hhg.de, salzwiki.hawk-hhg.de, saltwiki.hawk-hhg.de
* repository.hawk-hhg.de, salzwiki.hawk-hhg.de, saltwiki.hawk-hhg.de
* repository.hawk.de, salzwiki.hawk.de, saltwiki.hawk.de
* repository-sw.hawk.de, salzwiki.hawk.de, saltwiki.hawk.de


Für Tests auf einem Testserver können folgende Domain-Adressen verwendet werden:
Für Tests auf einem Testserver können folgende Domain-Adressen verwendet werden:

Version vom 20. Dezember 2022, 15:08 Uhr

Allgemeines[Bearbeiten]

In dieser Dokumentation werden die Installation und Konfiguration der Salzwikis (3 Wikisysteme) und der Erweiterungen (Extensions) beschrieben. Die Angaben beziehen sich auf Mediawiki Version 1.35.8 LTS.

Ein Update kann durch Installation über die bestehende Version erfolgen oder durch Neuinstallation und Transfer von Konfigurationen und Daten. Um Altlasten in der neueren Version zu vermeiden empfiehlt sich Letzteres.

Das Repositorium-Wiki (deutsch) ist zusammen mit dem allgemeinen Salzwiki (deutsch) zu installieren, bevor die Konfigurationen in den Dateien "LocalSettings.php" geändert und Erweiterungen installiert werden, weil Zugriffe vom allgemeinen Salzwiki auf das Repositorium zu konfigurieren sind.

Sprachvarianten[Bearbeiten]

  • Das deutsche SalzWiki ist einsprachig "Deutsch".
  • Das englische Saltwiki ist einsprachig "English".
  • Das Repositorium ist seit 2012 einsprachig "Englisch" (zuvor "Deutsch") und soll 2-sprachig "Deutsch/English" werden zukünftig nur noch für die Media-Dateien von "SalzWiki" und "SaltWiki" genutzt werden.

Zur Konfiguration der Standardspracheinstellung siehe unter Wiki-Konfiguration -> Spracheinstellungen

Installationen[Bearbeiten]

Server und Anwendungen[Bearbeiten]

  1. Betriebssystem Windows-Server 2016
  2. VMWare Tools (für Virtualisierung)
  3. Virenschutz Sophos
  4. Microsoft Visual C++ for Visual Studio 2019 Redistributable 64-Bit [VC16 x64]
  5. Webserver Apache 2.4.51 64-Bit VC16 mit OpenSSL 1.1.0i und anderen Zusatzmodulen
  6. Scriptsprache PHP 7.4.27 ThreadSafe 64-Bit (für Apache unter Windows) mit Zusatzmodulen
  7. Datenbank-Server (MySQL/)MariaDB 10.2.17 64-Bit
  8. Datenbank-Management-Anwendung phpMyAdmin 5.2.0
  9. Statistik-Anwendung Webalizer 2.23-08 32-Bit
  10. Wikisystem MediaWiki 1.35.8 LTS mit Erweiterungen und Zusatz-Software
  11. GhostScript AGPL 9.55.0 (für MediaWiki) 64-Bit-Version
  12. ImageMagick (für MediaWiki) Version 7.1.0-17-Q16-HDRI-x64-dll.exe
  13. php-imagick (für MediaWiki mit ImageMagick) neue 64-Bit-Version für PHP7.2-TS-VC15
  14. MiKTeX 21.12 NetInstaller-Version mit Complete-Installation (für MediaWiki mit Formeln) 64-Bit-Version
  15. Statistik-Anwendung Matomo, vormals Piwik

Programme unter Systemsteuerung Windows Server 2016[Bearbeiten]

Für MediaWiki 1.35.8 LTS[Bearbeiten]
  • GPL Ghostscript 9.55.0
  • ImageMagick 7.1.0-17 Q16-HDRI (64-bit) (2021-12-04)
  • Microsoft Visual C++ 2015-2019 Redistributable [VC16] (x64) - 14.29.30133
  • MikTeX 21.12
Für Server-System[Bearbeiten]
  • VMware Tools

Installationen ohne XAMPP[Bearbeiten]

Die Server und Anwendungen werden vergleichbar einer XAMPP-Installation in ein Verzeichnis "D:\noxampp\" installiert.

Für Apache, MariaDB, PHP, phpMyAdmin und Webalizer sind die Angaben in den Konfigurationsdateien anzupassen.

Es ist im Verzeichnis "D:\noxampp\htdocs\" ein Unterverzeichnis "info\" anzugelegen, in dem die selbst erstellte Datei "phpinfo.php" gespeichert wird.

Die Dienste für Apache und MariaDB müssen per Kommandozeile, die als Administrator zu öffnen ist, installiert werden, damit sie bei einem Windows-Server-Neustart ebenfalls neu gestartet werden.

Verzeichnisse und Dateien[Bearbeiten]

Im Verzeichnis "D:\noxampp\" befinden sich folgende Dateien mit Informationen und für die Konfiguration

  • apache
    • conf\httpd.conf
    • conf\extra\ mit Dateien httpd-default.conf, httpd-ssl.conf, httpd-vhosts.conf
  • htdocs
    • Angepasste Datei: index.php
    • info\phpinfo.php (neu erstelltes Verzeichnis mit selbst erstellter Datei)
    • Wiki-Verzeichnisse
  • mysql
    • my.ini
    • data
  • php
    • php.ini
  • phpmyadmin
    • config.inc.php
  • tmp (neu erstelltes Verzeichnis für Session-Dateien)
  • webalizer
    • webalizer.bat
    • conf-Dateien der Wikis

Firewall-Ausnahmen[Bearbeiten]

In der Windows Firewall sind 2 Ausnahmen für eingehenden Datenverkehr durch Erstellen eigener Regeln hinzuzufügen:

  • "Apache_TCP_80_443"
    • Beschreibung: Apache-Dienst TCP-Verbindungen Ports 80, 443 und 8080
    • Programme und Dienste: "D:\noxampp\apache\bin\httpd.exe"
    • Protokolle und Ports: Protokolltyp TCP, Ports 80, 443, 8080
    • Erweitert: Profil Öffentlich, Edgeausnahme blockieren
  • "IP_Bereiche_zulassen"
    • Beschreibung: fuer MSSQL von H.I. per VPN und von RedDot und HAWK-Website
    • Bereich: Remote-IP-Adressen für H.I.-DSL-Zugang, HAWK-VPN-Bereiche, RZ-Rechner, H.I.-Webserver, RedDot-Server, HAWK-Webserver, Datenbankserver
    • Erweitert: Profile Domäne, Privat und Öffentlich

Apache-Webserver[Bearbeiten]

Der Apache-Webserver ist als Dienst zu installieren, damit er nach Rechner-Neustarts durch Windows-Updates automatisch gestartet werden kann.

Für die Nutzung von Apache ohne XAMPP ist zu berücksichtigen, dass der Apache-Webserver für Windows nicht bei apache.org erhältlich ist. Es empfiehlt sich die Verwendung des Apache von https://www.apachelounge.com/download/.

Verzeichnisumbenennung[Bearbeiten]

Sofern das Verzeichnis für Apache "Apache24" lautet, wird es in "apache" umbenannt.

Die Pfadangaben in den Konfigurationsdateien mit der Dateiendung "conf" sind anschließend an die Bezeichnung "apache" anzupassen.

Apache als Dienst installieren[Bearbeiten]

Nachdem die Kommandozeile als Administrator geöffnet wurde, den Apache-Dienst installieren:

D:
cd noxampp\apache\bin
httpd -k install -n "Apache2.4.51"

Unter "Systemsteuerung => System und Sicherheit => Verwaltung => Dienste" prüfen, ob der Dienst "Apache2.4.51" den Starttyp "Automatisch" aufweist, damit er nach einem Rechner-Neustart automatisch gestartet wird.

Start und Stopp des Dienstes[Bearbeiten]

Der Apache-Webserver kann auf verschiedene Arten gestartet und angehalten werden:

  • Windows Task Manager => Dienste
  • mit Hilfe des Apache-Monitors
  • per Kommandozeile
Start und Stopp per Task Manager[Bearbeiten]

Um den Apache-Dienst zu starten oder anzuhalten, wird unter "Verwaltung => Dienste" nach Auswahl des Dienstes "Apache2.4.51" entweder im Menü unter "Aktion" oder mit der rechten Maustaste im Kontextmenü der jeweilige Vorgang ausgewählt.

Start und Stopp per Apache-Monitor[Bearbeiten]
  • Im Windows Explorer folgende Datei als Administrator ausführen: "D:\noxampp\apache\bin\ApacheMonitor.exe"
  • In der Taskleiste das Symbol mit der rechten Maustaste anklicken und "Open Apache Monitor" auswählen
  • Service "Apache2.4.51" markieren und Schaltfläche "Start" oder "Stop" auswählen
Start und Stopp per Kommandozeile[Bearbeiten]
NET start Apache2.4.51

cd D:\noxampp\
apache\bin\pv -f -k httpd.exe -q

Apache-Konfiguration[Bearbeiten]

Bei einer Installation von Apache ohne XAMPP werden die Verwendung von PHP und die Berechtigungen etwas anders als bei einer Installation mit XAMPP festgelegt. Die Haupt-Konfiguration unterscheidet sich je nach Installation wie folgt:

  • ohne XAMPP: in der Datei "apache\conf\httpd.conf"
  • mit XAMPP: zusätzlich in der Datei "apache\conf\extra\httpd-xampp.conf"

Konfigurationsdateien haben die Dateiendung ".conf" und befinden sich in folgenden Verzeichnispfaden:

  • Datei "apache\conf\httpd.conf
  • Dateien im Verzeichnis "apache\conf\extra\"
    • httpd-autoindex.conf
    • httpd-dav.conf
    • httpd-default.conf
    • httpd-manual.conf
    • httpd-mpm.conf
    • httpd-multilang-errordoc.conf
    • httpd-ssl.conf
    • httpd-vhosts.conf

httpd.conf[Bearbeiten]

In der Hauptkonfigurationsdatei werden allgemeine Einstellungen festgelegt, beispielsweise

  • Server-Pfad
  • Standard-HTTP-Port
  • Standard-Verzeichnis für Webdateien
  • Verwendung von Modulen wie "ssl" und "php"
  • Verwendung von Konfigurationsdateien aus dem Unterverzeichnis "\extra"
  • Schutz von Verzeichnissen

Sofern VHosts für verschiedene Domains in der Datei "httpd-vhosts.conf" eingerichtet werden, werden in der Datei "httpd.conf" nur HTTP-Aufrufe von "localhost" oder über die Server-IP festgelegt.

define SRVROOT "D:/noxampp/apache"
ServerRoot "${SRVROOT}"
...
Listen 80
..
## ThreadSafe von PHP verwenden, eingefügt 2018-09-03
LoadFile "D:/noxampp/php/php7ts.dll"
#LoadFile "D:/noxampp/php/php8ts.dll"
#LoadFile "/noxampp/php/libpq.dll"
...
LoadModule acces_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule log_rotate_module modules/mod_log_rotate.so # Zusatzmodul für LogRotation
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php7_module D:/noxampp/php/php7apache2_4.dll # Zusatzmodul für PHP7
#LoadModule session_module modules/mod_session.so
#LoadModule session_cookie_module modules/mod_session_cookie.so
#LoadModule session_crypto_module modules/mod_session_crypto.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule status_module modules/mod_status.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
...
ServerAdmin webmaster@hornemann-institut.de
ServerName 193.175.104.134:80
...
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
...
</Directory>
...
<IfModule dir_module>
  DirectoryIndex index.php index.html
</IfModule>
...
<Files ".ht*">
  Require all denied
</Files>
...
ErrorLog "logs/error.log"
LogLevel warn
<IfModule log_config_module>
 ## für HAWK wegen DSGVO angepasst
 #LogFormat "%h %l %u %t \"%r\" %>s %b \"{Referer}i\" \"{User-Agent}i\"" combined
 #LogFormat "%h %l %u %t \"%r\" %>s %b" common
 LogFormat "%h - - %t \"%r\" %>s %b \"{Referer}i\" \"{User-Agent}i\" %I %O" combined
 LogFormat "%h - - %t \"%r\" %>s %b" common
 <IfModule log_config_module>
  ## für HAWK wegen DSGVO angepasst
  #LogFormat "%h %l %u %t \"%r\" %>s %b \"{Referer}i\" \"{User-Agent}i\" %I %O" combinedio
  LogFormat "%h - - %t \"%r\" %>s %b \"{Referer}i\" \"{User-Agent}i\" %I %O" combinedio
 </IfModule>
 CustomLog "logs/access.log" common
</IfModule>
...
<IfModule alias_module>
 ## für HAWK eingefügt
 Alias /phpmyadmin D:/noxampp/phpmyadmin
 Alias /info D:/noxampp/info
 Alias /webalizer /D:/noxampp/webalizer
 ## für HAWK deaktiviert
 #ScriptAlias /cgi-bin/ "${SRVROOOT}/cgi-bin/"
</IfModule>
...
<IfModule headers_module>
 RequestHeader unset Proxy early
</IfModule>
...
<IfModule mime_module>
  ...
  #AddType text/html .shtml
  #AddOutputFilter INCLUDES .shtml
  #### Fuer PHP eingefügt
  AddType text/html .php
</IfModule>
...
#### aus "XAMPP" abgewandelt
<IfModule php7_module>
  PHPIniDir "D:/noxampp/php"
</IfModule>
...
## für HAWK aktiviert
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
...
# für HAWK eingefügt
# Spam-Bots abwehren
<IfModule rewerite_module>
 RewriteEngine On
 RewriteCond %{HTTP_USER_AGENT} ^Java.* [OR]
 RewriteCond %{HTTP_USER_AGENT} ^MJ12bot.* [OR]
 RewriteCond %{HTTP_USER_AGENT} ^SemrushBot.* [OR]
 RewriteCond %{HTTP_USER_AGENT} ^AhrefsBot.*
 RewriteRule ^(.*)$ - [F]
 #RewriteRule .* - [R=429]
</IfModule>
...
#### aus "XAMPP" abgewandelt
# PHP7
<IfModule php7_module>
 PHPIniDir "D:/noxampp/php"
</IfModule>
## PHP8
<IfModule php_module>
 PHPIniDir "D:/noxampp/php"
</IfModule>
...
#### aus "XAMPP" abgewandelt
<FilesMatch "\.php$">
  SetHandler application/x-httpd-php
</FilesMatch>
...

Verzeichnisauflistungen verhindern[Bearbeiten]

Um Auflistungen von Dateien und Verzeichnissen im Browser zu verhindern, ist die Angabe "-Indexes" in der Konfigurationsdatei "apache\conf\httpd.conf" und bei den VHosts erforderlich:

<Directory />
  #Options -Indexes +FollowSymLinks
  AllowOverride none
  Require all denied
</Directory>
...
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
  Options -Indexes +FollowSymLinks +Includes -ExecCGI
  AllowOverride All
  Require all granted
</Directory>

Verzeichniszugriff per Authentifizierung[Bearbeiten]

Um den Zugriff auf bestimmte Verzeichnisse per Browser nur für bestimmte Anmeldenamen mit Passwort zu erlauben, sind Angaben in folgenden Konfigurationsdateien erforderlich:

  • "noxampp\apache\conf\httpd.conf"
  • "noxampp\apache\conf\extra\httpd-default.conf"
  • "noxampp\phpMyAdmin\config.inc.php"


Apache-Datei "httpd.conf"[Bearbeiten]

ca. Z.300f

<Files ".ht*">
  Require all denied
<Files>
Apache-Datei "httpd-default.conf"[Bearbeiten]

Z.45

AccessFileName .htaccess

Verzeichniszugriff für bestimmte Rechner-IPs[Bearbeiten]

Um von einem Rechner aus, der sich in einem bestimmten Netz befindet oder per VPN mit einer bestimmten IP verbunden ist, per Browser die Verzeichnisse nicht nur mit "localhost" aufrufen zu können, müssen zusätzliche Angaben mit "Require ip ..." erfolgen; die Fehlermeldung für einen unzulässigen Aufruf wird mit "ErrorDocument ..." erzeugt.

In der Datei "D:\noxampp\apache\conf\httpd.conf" am Ende einfügen:


#### Verzeichnisschutz mit IP-Whitelist aus "xampp" abgewandelt
<LocationMatch "^/(?i:(?:info|phpmyadmin))">
  Require local
  Require ip 193.175.104.133
  Require ip 193.175.104.134
  Require ip 193.175.110.
  Require ip 10.104.5.
  Require ip 10.104.55.
  Require ip 10.104.56.
  Require ip 172.16.100.2
  Require ip 172.28.0.
  Require ip 192.168.170.
</LocationMatch>

Server-Software auf Fehlerseiten nicht anzeigen[Bearbeiten]

Standardmäßig werden auf den Fehlerseiten folgende Details des Webservers angezeigt:

  • Webserver-Bezeichnung "Apache"
  • Webserver-Version
  • Betriebssystem-Art "Win64"
  • OpenSSL-Version

Dies ist der Fall, obwohl üblicherweise "ServerSignature Off" in Apache eingestellt ist, weil ab Version 2.0.44 die Angaben für "ServerTokens" ausschlaggebend sind, siehe auch

In der Datei "httpd.conf" können unterhalb der "include"-Anweisungen folgende Angaben eingetragen werden, um auch im HTTP-Request möglichst wenig Informationen zu übermitteln:

ServerSignature Off
ServerTokens Prod

Um auch die minimalen Angaben auf den Fehlerseiten aus Sicherheitsgründen zu unterbinden, ist in der Datei "D:\xampp\apache\error\include\bottom.html" im span-Element für die Variable "SERVER_SOFTWARE" hinter dem öffnenden HTML-Kommentar ein Leerzeichen einzufügen:

<span><!-- #echo var="SERVER_SOFTWARE" --></span>

Konfiguration für HTTPS[Bearbeiten]

Es sind für HTTPS mit Verschlüsselung folgende Änderungen gegenüber HTTP ohne Verschlüsselung erforderlich:

  • Server-Zertifikat
    • Zertifikat von einer anerkannten Zertifizierungsstelle erstellen lassen
    • Anpassung einiger Zertifikat-Dateien für Apache unter Windows
  • Domain-Adresse für das Repositorium
  • Apache-Konfiguration
    • für Virtuelle Hosts mit Port 443 in der Datei "...\apache\extra\httpd-vhosts.conf"
    • für Deaktivierung des Passphrasen-Dialogs in der Datei "...\apache\extra\httpd-ssl.conf"
  • MediaWiki-Konfigurationsdatei "LocalSettings.php"
    • eigene PHP-Variable für das bei der Anfrage verwendete Protokoll
    • CreativeCommons-URLs mit https
Server-Zertifikat[Bearbeiten]

Das Server-Zertifikat wird vom Rechenzentrum der Hochschule beim DFN beantragt.

Zertifikat-Domains[Bearbeiten]

Das Zertifikat muss folgende Domain-Adressen abdecken:

  • salzwiki.de, www.salzwiki.de
  • saltwiki.net, www.saltwiki.net
  • repository.hawk-hhg.de, salzwiki.hawk-hhg.de, saltwiki.hawk-hhg.de
  • repository-sw.hawk.de, salzwiki.hawk.de, saltwiki.hawk.de

Für Tests auf einem Testserver können folgende Domain-Adressen verwendet werden:

  • test-szw.hawk.de
  • test-stw.hawk.de
  • test-rpw.hawk.de
Zertifikat-Dateien[Bearbeiten]

Die Zertifikat-Dateien haben folgende Bezeichnungen:

  • **öffentlicher Schlüssel**: "cert-***.pem" wird umbenannt in "salzwiki_cert_pem.crt"
  • **Zertifikate-Kette**: Es ist seit 2017 keine gesonderte Zertifikatsketten-Datei erforderlich, weil die Angaben zur Zertifizierungskette in den Zertifikaten enthalten sind.
  • privater Schlüssel
    • "salzwiki.de.key" ist mit einem Passwort geschützt und kann von Apache unter Windows nicht verwendet werden
    • "salzwiki.de.nopw.key" wird als Kopie von "salzwiki.de.key" ohne Passwortschutz erstellt

Um die Datei mit dem privaten Schlüssel ohne Passwortschutz verwenden zu können, müssen die Zugriffsrechte für das Verzeichnis "...\apache\conf\ssl.key\" erhöht werden. Das Verzeichnis darf nur vom Webserver ausgelesen werden können und nur mit Admin-Rechten zugänglich sein. Die Windows-Gruppe "Benutzer" muss von der Vererbung der übergeordneten Verzeichnisse befreit und aus den Verzeichnis-Berechtigungen entfernt werden.

Für die Erzeugung der Datei mit dem privaten Schlüssel ohne Passwortschutz kann die Datei "...\apache\bin\openssl.exe" verwendet werden, die inzwischen nicht mehr aus dem "XAMPP"-Paket hinzugefügt werden muss. Hierzu die geschützte Schlüsseldatei in dasselbe Verzeichnis einfügen, die Kommandozeile mit Admin-Rechten öffnen und folgenden Befehl eingeben:

openssl x509 -in salzwiki.de.key -out salzwiki.de.nopw.key

Die Zertifikate-Dateien werden in folgenden Unterverzeichnissen von "...\apache\conf\" gespeichert:

  • ssl.crt
    • salzwiki_cert_pem.crt
    • salzwiki_chain_pem.crt
  • ssl.key
    • salzwiki.de.key
    • salzwiki.de.nopw.key
Apache-Konfiguration ohne Passphrasen-Dialog[Bearbeiten]

Um unter Windows den Apache-Webserver bei Seitenaufrufen an der Passwort-Abfrage zu hindern ist in der Datei "httpd-ssl.conf" der Passphrasen-Dialog wie folgt auszukommentieren:

#SSLPassPhraseDialog builtin