WordPress est le logiciel de blogs et de gestion de contenu open source le plus largement utilisé qui alimente environ 60 millions de sites Web. Il est écrit en PHP et utilise MariaDB/MySQL comme base de données.
Ce tutoriel vous aide à installer WordPress 5.x avec Nginx sur Ubuntu 18.04 / Ubuntu 16.04.
Nous verrons également comment installer Let’s Encrypt SSL pour WordPress pour une livraison sécurisée du site Web.
Installer la pile LEMP
Avant de continuer, vous voudrez peut-être voir comment installer la pile LEMP.
Installer la pile LEMP (Nginx, MariaDB et PHP) sur Ubuntu 18.04
Installer la pile LEMP (Nginx, MariaDB et PHP) sur Ubuntu 16.04
Installer les extensions PHP
Les extensions suivantes sont nécessaires pour installer et exécuter WordPress sur Ubuntu OS.
sudo apt install -y php-mysql php-dom php-simplexml php-ssh2 php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-imagick php-json php-mbstring php-posix php-sockets php-tokenizer
Configurer le bloc de serveur Nginx pour WordPress
Créons un bloc de serveur Nginx pour l'installation de WordPress. Les fichiers de configuration de l'hôte virtuel se trouvent dans le répertoire /etc/nginx/conf.d.
Le bloc serveur nécessite un nom de domaine, un numéro de port, une racine de document, un emplacement de journal, un CGI rapide, etc.
Supposons ce qui suit,
Nom de domaine : www.itzgeek.net
Racine du document : /sites/www.itzgeek.net/public_html/
Journaux : /sites/www.itzgeek.net/logs/
Créez un hôte virtuel.
Si vous avez installé Nginx à partir du référentiel Ubuntu, les fichiers de configuration de l'hôte virtuel se trouvent dans /etc/nginx/sites-enabled, et le chemin du fichier sera comme /etc/nginx/sites-enabled/www.itzgeek.net.conf.sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
Placez le contenu suivant.
server { listen 80; server_name www.itzgeek.net; root /sites/www.itzgeek.net/public_html/; index index.html index.php; access_log /sites/www.itzgeek.net/logs/access.log; error_log /sites/www.itzgeek.net/logs/error.log; # Don't allow pages to be rendered in an iframe on external domains. add_header X-Frame-Options "SAMEORIGIN"; # MIME sniffing prevention add_header X-Content-Type-Options "nosniff"; # Enable cross-site scripting filter in supported browsers. add_header X-Xss-Protection "1; mode=block"; # Prevent access to hidden files location ~* /\.(?!well-known\/) { deny all; } # Prevent access to certain file extensions location ~\.(ini|log|conf)$ { deny all; } # Enable WordPress Permananent Links location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Créez la racine du document et le répertoire des journaux.
sudo mkdir -p /sites/www.itzgeek.net/public_html/ sudo mkdir -p /sites/www.itzgeek.net/logs/
Vérifiez les fichiers de configuration.
sudo nginx -t
Si vous obtenez ce qui suit, cela signifie que les entrées de l'hôte virtuel sont correctes.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Redémarrez les services.
sudo systemctl restart nginx
Installer Let's Encrypt SSL pour WordPress (facultatif)
Dans la situation actuelle, presque tous les sites Web utilisent HTTPS (certificat SSL) pour l'authenticité, les comptes sécurisés, pour garder les communications des utilisateurs privées. Google demande aux propriétaires de passer au HTTPS pour une meilleure sécurité et un meilleur classement.
Installer Certbot
Pour générer un certificat SSL, installez le client Certbot ACME sur votre système. Il gère la délivrance et l'installation du certificat sans temps d'arrêt.
Le client Certbot n'est pas disponible dans les référentiels Ubuntu. Nous devons donc configurer Certbot PPA sur Ubuntu.
sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt update
Maintenant, installez le client certbot.
sudo apt install -y certbot python-certbot-nginx
Mettre à jour / Modifier l'enregistrement DNS
Accédez à votre bureau d'enregistrement de domaine et créez un enregistrement A/CNAME pour votre domaine.

Attendez un moment pour laisser l'enregistrement se propager.
Installer le certificat SSL Let's Encrypt
Utilisez la commande certbot pour générer et installer un certificat Let's Encrypt.
sudo certbot --nginx
Sortie :
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] << Enter email id to receive notification - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A << Accept Terms of Service - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y << Subscribe to newsletter Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1 << Install SSL certificate for www.itzgeek.net Deploying Certificate to VirtualHost /etc/nginx/conf.d/www.itzgeek.net.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 < Redirect HTTP traffic to HTTPS site Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/www.itzgeek.net.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://www.itzgeek.net You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/www.itzgeek.net/privkey.pem Your cert will expire on 2019-12-12. 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" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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
Redirection des requêtes HTTP non-www vers www HTTPS avec Nginx
Nous allons maintenant créer un nouveau bloc de serveur pour rediriger le trafic provenant du site HTTP non www vers le site HTTPS www. Par exemple, http://itzgeek.net>> https://www.itzgeek.net .
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
Ajoutez le bloc ci-dessous à la fin du fichier.
# Redirect NON-WWW HTTP to WWW HTTPS server { if ($host = itzgeek.net) { return 301 https://www.itzgeek.net$request_uri; } server_name itzgeek.net; listen 80; return 404; }
Redémarrez le service Nginx.
sudo systemctl restart nginx
Créer une base de données pour WordPress
Connectez-vous à MySQL.
sudo mysql -u root -p
Créez la base de données souhaitée pour WordPress.
CREATE DATABASE wordpress;
Créez un utilisateur.
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppassword';
Accordez l'autorisation à l'utilisateur créé d'accéder à la base de données.
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
Quittez le shell MariaDB.
quit
Télécharger WordPress
Téléchargez le dernier package WordPress.
wget http://wordpress.org/latest.tar.gz
Extraire le package WordPress.
tar -zxvf latest.tar.gz
Déplacez les fichiers WordPress vers la racine du document.
sudo mv wordpress/* /sites/www.itzgeek.net/public_html/
Faites de l'utilisateur Apache (www-data) le propriétaire du site WordPress.
sudo chown -R www-data:www-data /sites/www.itzgeek.net/public_html/ sudo chown -R www-data:www-data /sites/www.itzgeek.net/logs/
Installer WordPress
Ouvrez votre navigateur et visitez :
http://url-de-votre-site-webVous obtiendrez l'assistant d'installation de WordPress.
Choisissez la langue de votre installation WordPress.

Assurez-vous d'avoir le nom de la base de données WordPress, l'utilisateur de la base de données et le mot de passe de l'utilisateur de la base de données. Si vous êtes prêt, cliquez sur Allons-y !

Dans cette page, entrez les informations de la base de données pour permettre à WordPress de se connecter à la base de données.

Si la connexion à la base de données réussit, vous obtiendrez la page ci-dessous. Cliquez sur Exécuter l'installation.

Dans cette page, entrez le titre du site, l'administrateur WordPress et le mot de passe (de votre choix), puis l'adresse e-mail. Cliquez ensuite sur Installer WordPress.

L'installation de WordPress est maintenant terminée. Vous pouvez cliquer sur Connexion pour accéder à la page d'administration de WordPress.

Entrez l'utilisateur administrateur de WordPress et son mot de passe pour accéder à la page d'administration de WordPress.

Administrateur WordPress :

Interface WordPress :

Informations sur le serveur WordPress (plugin YLD Server Information) :

Peu de configurations supplémentaires
Configurer le téléchargement de la taille maximale du fichier pour WordPress
Par défaut, PHP n'autorise pas les téléchargements Web supérieurs à 2 Mo. Pour autoriser les téléchargements de fichiers plus volumineux via l'interface Web WordPress, configurez le paramètre upload_max_filesize dans php.ini.
sudo nano /etc/php/7.2/fpm/php.ini
Modifiez la taille de téléchargement selon vos besoins
; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 256M
Redémarrez le service php7.2-fpm.
sudo systemctl restart php7.2-fpm
Configurer client_max_body_size sur Nginx pour WordPress
Vous pouvez rencontrer l'erreur ci-dessous même si vous avez modifié la taille maximale du fichier de téléchargement à l'étape précédente.
2019/09/13 04:40:08 [error] 3803#3803: *517 client intended to send too large body: 9872781 bytes, client: 49.207.143.143, server: www.itzgeek.net, request: "POST /wp-admin/update.php?action=upload-theme HTTP/1.1", host: "www.itzgeek.net", referrer: "https://www.itzgeek.net/wp-admin/theme-install.php?browse=featured"
Ajoutez le module principal client_max_body_size dans le fichier de configuration du serveur Nginx.
sudo nano /etc/nginx/nginx.conf
La directive peut être ajoutée au bloc http (pour tous les sites), à un bloc de serveur particulier ou dans un contexte de localisation. J'ajoute la directive au bloc http qui définit la valeur pour tous les sites exécutés sur ce serveur.
http { .... client_max_body_size 256M; .... }
De plus, nous devons changer la valeur de post_max_size dans php7.2-fpm.
sudo nano /etc/php/7.2/fpm/php.ini
Modifiez la taille de téléchargement selon vos besoins.
post_max_size = 256M
Redémarrez les services.
sudo systemctl restart php7.2-fpm sudo systemctl restart nginx
Conclusion
C'est tout. J'espère que vous avez appris à installer WordPress 5.x avec Nginx sur Ubuntu 18.04 / Ubuntu 16.04. Veuillez partager vos commentaires dans la section des commentaires.