Wie man MediaWiki mit Nginx und Let’s Encrypt SSL auf Ubuntu 20.04 installiert

MediaWiki ist eine Open-Source-Wiki-Software, die in PHP geschrieben ist. Sie ermöglicht es dir, deine eigene, selbstgehostete Wiki-Website auf dem Server zu erstellen. Es ist eine der beliebtesten Wiki-Plattformen aufgrund seiner Einfachheit und Anpassungsfähigkeit. Derzeit wird sie von vielen Unternehmen genutzt, um ihre Wikiseiten zu verwalten. Es bietet ein vielseitiges und kostenloses Werkzeug für die Veröffentlichung von Inhalten im Internet.

In diesem Tutorial zeigen wir dir, wie du MediaWiki mit Nginx Webserver und Let’s Encrypt SSL auf Ubuntu 20.04 installierst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Erste Schritte

Aktualisiere zunächst die Systempakete auf die aktuelle Version, indem du den folgenden Befehl ausführst:

apt-get update -y

Sobald alle Pakete aktualisiert sind, kannst du mit dem nächsten Schritt fortfahren.

Nginx, MariaDB und PHP installieren

MediaWiki benötigt den Webserver Nginx, den Datenbankserver MariaDB, PHP und andere Erweiterungen. Du kannst sie alle mit dem folgenden Befehl installieren:

apt-get install nginx mariadb-server php php-fpm php-mbstring php-xml php-json php-mysql php-curl php-intl php-gd php-mbstring texlive imagemagick unzip -y

Sobald alle Pakete installiert sind, installiere den Composer mit dem folgenden Befehl:

apt-get install composer -y

Als nächstes bearbeitest du die php.ini Datei und änderst die Standardeinstellungen:

nano /etc/php/7.4/fpm/php.ini

Ändere die folgenden Zeilen:

memory_limit = 512M
post_max_size =32M
upload_max_filesize = 32M
date.timezone = Asia/Kolkata

Speichere und schließe die Datei und starte den PHP-FPM neu, um die Änderungen zu übernehmen:

systemctl restart php7.4-fpm

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Erstelle eine MariaDB Datenbank

MediaWiki nutzt MariaDB als Datenbank-Backend, daher musst du eine Datenbank und einen Benutzer für MediaWiki erstellen.

Verbinde dich zuerst mit der MariaDB mit dem folgenden Befehl:

mysql

Sobald du verbunden bist, erstelle eine Datenbank und einen Benutzer mit dem folgenden Befehl:

MariaDB [(none)]> CREATE DATABASE mediadb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mediadb.* TO 'mediauser'@'localhost' IDENTIFIED BY 'password';

Als nächstes löschst du die Privilegien und beendest die MariaDB mit dem folgenden Befehl:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

MediaWiki herunterladen

Gehe zuerst auf die MediaWiki Webseite und wähle die neueste Version von MediaWiki. Führe dann den folgenden Befehl aus, um es auf deinen Server herunterzuladen:

wget https://releases.wikimedia.org/mediawiki/1.35/mediawiki-1.35.2.zip

Sobald der Download abgeschlossen ist, entpacke die heruntergeladene Datei mit dem folgenden Befehl:

unzip mediawiki-1.35.2.zip

Als nächstes verschiebst du das entpackte Verzeichnis in das Nginx Web-Root-Verzeichnis mit dem folgenden Befehl:

mv mediawiki-1.35.2 /var/www/html/mediawiki

Als nächstes wechselst du in das MediaWiki-Verzeichnis und installierst alle PHP-Abhängigkeiten mit dem folgenden Befehl:

cd /var/www/html/mediawiki
composer install --no-dev

Sobald alle Abhängigkeiten installiert sind, setze die richtigen Rechte und Eigentümer mit dem folgenden Befehl:

chown -R www-data:www-data /var/www/html/mediawiki
chmod -R 755 /var/www/html/mediawiki

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Nginx für MediaWiki konfigurieren

Als nächstes musst du eine Nginx-Konfigurationsdatei für den virtuellen Host von MediaWiki erstellen. Du kannst sie mit dem folgenden Befehl erstellen:

nano /etc/nginx/conf.d/wiki.conf

Füge die folgenden Zeilen hinzu:

