Serveur mediawiki basé docker

De knowledge
Aller à la navigation Aller à la recherche

Présentation

Pur exemple de récursivité, cette page décrit la mise en place du site sur lequel elle est écrite. C'est donc un texte "cosmogonique" conceptuellement "Apocryphe"... comme la bible!

Préparation

Prérequis

  • Un serveur FRONT (une VM) avec Docker installé et Apache configuré en "reverse proxy". Un Virtual host est également configuré pour notre site.
  • Un serveur de base de données mysql ou mariaDB (moi il est installé sur un sous réseau "back" non accessible d'internet mais accessible du serveur FRONT (réseau 10.0.0.0/8)
  • Le fichier de configuration LocalSettings.php et le fichier image qui symbolise le wiki (pour moi c'est homer.png que l'on retrouve ce contre en haut a gauche).

Nettoyage

Si on avait "joué" avant avec le serveur il est préférable d'ffacer tout ce qui ne sert plus à rien.

sudo docker system prune -a

Efface tout les containers qui ne tournent pas. (attention à ce que vous faites).

Installation

On va créer le réseau local sur lequel notre container mediawiki va tourner. Si ce n'est pas le premier container "en frontal" sur ce serveur cette ligne est inutiles votre réseau existe déjà

sudo docker network create --subnet=172.18.0.0/16 front-net

On instancie une image de "mediawiki" sous le nom de "knowledge-mediawiki" en l'attachant au réseau "front-net" et en lui donnant l'adresse IP 172.18.0.100 (c'est un choix arbitraire on peut changer cette adresse n'importe où dans le "netmask" 172.10.x.x.

sudo docker container run --net front-net --ip 172.18.0.100 -d --name knowledge-mediawiki mediawiki

On vérifie la création :

sudo docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e1868b5c70e4 mediawiki "docker-php-entrypoi…" 7 minutes ago Up 7 minutes 80/tcp knowledge-mediawiki

On vérifie que la machine est connectée au réseau en faisant la liste des serveurs sur le sous réseau

nmap -sP 172.18.0.0/16 #pour la liste des IP associées

nmap -sP 172.18.0.0/24 #pour les 256 premères

Starting Nmap 7.80 ( https://nmap.org ) at 2023-06-10 19:30 CEST
Nmap scan report for xxxxx (172.18.0.1)
Host is up (0.049s latency).
Nmap scan report for 172.18.0.100
Host is up (0.0035s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 4.92 seconds

On voit bien notre container en 172.18.0.100

On teste la connectivité http:

curl -i http://172.18.0.100

Qui nous dit :

HTTP/1.1 301 Moved Permanently
Date: Sat, 10 Jun 2023 17:33:30 GMT
Server: Apache/2.4.56 (Debian)
X-Powered-By: PHP/8.1.19
X-Content-Type-Options: nosniff
Vary: Accept-Encoding,Cookie
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: private, must-revalidate, max-age=0
Last-Modified: Sat, 10 Jun 2023 17:33:30 GMT
Location: https://knowledge.pinon-hebert.fr/index.php/Accueil
X-Request-Id: b2c445af2999da8469c434c1
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

On va donc chercher la page où on nous dit d'aller.

https://knowledge.pinon-hebert.fr/index.php/Accueil

On reçoit une page qui nous dit :

LocalSettings.php not found.

Tout tourne bien il reste plus qu'a configurer.

Configuration

Les fichiers de config

sudo docker cp LocalSettings.php knowledge-mediawiki:/var/www/html
sudo docker cp homer.png knowledge-mediawiki:/var/www/html/resources/assets/homer.png

Si le fichier "LocalSettings.php" est correctement remplis le site marchera bien. Sinon on peut utiliser l'interface de configuration de mediawiki sur la page de garde principale du serveur "non configuré".

Passage du serveur apache du container en "prod"

On commence par récupérer le fichier /etc/apache2/conf-available/security.conf.

sudo docker cp knowledge-mediawiki:/etc/apache2/conf-available/security.conf .

On le modifie pour mettre les deux variables de cette façon;

ServerTokens Prod
ServerSignature Off

On le renvoie sur le container knowledge-mediawiki.

sudo docker cp knowledge-mediawiki:/etc/apache2/conf-available/security.conf .
sudo docker container restart knowledge-mediawiki

Et c'est bon pour le container.

La configuration du "reverse proxy"

On modifie le fichier de conf du reverse proxy Apache (un autre RP est utilisable mais moi c'est ... Apache).

On modifie le fichier knowledge-ssl.conf.

sudo vi /etc/apache2/sites-available/knowledge-ssl.conf

Et, dans le "virtual host" on ajoute :

               ProxyPass / http://172.18.0.100/
               ProxyPassReverse / http://172.18.0.100/

On recharge la conf apache:

sudo systemctl reload apache2

Et on peut se connecter depuis l'internet "public" https://knowledge.pinon-hebert.fr/index.php/Accueil dans un navigateur !!!!

Mainpage.png

Et ça marche!