Comment installer WordPress avec Nginx et Let’s Encrypt SSL sur CentOS 8

WordPress est un système de gestion de contenu gratuit, open-source et le plus utilisé dans le monde. C’est une plateforme de blogging très puissante qui peut être utilisée pour héberger un blog, un site Web de portfolio et une plateforme de commerce électronique. WordPress utilise Apache/Nginx comme serveur Web, MariaDB/MySQL comme base de données et le traitement PHP. WordPress propose un très grand nombre de thèmes et de plugins qui peuvent être utilisés pour personnaliser ses fonctionnalités.

Dans ce tutoriel, nous allons expliquer comment installer WordPress avec Nginx sur un serveur CentOS 8, puis nous sécurisons le serveur en utilisant un certificat SSL gratuit Let’s Encrypt.

Conditions préalables

  • Un serveur exécutant CentOS 8.
  • Un mot de passe root est configuré sur ton serveur.
  • Un nom de domaine valide est pointé vers l’adresse IP de ton serveur.

Mise en route

Par défaut, SELinux est activé dans le serveur CentOS 8. Tu devras donc d’abord le désactiver.

Tu peux le faire en modifiant le fichier /etc/selinux/config :

nano /etc/selinux/config

Apporte les modifications suivantes :

SELINUX=disabled

Enregistre et ferme le fichier. Ensuite, redémarre ton serveur pour appliquer les modifications.

Installer le serveur LEMP

Avant de commencer, tu dois installer Nginx, MariaDB, PHP et les autres paquets nécessaires sur ton serveur. Tu peux tous les installer en exécutant la commande suivante :

yum install nginx php php-cli php-curl php-zip php-mbstring php-mysqlnd php-fpm curl unzip mariadb-server -y

Une fois que tous les paquets sont installés, démarre le service Nginx, PHP-FPM, MariaDB et active-les pour qu’ils démarrent après le redémarrage du système :

systemctl start nginx
systemctl enable nginx
systemctl start mariadb
systemctl enable mariadb
systemctl start php-fpm
systemctl enable php-fpm

Tu peux aussi vérifier l’état du service PHP-FPM avec la commande suivante :

systemctl status php-fpm

Tu devrais obtenir la sortie suivante :

? php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-10-17 05:39:11 EDT; 4min 40s ago
 Main PID: 1475 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 5060)
   Memory: 28.5M
   CGroup: /system.slice/php-fpm.service
           ??1475 php-fpm: master process (/etc/php-fpm.conf)
           ??1478 php-fpm: pool www
           ??1479 php-fpm: pool www
           ??1480 php-fpm: pool www
           ??1481 php-fpm: pool www
           ??1482 php-fpm: pool www

Oct 17 05:39:10 centos8 systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 17 05:39:11 centos8 systemd[1]: Started The PHP FastCGI Process Manager.

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer la base de données WordPress

Par défaut, le serveur MariaDB n’est pas sécurisé. Tu devras donc d’abord le sécuriser. Tu peux le sécuriser avec la commande suivante :

mysql_secure_installation

Réponds à toutes les questions comme indiqué ci-dessous :

Enter current password for root (enter for none):
Set root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Une fois sécurisé, tu devrais obtenir le résultat suivant :

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Ensuite, connecte-toi au shell MariaDB avec la commande suivante :

mysql -u root -p

Indique ton mot de passe root à l’invite puis crée une base de données et un utilisateur pour WordPress avec les commandes suivantes :

MariaDB [(none)]> CREATE DATABASE wpdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES on wpdb.* to 'wpuser'@'localhost' identified by 'password';

Ensuite, vide les privilèges et quitte le shell MariaDB avec la commande suivante :

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

Une fois que ta base de données est configurée, tu peux passer à l’étape suivante.

Télécharge WordPress

Tu peux télécharger la dernière version de WordPress avec la commande suivante :

cd /var/www/html
wget https://wordpress.org/latest.tar.gz

Une fois téléchargé, extrais le fichier téléchargé avec la commande suivante :