server {
        listen 80;
        server_name wiki.example.com;

        root /var/www/html/mediawiki;
        index index.php;
   
        error_log /var/log/nginx/mediawiki.error;
        access_log /var/log/nginx/mediawiki.access;

        location / {
                try_files $uri $uri/ /index.php;
        }


        location ~ /\.ht {
          deny all;
         }

        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
            include snippets/fastcgi-php.conf;
        }
}

Speichere und schließe die Datei und überprüfe dann Nginx auf Syntaxfehler mit dem folgenden Befehl:

nginx -t

Du solltest die folgende Ausgabe sehen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte als nächstes den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Du kannst den Status von Nginx auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Du solltest die folgende Ausgabe sehen:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-06-02 05:06:48 UTC; 3s ago
       Docs: man:nginx(8)
    Process: 24594 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 24605 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 24606 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 2.8M
     CGroup: /system.slice/nginx.service
             ??24606 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??24607 nginx: worker process

Jun 02 05:06:48 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 02 05:06:48 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Access MediaWiki Web UI

Öffne nun deinen Webbrowser und gib die URL http://wiki.example.com ein. Du wirst auf die folgende Seite weitergeleitet:

MediaWiki

Klicke nun auf den Button “ Set up the wiki „. Du solltest die folgende Seite sehen:

Sprache auswählen

Hier wählst du deine Wiki-Sprache aus und klickst auf den Weiter-Button. Du solltest die folgende Seite sehen:

Lizenz akzeptieren

Klicke nun auf den Weiter-Button. Du solltest die folgende Seite sehen:

MySQL Datenbank Einstellungen

Gib nun deine Datenbankdetails an und klicke auf den Weiter-Button. Du solltest die folgende Seite sehen:

MediaWiki Installation

Wähle Use the same account as for installation und klicke auf den Continue Button. Du solltest die folgende Seite sehen:

Wiki-Name

Gib nun deinen Wiki-Site-Namen, deinen Benutzernamen und dein Passwort ein. Klicke dann auf den Weiter-Button. Du solltest die folgende Seite sehen:

Starte die Installationsprozedur

Klicke auf den Weiter-Button, um die Installation zu starten. Du solltest die folgende Seite sehen:

Installation erfolgreich beendet

Klicke auf den Weiter-Button. Sobald die Installation abgeschlossen ist, solltest du die folgende Seite sehen:

Lokale Einstellungen

Klicke nun auf den Download-Button, um die Datei LocalSettings.php auf dein System herunterzuladen. Kopiere diese Datei dann auf deinen Server in das MediaWiki Hauptverzeichnis und setze die richtigen Rechte mit dem folgenden Befehl:

chown www-data:www-data /var/www/html/mediawiki/LocalSettings.php

Als nächstes gehst du zurück zu deinem Webbrowser und klickst auf enter your wiki. Du solltest auf der folgenden Seite das MediaWiki Dashboard sehen:

MediaWiki installiert

MediaWiki mit Let’s Encrypt SSL sichern

Als nächstes musst du das Certbot Client-Paket installieren, um Let’s Encrypt SSL zu verwalten.

Zuerst installierst du Certbot mit dem folgenden Befehl:

apt-get install python3-certbot-nginx -y

Sobald die Installation abgeschlossen ist, führe den folgenden Befehl aus, um das Let’s Encrypt SSL auf deiner Website zu installieren:

certbot --nginx -d wiki.example.com

Du wirst aufgefordert, eine gültige E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren, wie unten gezeigt:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): hitjethva@gmail.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for wiki.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/wiki.conf

Als nächstes wählst du aus, ob der HTTP-Verkehr auf HTTPS umgeleitet werden soll oder nicht, wie unten gezeigt:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Gib 2 ein und drücke Enter, um die Installation abzuschließen. Du solltest die folgende Ausgabe sehen:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/wiki.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://wiki.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=wiki.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/wiki.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/wiki.example.com/privkey.pem
   Your cert will expire on 2021-12-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Jetzt ist deine Webseite mit Let’s Encrypt SSL gesichert. Du kannst sie sicher über die URL https://wiki.example.comaufrufen .

Fazit

Herzlichen Glückwunsch! Du hast erfolgreich MediaWiki mit Nginx und Let’s Encrypt SSL auf Ubuntu 20.04 installiert. Du kannst nun ganz einfach deine eigene Wikiseite mit MediaWiki hosten.

Das könnte dich auch interessieren …