MediaWiki sous Apache

De EjnTricks

Lors de l'installation de MediaWiki sur une machine Ubuntu, l'instance a été exposée automatiquement sous le serveur Apache. Il est toutefois intéressant de comprendre les fichiers mis en place.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Configuration-icon.png Apache 2.2.X

La première installation de MediaWiki a été réalisée sur un serveur Ubuntu qui embarquait une version 2.2.X de Apache, à l'aide de la commande apt-get.

Le fichier mediawiki.conf était mis à disposition dans le répertoire conf.d sous /etc/apache2, ce dernier contenant l'ensemble des configurations de Apache. Le contenu du répertoire conf.d est le suivant:

-rw-r--r-- 1 root root  269 2010-11-18 22:16 charset
-rw-r--r-- 1 root root 3296 2010-11-18 22:16 localized-error-pages
lrwxrwxrwx 1 root root   26 2010-12-14 21:06 mediawiki.conf -> /etc/mediawiki/apache.conf
-rw-r--r-- 1 root root  143 2010-11-18 22:16 other-vhosts-access-log
-rw-r--r-- 1 root root 1424 2011-02-22 19:34 security
lrwxrwxrwx 1 root root   38 2011-08-13 18:05 sitesExtensions.conf -> /usr/share/sitesExtensions/apache.conf

Ce lien pointe donc vers le fichier /etc/mediawiki/apache.conf, dont le contenu est:

# Uncomment this to add an alias.
# This does not work properly with virtual hosts..
Alias /wiki /var/lib/mediawiki

<Directory /var/lib/mediawiki/>
        Options +FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
</Directory>

# some directories must be protected
<Directory /var/lib/mediawiki/config>
        Options -FollowSymLinks
        AllowOverride None
</Directory>
<Directory /var/lib/mediawiki/upload>
        Options -FollowSymLinks
        AllowOverride None
</Directory>

Au démarrage de Apache, le lien mediawiki.conf est parcouru, identifiant MediaWiki installé sous /var/lib/mediawiki et exposé sous l'URL wiki.


Configuration-icon.png Apache 2.4.6

Lors d'une mise à jour du serveur Ubuntu, Apache a été mis à jour en version 2.4.6. Cependant, l'impact est assez conséquent, car il y a eu une refonte de la gestion des droits d'accès.

La première modification concerne l'emplacement de la déclaration de MediaWiki. Le lien mediawiki.conf ne devait plus être déposé dans conf.d mais dans conf-enabled, sous /etc/apache2, suite à la version 2.4.6. Les commandes suivantes ont été exécutées:

#sudo ln -s /etc/mediawiki/apache.conf /etc/apache2/conf-enabled/mediawiki.conf
#sudo rm /etc/apache2/conf.d/mediawiki.conf

Cependant, cela ne suffit pas, la configuration des droits d'accès ayant été modifiée, les messages d'erreurs étant constatés dans les logs de Apache:

[Mon Dec 23 00:32:20.053997 2013] [authz_core:error] [pid 4264] [client 5.10.83.39:51905] AH01630: client denied by server configuration: /var/lib/mediawiki/index.php

La configuration a donc été modifiée afin d'être de nouveau opérationnelle:

# Uncomment this to add an alias.
# This does not work properly with virtual hosts..
Alias /wiki /var/lib/mediawiki

<Directory /var/lib/mediawiki/>
        Options +FollowSymLinks
        AllowOverride All
        # Old configurations for APACHE 2.2
        # order allow,deny
        # allow from all
        Require all granted
</Directory>

# some directories must be protected
<Directory /var/lib/mediawiki/maintenance>
        Options -FollowSymLinks
        AllowOverride None
</Directory>
<Directory /var/lib/mediawiki/config>
        Options -FollowSymLinks
        AllowOverride None
</Directory>
<Directory /var/lib/mediawiki/upload>
        Options -FollowSymLinks
        AllowOverride None
</Directory>


Configuration-icon.png Configuration pour un domaine spécifique

Au fil du temps, le serveur Apache a été enrichi sur la machine, afin de servir différents domaine. La première configuration mise en place rendait l'application disponible sur l'ensemble des domaines, chose qui n'était pas souhaitée. Le lien mis en place sous /etc/apache2/conf-enabled a été "déplacé" sous /etc/apache2/conf-available, afin d'être dans la philosophie du paquet Ubuntu. Le contenu du ce répertoire est le suivant.

#sudo rm /etc/apache2/conf-enabled/mediawiki.conf
#sudo ln -s /etc/mediawiki/apache.conf /etc/apache2/conf-available/mediawiki.conf
#sudo ls -l /etc/apache2/conf-available
-rw-r--r-- 1 root root  315 juil. 20  2013 charset.conf
-rw-r--r-- 1 root root  465 août  15 23:34 httpd.conf
-rw-r--r-- 1 root root 3224 juil. 20  2013 localized-error-pages.conf
lrwxrwxrwx 1 root root   26 août  16 17:46 mediawiki.conf -> /etc/mediawiki/apache.conf
-rw-r--r-- 1 root root  189 juil. 20  2013 other-vhosts-access-log.conf
-rw-r--r-- 1 root root 2190 juil. 20  2013 security.conf
-rw-r--r-- 1 root root  455 janv.  7  2014 serve-cgi-bin.conf

A présent, la configuration Apache pour MediaWiki est mise à disposition et il reste à la référencer à l'aide de l'instruction Include dans le fichier de configuration du domaine souhaité, à savoir /etc/apache2/sites-enabled/000-default.conf, pour le domaine www.jouvinio.net.

<VirtualHost *:80>
        ServerAdmin ejouvin@free.fr

        DocumentRoot /var/www/default
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/default>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                # Old configuration for APACHE 2.2
                # Order allow,deny
                # allow from all
                Require all granted
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                # Old configuration for APACHE 2.2
                # Order allow,deny
                # Allow from all
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Include /etc/apache2/conf-available/mediawiki.conf

</VirtualHost>