WordPress est un système de gestion de contenu (CMS en anglais). Il est gratuit, et open-source. Ce logiciel écrit en PHP s’adosse à une base de données MySQL . Différents types de sites Web peuvent être créés: blogs, boutique, sites vitrine Etc.
En avril 2018, WordPress est utilisé par 30,6 % des sites web dans le monde.
su
# Mise à niveau du système
apt-get update
apt-get upgrade
2. CRÉER LA BASE MYSQL DE WORDPRESS
# Se connecter en ‘root’ au serveur MySQL
mysql -u root -p
=> roofofmysql
# Créer la base MySQL pour le blog / CMS WordPress pour domainepme.tld
mysql> CREATE DATABASE WP_domainepme;
# Création de l’utilisateur et affectation de son mot de passe
mysql> CREATE USER WP_domainepme@localhost;
mysql> SET PASSWORD FOR WP_domainepme@localhost = PASSWORD(« WP_domainepme#PASS »);
# Privilèges de l’utilisateur sur la base de données
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO ‘WP_domainepme’@’localhost’;
# Mise à jour des droits et sortie
mysql> FLUSH PRIVILEGES;
mysql> exit
3. CRÉER UN UTILISATEUR POUR L’ACCÈS FTP DE L’ADMINISTRATEUR DE WORDPRESS
Un administrateur wordpress sera chargé de l’administration de son blog. Il doit être consi-déré comme un utilisateur du système.
Son répertoire natif ne sera donc pas dans /home/ et devra être déplacé vers celui de l’applica-tion qu’il gère : /var/www/domainepme.tld/wordpress … Il y sera confiné par vsFTPd et n’aura pas accès au ‘Shell’
# Création d’un nouvel utilisateur ‘système’ avec son répertoire web
# comme répertoire utilisateur
useradd WP_domainepme -d /var/www/domainepme.tld/wordpress -m -s /bin/false
# mot de passe servant aussi pour le compte FTP
passwd WP_domainepme => WP_domainepme#PASS
# Droits nginx sur le répertoire
chown -R www-data:www-data /var/www/domainepme.tld/wordpress
chmod -R 755 /var/www/domainepme.tld/wordpress
4. TÉLÉCHARGEMENT ET INSTALLATION DE WP EN SOUS-DOMAINE
4.1 On télécharge la dernière version de wordpress
# On télécharge la dernière version de wordpress
cd /temp
wget https://fr.wordpress.org/wordpress-5.5.1-fr_FR.tar.gz
4.2 Décompression de l’archive dans le répertoire /tmp et déplacement
# Décompression
tar -xzvf wordpress-5.5.1-fr_FR.tar.gz
# déplacer le répertoire ‘wordpress’ dans un sous-domaine du site
mv wordpress /var/www/domainepme.tld/wordpress
4.3 Nettoyage de l’installation
# supprimer l’archive téléchargée
rm wordpress-5.5.1-fr_FR.tar.gz
# supprimer la config exemple
rm wp-config-sample.php
4.4 Copier le fichier de configuration d’exemple sous son nom final
cd /var/www/domainepme.tld/wordpress
cp wp-config-sample.php wp-config.php
5. CONFIGURATION DE WORDPRESS
5.1 Éditer le fichier de configuration:
nano wp-config.php
Modifiez les lignes suivantes comme indiqué :
/** MySQL settings – You can get this info from your web host **/
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘WP_domainepme)’);
/** MySQL database username */
define(‘DB_USER’, ‘Webmaster_domainepme’);
/** MySQL database password */
define(‘DB_PASSWORD’, ‘Webmaster_domainepme#PASS’);
/** MySQL host name. */
define(‘DB_HOST’, ‘localhost’);
/** Encodage de sécurité (‘salage’) */
define(‘AUTH_KEY’, ‘Phrase de salage 1’);
define(‘SECURE_AUTH_KEY’, ‘Phrase de salage 2’);
efine(‘LOGGED_IN_KEY’, ‘Phrase de salage 3’);
define(‘NONCE_KEY’, ‘Phrase de salage 4’);
define(‘AUTH_SALT’, ‘Phrase de salage 5’);
define(‘SECURE_AUTH_SALT’, ‘Phrase de salage 6’);
define(‘LOGGED_IN_SALT’, ‘Phrase de salage 7’);
define(‘NONCE_SALT’, ‘Phrase de salage 8’);
Dans le même fichier, insérer les paramètres suivants pour le FTP de WP :
//** Paramètres FTP */
/ filesystem method: « direct », « ssh », « ftpext », or « ftpsockets »
define(‘FS_METHOD’, ‘direct’);
// Chemin absolu vers la racine de wordpress
define(‘FTP_BASE’, ‘/var/www/domainepme.tld/blog/’);
// Chemin absolu vers le répertoire « wp-content »
define(‘FTP_CONTENT_DIR’, ‘/var/www/domainepme.tld/blog/wp-content/’);
// Chemin absolu vers le répertoire « wp-plugins »
define(‘FTP_PLUGIN_DIR ‘, ‘/var/www/domainepme.tld/blog/wp-content/plugins/’);
// Chemin absolu vers votre clé SSH publique
// define(‘FTP_PUBKEY’, ‘/home/username/.ssh/id_rsa.pub’);
// Chemin absolu vers votre clé SSH privée
// define(‘FTP_PRIVKEY’, ‘/home/username/.ssh/id_rsa’);
// votre login FTP ou SSH
define(‘FTP_USER’, ‘WP_domainepme’);
// le mot de passe de votre compte FTP
define(‘FTP_PASS’, ‘WP_domainepme#PASS’);
// Serveur FTPr
define(‘FTP_HOST’, ‘ftp.domainepme.tld’);
// Transferts via TLS
define(‘FTP_SSL’, true);
/** sets autosave interval */
/** MUST BE ABOVE THE PART THAT LOADS wp-settings.php ! **/
define(‘AUTOSAVE_INTERVAL’, 180 );
// define(‘WP_POST_REVISIONS’, 3 );
5.2 Sécurisation du fichier de configuration de wordpress
chmod 440 wp-config.php
6. CRÉATION D’UN HÔTE POUR NGINX
nano /etc/nginx/sites-available/blog
et y placer:
server {
listen 80 ;
#
server_name blog.domainepme.tld;
root /var/www/domainepme.tld/wordpress;
index index.php;
#
# force la redirection automatique http vers http
#
return 301 https://$server_name$request_uri;
}
#
###############
# SERVICE HTTPS
###############
#
server {
#
listen 443 ssl http2 ;
#
server_name blog.domainepme.tld;
root /var/www/domainepme.tld/wordpress;
index index.php;
#
ssl on;
#
# Certificats
ssl_certificate /etc/letsencrypt/live/domainepme.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domainepme.tld/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/domainepme.tld/fullchain.pem;
#
# OCSP Stapling – fetch OCSP records from URL in ssl_certificate and
# cache them
ssl_stapling on;
ssl_stapling_verify on;
#
# Certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
#
# Protocoles & Chiffrement
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers « ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384 »;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/dh2048.pem;
ssl_ecdh_curve secp384r1;
#
resolver 127.0.0.1 ;
# 213.251.188.141;
#
# Entêtes supplémentaires
add_header Strict-Transport-Security « max-age=15768000; includeSubDomains; preload »;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection « 1; mode=block »;
add_header X-Robots-Tag none;
#
# Max upload size
client_max_body_size 100M;
#
# Max upload size
client_max_body_size 100M;
#
# ne pas enlever la ligne suivante
# [Sed: Insertion]
#
# Interprétation des scripts php par Nginx
#
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_buffers 16 4k;
}
#
# Favicon du site
location = /favicon.ico { log_not_found off; access_log off; }
#
# Directives pour les ‘bots’
location = /robots.txt { allow all; log_not_found off; access_log off; }
#
# On met en ‘cache’ les fichiers statiques courants
location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|svg|eot|woff|ttf)$ { expires max; }
#
# refus de servir les fichiers commençant par un point
location ~ /\. { deny all; }
#
# Refus d’upload d’un fichier php (piratage)
location ~* /(?:uploads|files)/.*\.php$ { deny all; }
#
# … sinon tenter de servir le fichier demandé
location / { try_files $uri $uri/ =404; }
}
Rendre NGINX propriétaire et usager :
chown www-data:www-data /etc/nginx/sites-available/blog
Rendre NGINX propriétaire de l’hôte virtuel
chown www-data:www-data /etc/nginx/sites-available/blog
Activation de l’application
ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/blog
le service sera appelé par l’url : https://blog.domainepme.tld
7. TERMINAISON EN LIGNE’ DE L’INSTALLATION WORDPRESS
http://blog.domainepme.tld/wp-admin/install.php
8. ADMINISTRATION DU SITE
- url: https://www.domainepme.tld/wp-admin
- identifiant: Webmaster_domainepme
- Mot de Passe Webmaster_domainepme#PASS
NB : Le préfixe ‘WP » pour « Webmaster WordPress’
9. LISTE DE QUELQUES PLUG-INS RECOMMANDES
- Elementor (Composeur de pages par ‘glisser-déposer’)
- imagify (Réduit le ‘poids’ des images, sans altérer la qualité
- UdraftPlus (Sauvegardes différentielles / restauration du site)
- WpForms Lite (Construction de formulaire dans une page)
- Yoast SEO (Outils d’aide au référencement du site)
- WooCommerce (Boutique en ligne)
- WooCommerce Paypal Checkout (Interface de paiement en ligne via PayPal)
- Newsletter (e-mailing commercial)
- BuddyPress (Réseau social privé de type facebook)
- Bbpress (Forum)