Hébergement WordPress sous CentOS

Logo WordPressCet article décrit l’installation du moteur de blog WordPress sur un serveur dédié tournant sous CentOS 7. WordPress est le CMS (Content Management System) ou SGC (Système de Gestion de Contenu) le plus utilisé au monde. Actuellement, près de 28 % des sites web dans le monde utilisent WordPress d’après les statistiques de W3Techs.com.

Prérequis

Installation

Basculer SELinux en mode permissif.

# setenforce 0

Le module mod_security semble poser problème avec WordPress. Pour l’instant on va donc le désactiver pour notre nouvel hôte virtuel.

# /etc/httpd/conf.d/40-blog.slackbox.fr.conf
...
# https://blog.slackbox.fr
<VirtualHost _default_:443>
  Header always set Strict-Transport-Security \
    "max-age=63072000; includeSubDomains"
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/html/slackbox-blog/html"
  <Directory "/var/www/html/slackbox-blog/html">
    Options +FollowSymlinks
    AllowOverride All
    <IfModule mod_security2.c>
      SecRuleEngine Off
    </IfModule>
  </Directory>

Créer la base de données.

# mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.52-MariaDB MariaDB Server

MariaDB [(none)]> create database `slackbox-wordpress`;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> grant all on `slackbox-wordpress`.* 
    -> to slackboxuser@localhost 
    -> identified by '********';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

Créer un répertoire de téléchargement en un endroit approprié et récupérer WordPress sur le site de l’éditeur.

# mkdir -pv webapps/wordpress
mkdir: création du répertoire « webapps »
mkdir: création du répertoire « webapps/wordpress »
# cd webapps/wordpress/
# links fr.wordpress.org

Suivre les liens Téléchargement > Télécharger au format .tar.gz. Télécharger l’application et quitter Links.

L’hôte virtuel se situera dans /var/www/html/slackbox-blog/html. Créer le répertoire parent, décompresser l’archive téléchargée à l’intérieur de ce répertoire et renommer le répertoire wordpress résultant en html.

# cd /var/www/html/
# mkdir slackbox-blog
# cd slackbox-blog/
# tar xzf /root/webapps/wordpress/wordpress-4.8-fr_FR.tar.gz 
# ls
wordpress
# mv wordpress/ html

Définir des droits d’accès sains par défaut. Pour les permissions, nous suivons les recommandations officielles adaptées à notre installation.

# cd /var/www/html/
# chown -R microlinux:microlinux slackbox-blog/
# find slackbox-blog/ -type d -exec chmod 0755 \{} \;
# find slackbox-blog/ -type f -exec chmod 0644 \{} \;

Permettre à WordPress de gérer wp-content.

# cd slackbox-blog/html/
# chown -R microlinux:apache wp-content/
# find wp-content/ -type d -exec chmod 0775 \{} \;
# find wp-content/ -type f -exec chmod 0664 \{} \;
# ls -ld wp-content/
drwxrwxr-x. 5 microlinux apache 4096  7 juil. 17:00 wp-content/
# ls -l wp-content/
total 16
-rw-rw-r--. 1 microlinux apache   28  8 janv.  2012 index.php
drwxrwxr-x. 4 microlinux apache 4096  7 juil. 17:00 languages
drwxrwxr-x. 3 microlinux apache 4096  7 juil. 17:00 plugins
drwxrwxr-x. 5 microlinux apache 4096  7 juil. 17:00 themes

À partir de là, on peut ouvrir l’URL du blog avec un navigateur.

Installation WordPress

Renseigner le nom de la base MySQL (slackbox-wordpress) et l’utilisateur associé (slackboxuser). Attention, le mot de passe MySQL s’affiche en clair dans l’interface.

Installation WordPress

Étant donné que nous avons défini des droits d’accès assez restrictifs, WordPress ne peut pas créer le fichier wp-config.php. Nous devons donc le faire à sa place, en définissant les permissions qui vont bien, et en effectuant un copier/coller du contenu affiché dans l’interface d’installation.

# cd /var/www/html/slackbox-blog/html/
# vim wp-config.php (copier/coller le contenu affiché)
# chown microlinux:apache wp-config.php 
# chmod 0660 wp-config.php 
# ls -l wp-config.php 
-rw-rw----. 1 microlinux apache 0 16 juil. 09:45 wp-config.php

Installation WordPress

