WordPress est un système de gestion de contenu gratuit, open-source et le plus utilisé au monde. Il s'agit d'une plate-forme de blogs très puissante qui peut être utilisée pour héberger un blog, un site Web de portefeuille et une plate-forme de commerce électronique. WordPress utilise Apache/Nginx comme serveur Web, MariaDB/MySQL comme base de données et traitement PHP. WordPress fournit un grand nombre de thèmes et de plugins qui peuvent être utilisés pour personnaliser ses fonctionnalités.
Dans ce tutoriel, nous expliquerons comment installer WordPress avec Nginx sur le serveur CentOS 8, puis nous sécuriserons le serveur en utilisant un certificat SSL Let's Encrypt gratuit.
Prérequis
- Un serveur exécutant CentOS 8.
- Un mot de passe root est configuré sur votre serveur.
- Un nom de domaine valide pointe vers l'adresse IP de votre serveur.
Mise en route
Par défaut, SELinux est activé sur le serveur CentOS 8. Vous devrez donc d'abord le désactiver.
Vous pouvez le faire en éditant le fichier /etc/selinux/config :
nano /etc/selinux/config
Effectuez les modifications suivantes :
SELINUX=disabled
Enregistrez et fermez le fichier. Ensuite, redémarrez votre serveur pour appliquer les modifications.
Installer le serveur LEMP
Avant de commencer, vous devrez installer Nginx, MariaDB, PHP et d'autres packages requis sur votre serveur. Vous pouvez 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 tous les packages installés, démarrez Nginx, PHP-FPM, le service MariaDB et activez-les 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
Vous pouvez également vérifier l'état du service PHP-FPM avec la commande suivante :
systemctl status php-fpm
Vous devriez obtenir le résultat suivant :
? 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 vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer la base de données WordPress
Par défaut, le serveur MariaDB n'est pas sécurisé. Vous devrez donc d'abord le sécuriser. Vous pouvez le sécuriser avec la commande suivante :
mysql_secure_installation
Répondez à 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é, vous devriez 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, connectez-vous au shell MariaDB avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root lorsque vous y êtes invité, puis créez 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, videz les privilèges et quittez le shell MariaDB avec la commande suivante :
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Une fois votre base de données configurée, vous pouvez passer à l'étape suivante.
Télécharger WordPress
Vous pouvez 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é, extrayez le fichier téléchargé avec la commande suivante :
tar -xvzf latest.tar.gz
Ensuite, changez la propriété du répertoire wordpress en nginx :
chown -R nginx: /var/www/html/wordpress/
Ensuite, changez le répertoire en wordpress et renommez le fichier de configuration par défaut de wordpress :
cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php
Ensuite, modifiez le fichier wp-config.php dans votre éditeur de texte préféré :
nano wp-config.php
Définissez les informations de votre 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' );
Enregistrez et fermez le fichier lorsque vous avez terminé.
Configurer Nginx pour WordPress
Ensuite, vous devrez créer un fichier de configuration d'hôte virtuel Nginx pour servir WordPress. vous pouvez le créer avec la commande suivante :
nano /etc/nginx/conf.d/wordpress.conf
Ajoutez 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; } }
Enregistrez et fermez le fichier. Ensuite, vérifiez le nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -t
Vous devriez obtenir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Enfin, redémarrez le service Nginx pour appliquer les modifications de configuration :
systemctl restart nginx
Accéder au tableau de bord WordPress
WordPress est installé et configuré, il est maintenant temps d'accéder à l'interface Web.
Ouvrez votre navigateur Web et saisissez l'URL http://example.com . Vous serez redirigé vers la page suivante :
Fournissez toutes les informations requises telles que le nom du site, le nom d'utilisateur de l'administrateur, le mot de passe, l'adresse e-mail de l'administrateur et cliquez sur Installer WordPress bouton. Une fois l'installation terminée. Vous devriez voir la page suivante :
Cliquez sur connexion bouton. Vous serez redirigé vers la page de connexion de WordPress :
Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur et cliquez sur Connexion bouton. Vous devriez voir le tableau de bord WordPress sur la page suivante :
Sécuriser WordPress avec Let's Encrypt
Afin de sécuriser votre site WordPress avec le SSL gratuit Let's Encrypt, vous devrez installer le client Certbot Let's Encrypt sur votre système. Par défaut, Certbot n'est pas disponible dans le référentiel par défaut de CentOS 8. Vous devrez donc le télécharger depuis le site officiel de Certbot.
Vous pouvez télécharger et installer Certbot avec les 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écutez la commande suivante pour obtenir et installer un certificat SSL pour votre site Web WordPress.
certbot-auto --apache -d example.com
Il vous sera demandé de fournir une adresse e-mail et d'accepter les conditions d'utilisation. Vous devrez également choisir de rediriger ou non le trafic HTTP vers HTTPS. Veuillez sélectionner l'option appropriée et appuyez sur Entrée. Une fois l'installation terminée avec succès, vous devriez obtenir le résultat suivant :
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 Let's Encrypt
Le certificat Let's Encrypt est valable 90 jours. Il est donc recommandé de renouveler le certificat avant son expiration. Vous pouvez configurer la tâche Cron pour renouveler automatiquement le certificat.
Pour cela, créez la crontab avec la commande suivante :
crontab -e
Ajoutez la ligne suivante :
0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew
Enregistrez et fermez le fichier lorsque vous avez terminé.
Conclusion
Dans le didacticiel ci-dessus, nous avons appris à installer et à configurer WordPress avec Nginx sur le serveur CentOS. Nous avons également appris comment sécuriser un site WordPress avec le SSL gratuit Let's Encrypt. J'espère que vous pourrez désormais héberger facilement votre propre site Web WordPress facilement.