GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer WordPress 5.x avec Nginx sur Ubuntu 18.04 / Ubuntu 16.04

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-web

Vous 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.


Ubuntu
  1. Comment installer Nginx sur Ubuntu 16.04

  2. Comment installer WordPress avec Nginx sur Ubuntu 18.04

  3. Comment installer Elgg avec Nginx sur Ubuntu 14.04

  4. Comment installer Nginx sur Ubuntu 16.04

  5. Comment installer Joomla avec Nginx sur Ubuntu 18.04

Comment installer WordPress avec Nginx sur Ubuntu

Comment installer SuiteCRM sur Ubuntu 20.04 avec Apache/Nginx

Comment installer MediaWiki sur Ubuntu 20.04 avec Apache/Nginx

Comment installer WordPress avec Nginx dans Ubuntu 20.04

Installer WordPress avec Nginx sur Ubuntu 18.04

Comment installer Nginx sur Ubuntu 22.04