tar -xvzf latest.tar.gz

Ensuite, change la propriété du répertoire wordpress pour la nginx :

chown -R nginx: /var/www/html/wordpress/

Ensuite, change le répertoire en wordpress et renomme le fichier de configuration par défaut de wordpress :

cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php

Ensuite, modifie le fichier wp-config.php dans ton éditeur de texte préféré :

nano wp-config.php

Définis les informations de ta base de données comme indiqué ci-dessous :

/** The name of the database for WordPress */
define( 'DB_NAME', 'wpdb' );

/** MySQL database username */
define( 'DB_USER', 'wpuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

Sauvegarde et ferme le fichier lorsque tu as terminé.

Configurer Nginx pour WordPress

Ensuite, tu devras créer un fichier de configuration d’hôte virtuel Nginx pour servir WordPress. Tu peux le créer avec la commande suivante :

nano /etc/nginx/conf.d/wordpress.conf

Ajoute les lignes suivantes :

server {
    listen 80;
    server_name example.com;
    root /var/www/html/wordpress;
    index index.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

}

Sauvegarde et ferme le fichier. Ensuite, vérifie que Nginx n’a pas d’erreur de syntaxe avec la commande suivante :

nginx -t

Tu devrais obtenir la sortie suivante :

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

Enfin, redémarre le service Nginx pour appliquer les changements de configuration :

systemctl restart nginx

Accéder au tableau de bord de WordPress

WordPress est installé et configuré, il est maintenant temps d’accéder à l’interface Web.

Ouvre ton navigateur Web et tape l’URL http://example.com. Tu seras redirigé vers la page suivante :

Assistant d'installation de WordPress

Fournis toutes les informations requises comme le nom du site, le nom d’utilisateur admin, le mot de passe, l’email admin et clique sur le bouton Installer WordPress. Une fois l’installation terminée. Tu devrais voir la page suivante :

WordPress a été installé avec succès

Clique sur le bouton de connexion. Tu seras redirigé vers la page de connexion de WordPress :

Connexion WordPress

Indique ton nom d’utilisateur admin, ton mot de passe et clique sur le bouton Connexion. Tu devrais voir le tableau de bord WordPress sur la page suivante :

Tableau de bord de l'administration de WordPress

Sécuriser WordPress avec Let’s Encrypt

Pour sécuriser ton site WordPress avec le SSL gratuit Let’s Encrypt, tu dois installer le client Certbot Let’s Encrypt dans ton système. Par défaut, Certbot n’est pas disponible dans le référentiel par défaut de CentOS 8. Tu devras donc le télécharger depuis le site officiel de Certbot.

Tu peux télécharger et installer Certbot à l’aide des commandes suivantes :

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Maintenant, exécute la commande suivante pour obtenir et installer un certificat SSL pour ton site Web WordPress.

certbot-auto --apache -d example.com

Il te sera demandé de fournir une adresse e-mail et d’accepter les conditions de service. Tu devras aussi choisir de rediriger ou non le trafic HTTP vers HTTPS. Sélectionne l’option appropriée et appuie sur la touche Entrée. Une fois l’installation terminée, tu devrais obtenir la sortie suivante :

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2019-08-14. 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"
 - 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

Configurer le renouvellement automatique de Let’s Encrypt

Le certificat Let’s Encrypt est valable pendant 90 jours. Il est donc recommandé de renouveler le certificat avant qu’il n’expire. Tu peux configurer la tâche Cron pour renouveler le certificat automatiquement.

Pour ce faire, crée la crontab avec la commande suivante :

crontab -e

Ajoute la ligne suivante :

0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew

Sauvegarde et ferme le fichier lorsque tu as terminé.

Conclusion

Dans le tutoriel ci-dessus, nous avons appris à installer et à configurer WordPress avec Nginx sur un serveur CentOS. Nous avons également appris à sécuriser le site WordPress avec le SSL gratuit de Let’s Encrypt. J’espère que tu peux maintenant héberger facilement ton propre site WordPress.

Vous aimerez aussi...