MediaWiki te installeren met Nginx en Let’s Encrypt SSL op Ubuntu 20.04

MediaWiki is een open-source wiki software geschreven in PHP. Je kunt er je eigen zelf gehoste wiki-website mee maken op de server. Het is een van de populairste wikiplatformen vanwege zijn eenvoud en aanpasbaarheid. Momenteel wordt het door veel bedrijven gebruikt om hun wikipagina’s te beheren. Het biedt een veelzijdig en gratis hulpmiddel voor het publiceren van inhoud op het internet.

In deze handleiding laten we zien hoe je MediaWiki installeert met Nginx webserver en Let’s Encrypt SSL op Ubuntu 20.04.

Voorwaarden

  • Een server waarop Ubuntu 20.04 draait.
  • Een geldige domeinnaam gekoppeld aan het IP van je server.
  • Een root wachtwoord is geconfigureerd op de server.

Aan de slag

Werk eerst de systeempakketten bij naar de bijgewerkte versie door het volgende commando uit te voeren:

apt-get update -y

Als alle pakketten zijn bijgewerkt, kun je doorgaan met de volgende stap.

Installeer Nginx, MariaDB en PHP

MediaWiki vereist Nginx webserver, MariaDB databaseserver, PHP en andere extensies. Je kunt ze allemaal installeren met het volgende commando:

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

Zodra alle pakketten zijn geïnstalleerd, installeer je de Composer met het volgende commando:

apt-get install composer -y

Bewerk vervolgens het php.ini bestand en verander de standaardinstellingen:

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

Wijzig de volgende regels:

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

Sla het bestand op en sluit het en herstart dan de PHP-FPM om de wijzigingen toe te passen:

systemctl restart php7.4-fpm

Als je klaar bent, kun je doorgaan met de volgende stap.

Maak een MariaDB Database aan

MediaWiki gebruikt MariaDB als database backend, dus moet je een database en gebruiker voor MediaWiki aanmaken.

Maak eerst verbinding met MariaDB met het volgende commando:

mysql

Zodra je verbonden bent, maak je een database en gebruiker aan met het volgende commando:

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

Spoel vervolgens de privileges door en verlaat de MariaDB met het volgende commando:

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

Als je klaar bent, kun je doorgaan met de volgende stap.

MediaWiki downloaden

Ga eerst naar de MediaWiki website en kies de laatste versie van de MediaWiki. Voer dan het volgende commando uit om het naar je server te downloaden:

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

Zodra de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:

unzip mediawiki-1.35.2.zip

Verplaats vervolgens de uitgepakte directory naar de Nginx web root directory met het volgende commando:

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

Verander vervolgens de directory naar de MediaWiki en installeer alle PHP afhankelijkheden met het volgende commando:

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

Zodra alle afhankelijkheden zijn geïnstalleerd, stel je de juiste toestemming en eigendom in met het volgende commando:

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

Als je klaar bent, kun je doorgaan naar de volgende stap.

Nginx configureren voor MediaWiki

Vervolgens moet je een Nginx virtuele host configuratiebestand maken voor MediaWiki. Je kunt het aanmaken met het volgende commando:

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

Voeg de volgende regels toe:

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;
        }
}

Sla het bestand op en sluit het en controleer dan de Nginx op een syntaxisfout met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten zien:

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

Start vervolgens de Nginx-service opnieuw op om de wijzigingen toe te passen:

systemctl restart nginx

Je kunt ook de status van de Nginx controleren met het volgende commando:

systemctl status nginx

Je zou de volgende uitvoer moeten zien:

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

Toegang tot MediaWiki Web UI

Open nu je webbrowser en typ de URL http://wiki.example.com. Je wordt doorgestuurd naar de volgende pagina:

MediaWiki

Klik nu op de knop Wiki instellen. Je zou de volgende pagina moeten zien:

Taal kiezen

Kies hier je wiki-taal en klik op de knop Doorgaan. Je zou de volgende pagina moeten zien:

Accepteer licentie

Klik nu op de knop Doorgaan. Je zou de volgende pagina moeten zien:

MySQL database-instellingen

Geef nu je databasegegevens op en klik op de knop Doorgaan. Je zou de volgende pagina moeten zien:

MediaWiki installatie

Selecteer Gebruik dezelfde account als voor de installatie en klik op de knop Doorgaan. Je zou de volgende pagina moeten zien:

Wiki-naam

Geef nu je wiki site naam, gebruikersnaam en wachtwoord op. Klik dan op de knop Doorgaan. Je zou de volgende pagina moeten zien:

Start de installatieprocedure

Klik op de knop Doorgaan om de installatie te starten. Je zou de volgende pagina moeten zien:

Installatie succesvol voltooid

Klik op de knop Doorgaan. Als de installatie voltooid is, zou je de volgende pagina moeten zien:

Lokale instellingen

Klik nu op de downloadknop om het bestand LocalSettings.php naar je systeem te downloaden. Kopieer dit bestand vervolgens naar je server in de MediaWiki-hoofdmap en stel de juiste rechten in met het volgende commando:

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

Ga vervolgens terug naar je webbrowser en klik op enter your wiki. Je zou het MediaWiki dashboard op de volgende pagina moeten zien:

MediaWiki geïnstalleerd

MediaWiki beveiligen met Let’s Encrypt SSL

Vervolgens moet je het Certbot client pakket installeren om de Let’s Encrypt SSL te beheren.

Installeer eerst de Certbot met het volgende commando:

apt-get install python3-certbot-nginx -y

Zodra de installatie klaar is, voer je het volgende commando uit om de Let’s Encrypt SSL op je website te installeren:

certbot --nginx -d wiki.example.com

Je wordt gevraagd een geldig e-mailadres op te geven en de servicevoorwaarden te accepteren zoals hieronder weergegeven:

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): [email protected]

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

Kies vervolgens of je HTTP-verkeer wel of niet wilt omleiden naar HTTPS, zoals hieronder te zien is:

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

Typ 2 en druk op Enter om de installatie te voltooien. Je zou de volgende uitvoer moeten zien:

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.

Nu is je website beveiligd met Let’s Encrypt SSL. Je kunt hem veilig benaderen via de URL https://wiki.example.com.

Conclusie

Gefeliciteerd! Je hebt met succes MediaWiki met Nginx en Let’s Encrypt SSL geïnstalleerd op Ubuntu 20.04. Je kunt nu gemakkelijk je eigen wikisite hosten met MediaWiki.