La prochaine étape nous permet de renseigner le titre du site et de définir un administrateur pour le blog avant de finaliser l’installation.

Installation WordPress

À présent, on peut se connecter au Tableau de bord.

Installation WordPress

Le Tableau de bord dans sa configuration par défaut.

Installation WordPress

Et voici notre blog flambant neuf avec le thème par défaut.

Installation WordPress

WordPress et SELinux

Maintenant que notre installation est en place, voyons ce qu’en pense SELinux.

# sealert -a /var/log/audit/audit.log
100% done
found 9 alerts in /var/log/audit/audit.log
------------------------------------------
SELinux is preventing /usr/sbin/sendmail.postfix 
from read access on the file /etc/postfix/main.cf.

Lors d’une nouvelle installation de WordPress, un mail de bienvenue est envoyé à l’administrateur.

Installation WordPress

Apparemment, l’envoi de ce mail pose un problème à SELinux, qui nous suggère la solution suivante.

# setsebool -P httpd_can_sendmail=1

Configurer les permaliens personnalisés

Dans sa configuration par défaut, WordPress utilise un format de liens du style https://blog.slackbox.fr/?p=123. On va préférer un format du genre https://blog.slackbox.fr/exemple-article/. Dans le Tableau de bord, aller dans Réglages > Permaliens et sélectionner Nom de l’article.

Permaliens WordPress

Le problème, c’est qu’à partir de là, les pages ne s’affichent plus.

Not Found

Après avoir jeté un oeil sur l’utilisation des permaliens dans la documentation officielle, nous allons effectuer quelques modifications à la configuration d’Apache.

Nous avons désactivé l’option FollowSymlinks dans les directives globales. Nous devons donc la réactiver explicitement pour notre hôte virtuel. Quant à l’option AllowOverride, elle détermine ce que l’on peut mettre dans le fichier .htaccess.

# https://blog.slackbox.fr
<VirtualHost _default_:443>
  Header always set Strict-Transport-Security \
    "max-age=63072000; includeSubDomains"
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/html/slackbox-blog/html"
  <Directory "/var/www/html/slackbox-blog/html">
    Options +FollowSymlinks
    AllowOverride All
  </Directory>
  ServerName blog.slackbox.fr:443
  ServerAlias slackbox.fr
  SSLEngine on
  ...

Prendre en compte les modifications.

# systemctl reload httpd

À partir de là, l’interface de configuration des permaliens nous affiche un avertissement quant à la création du fichier .htaccess.

Wordpress .htaccess

La solution consiste ici à créer un fichier vide .htaccess à la racine de notre installation et d’autoriser le serveur à écrire dedans.

# cd /var/www/html/slackbox-blog/html/
# touch .htaccess
# chown microlinux:apache .htaccess 
# chmod 0660 .htaccess 
# ls -la .htaccess 
-rw-rw----. 1 microlinux apache 0 17 juil. 10:52 .htaccess

Si nous revenons maintenant dans l’interface de configuration des permaliens, nous nous apercevons que WordPress a effectivement écrit dans le fichier.

# cat .htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Dorénavant, les pages s’affichent correctement avec les permaliens personnalisés.

Gérer les extensions et les mises à jour

WordPress permet la gestion des extensions et des mises à jour dans le tableau de bord, sans pour autant installer un serveur FTP/SFTP local. Pour cela, il suffit d’éditer wp-config.php et d’ajouter la directive FS_METHOD à la fin du fichier.

/** Réglage des variables de WordPress et de ses fichiers inclus. */
require_once(ABSPATH . 'wp-settings.php');

/** Gérer les plugins et les mises à jour */
define('FS_METHOD','direct');

À partir de là, il suffit d’un simple clic pour mettre à jour WordPress ou pour installer une extension.

Touches finales

Une fois que tout est installé, on peut repasser SELinux en mode renforcé.

# setenforce 1

De même, on peut réactiver mod_security. Éditer /etc/httpd/conf.d/40-blog.slackbox.fr.conf et repasser SecRuleEngine à On.

 
<IfModule mod_security2.c>
  SecRuleEngine On
</IfModule>

L’installation ou la désinstallation de certaines extensions peut déclencher mod_security. Dans ce cas, la solution la plus simple consiste à le désactiver temporairement.

Ce contenu a été publié dans Documentation Microlinux, Hébergement, avec comme mot(s)-clé(s) , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *