Installer WordPress sur un serveur Debian LAMP

Prérequis: Avoir installé l’ensemble LAMP (Linux, Apache, MYSQL, PHP)

Pour information: Un script est disponible pour les membres.

Commencez par vous connecter à MariaDB en utilisant votre $USERNAME (qui peut être “root” ou “debian” au départ):

ATTENTION à chaque étape pensez à remplacer:
$USERNAME par votre utilisateur MariaDB
$PASSWORD par votre mot de passe MariaDB
$WORDPRESSPASSWORD par le mot de passe que vous choisirez pour l’utilisateur “wordpress_user” de la base de donnée “wordpress”
mariadb -u $USERNAME -p$PASSWORD

Créez une base de données wordpress, l’utilisateur correspondant et ajoutez les droits:

ATTENTION remplacez $WORDPRESSPASSWORD
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT ALL ON wordpress.* TO 'wordpress_user'@'localhost' IDENTIFIED BY '$WORDPRESSPASSWORD';
FLUSH PRIVILEGES;
QUIT;

On installe ensuite les dépendances PHP et on redémarre Apache:

sudo apt update && sudo apt upgrade
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
sudo systemctl restart apache2

Maintenant on indique à Apache qu’il doit rediriger le trafic vers le futur dossier WordPress:

ATTENTION ne suivez cette procedure que si vous désirez que WordPress soit la page d’accueil de votre nom de domaine, sinon il faudra adapter le “.conf” déjà existant.
sudo a2dissite 000-default.conf
sudo nano /etc/apache2/sites-available/wordpress.conf

Et collez cette configuration:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/wordpress

        <Directory /var/www/html/wordpress/>
            AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Continuons en redémarrant Apache après avoir activer le mode “rewrite” et on installe “curl”:

sudo a2enmod rewrite
sudo a2ensite wordpress.conf
sudo systemctl restart apache2
sudo apt install curl

On se place dans le dossier qu’affichera Apache on installe WordPress:

cd /var/www/html/
sudo curl -O https://wordpress.org/latest.tar.gz
sudo tar xzvf latest.tar.gz
sudo rm latest.tar.gz
cd wordpress
sudo touch .htaccess
sudo cp wp-config-sample.php wp-config.php
sudo mkdir ./wp-content/upgrade
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress/ -type d -exec chmod 775 {} \;
sudo find /var/www/html/wordpress/ -type f -exec chmod 640 {} \;

La partie qui demande un peu de concentration, la mise en place des Secret.Keys de WordPress:

sudo mv /var/www/html/wordpress/wp-config.php /var/www/html/wordpress/wp-config.old
sudo curl -s https://api.wordpress.org/secret-key/1.1/salt/
ATTENTION: Prenez bien soin de noter et remplacer chaque $KEY de votre configuration WordPress par les lignes indiquées en retour. Et remplacez $WORDPRESSPASSWORD
sudo nano /var/www/html/wordpress/wp-config.php

Et collez cette configuration:

<?php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wordpress_user' );
define( 'DB_PASSWORD', '$WORDPRESSPASSWORD' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8' );
define( 'DB_COLLATE', '' );
define('FS_METHOD', 'direct');

define('AUTH_KEY',         '$KEY');
define('SECURE_AUTH_KEY',  '$KEY');
define('LOGGED_IN_KEY',    '$KEY');
define('NONCE_KEY',        '$KEY');
define('AUTH_SALT',        '$KEY');
define('SECURE_AUTH_SALT', '$KEY');
define('LOGGED_IN_SALT',   '$KEY');
define('NONCE_SALT',       '$KEY');

$table_prefix = 'wp_';

define( 'WP_DEBUG', false );

if ( ! defined( 'ABSPATH' ) ) {
        define( 'ABSPATH', __DIR__ . '/' );
}

require_once ABSPATH . 'wp-settings.php';

Ça devrait donner quelque chose comme:

On termine par redemarer Apache:

sudo service apache2 restart

Il n’y a plus qu’a vous rendre sur votre “http://votre.nom.de.domaine” pour commencer la configuration du site:

Si vous n’avez pas encore mis en place la redirection en https grâce aux certificats Let’s Encrypt, c’est peut-être le moment…

Fail2Ban:

Si vous avez suivi le tuto concernant Fail2Ban vous pouvez sécuriser votre WordPress:

sudo nano /etc/fail2ban/jail.local

et ajoutez:

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/apache2/access.log
sudo nano /etc/fail2ban/filter.d/wordpress.conf

et collez:

[Definition]
failregex = <HOST>.*POST.*(wp-login\.php|xmlrpc\.php).* 200
sudo service fail2ban restart