GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer WordPress avec Nginx sur CentOS 8 / RHEL 8

WordPress est un système de gestion de contenu (CMS) largement utilisé pour créer des blogs, des sites Web, des portails de commerce électronique et bien plus encore. Il est écrit en langage PHP et utilise MariaDB ou MySQL comme base de données.

WordPress alimente plus de 60 millions de sites Web, dont 33 % des 10 millions de sites Web les plus importants.

Voici le tutoriel sur la façon d'installer WordPress avec Nginx sur CentOS 8 / RHEL 8.

Installer la pile LEMP

Avant de continuer, configurez la pile LEMP en utilisant le lien ci-dessous.

Installer la pile LEMP (Nginx, MariaDB et PHP) sur CentOS 8 / RHEL 8

Installer les extensions PHP

Les extensions suivantes sont nécessaires pour installer WordPress sur CentOS 8 / RHEL 8.

yum install -y php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv  php-json php-mbstring php-posix php-sockets php-tokenizer

Configurer le bloc Nginx Server pour WordPress

Créons un bloc de serveur pour l'installation de WordPress. Les fichiers de configuration de l'hôte virtuel se trouvent dans le répertoire /etc/nginx/conf.d.

Je crée un bloc de serveur pour ce qui suit,

Nom de domaine : www.itzgeek.net
Numéro de port : 80
Racine du document : /sites/www.itzgeek.net/public_html
Journaux : /sites/www.itzgeek.net/logs

Tout d'abord, créez un fichier d'hôte virtuel.

vi /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.

nginx -t

La sortie ci-dessous confirme qu'il n'y a pas d'erreur de syntaxe dans le bloc serveur.

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.

systemctl restart nginx

systemctl restart php-fpm

Si vous obtenez une erreur lors du redémarrage du service Nginx, désactivez SELinux sur votre machine.

setenforce 0

Installer Let's Encrypt SSL pour WordPress (facultatif)

De nos jours, presque tous les sites Web utilisent HTTPS (certificat SSL) pour l'authenticité, la sécurité et pour garder les communications des utilisateurs privées. L'année dernière, Google a demandé aux propriétaires de passer au HTTPS pour des raisons de sécurité et d'amélioration des classements.

Installer Certbot

Vous devez installer un client Certbot ACME sur votre système pour l'émission et l'installation d'un certificat sans temps d'arrêt.

Le client Certbot n'est pas disponible dans les référentiels Red Hat. Nous devons donc télécharger un client Certbot depuis son site officiel.

curl -O https://dl.eff.org/certbot-auto

mv certbot-auto /usr/local/bin/certbot-auto

chmod 0755 /usr/local/bin/certbot-auto

Mettre à jour / Modifier l'enregistrement DNS

Accédez à votre bureau d'enregistrement de domaine et créez/mettez à jour l'enregistrement A/CNAME pour votre domaine.

Attendez un moment pour laisser l'enregistrement DNS se propager, puis procédez à l'installation de Let's Encrypt SSL.

Installer le certificat SSL Let's Encrypt

Utilisez la commande certbot pour créer et installer un certificat Let's Encrypt.

/usr/local/bin/certbot-auto --nginx

Lors de la première exécution, le client certbot installera les packages rpm requis pour configurer un environnement virtuel Python afin de générer des certificats.

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
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.itzgeek.net
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/wordpress.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/wordpress.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-17. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto 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 devons rediriger le trafic provenant d'un site HTTP non-www vers le site www HTTPS. Pour mon site, c'est http://itzgeek.net>> https://www.itzgeek.net .

vi /etc/nginx/conf.d/www.itzgeek.net.conf

Ajoutez le bloc de redirection 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.

systemctl restart nginx

Créer une base de données pour WordPress

Connectez-vous à MariaDB.

mysql -u root -p

Créez la base de données souhaitée pour l'installation de WordPress.

CREATE DATABASE wordpress;

Créez un utilisateur.

CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppassword';

Accordez l'autorisation complète à l'utilisateur créé pour accéder à la base de données WordPress nouvellement créée.

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';

Quittez le shell MariaDB.

exit

Télécharger WordPress

Téléchargez la dernière version de WordPress.

curl -O https://wordpress.org/latest.tar.gz

Extrayez-le.

tar -zxvf latest.tar.gz

Déplacez-le vers notre racine de document.

mv wordpress/* /sites/www.itzgeek.net/public_html/

Copiez le fichier wp-sample-config.php et faites-en le fichier wp-config.php.

cp /sites/www.itzgeek.net/public_html/wp-config-sample.php /sites/www.itzgeek.net/public_html/wp-config.php

Modifiez le fichier de configuration et mettez à jour les informations de la base de données.

vi /sites/www.itzgeek.net/public_html/wp-config.php

Modifiez les entrées en fonction de la base de données, de l'utilisateur et du mot de passe créés.

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

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

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

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

Faites de l'utilisateur Nginx le propriétaire du répertoire WordPress.

chown -R apache:apache /sites/www.itzgeek.net/public_html/

Installer WordPress

Ouvrez votre navigateur et visitez

http://url-de-votre-site-web

Choisissez une langue pour votre installation WordPress.

Entrez les informations de votre site et cliquez sur Installer WordPress.

Vous verrez la page suivante, comme ci-dessous.

Si vous cliquez sur Connexion, il vous sera demandé de saisir le mot de passe pour accéder à l'administrateur WordPress.

Tableau de bord d'administration WordPress :

Interface WordPress :

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 de fichiers supérieurs à 2 Mo. Pour autoriser les téléchargements de fichiers plus volumineux, configurez le paramètre upload_max_filesize dans php.ini.

vi /etc/php.ini

Modifiez la taille de téléchargement du fichier selon vos besoins

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 256M

Redémarrez le service php-fpm.

systemctl restart php-fpm

Définir client_max_body_size sur Nginx pour WordPress

Vous pouvez recevoir 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/18 03:37:17 [error] 11773#11773: *121 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 Nginx.

vi /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.

Ici, 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 le fichier php.ini.

vi /etc/php.ini

Modifiez la taille de téléchargement selon vos besoins.

post_max_size = 256M

Redémarrez les services.

systemctl restart php-fpm

systemctl restart nginx

Conclusion

C'est tout. J'espère que vous êtes maintenant en mesure d'exécuter votre WordPress avec Nginx sur CentOS 8 / RHEL 8. Veuillez partager vos commentaires dans la section des commentaires.


Cent OS
  1. Comment installer WordPress sur RHEL 8 / CentOS 8 Linux

  2. Comment installer WordPress avec Nginx sur CentOS 7

  3. Comment installer phpMyAdmin avec Nginx sur CentOS 7 / RHEL 7

  4. Comment installer WordPress Multisite sur Centos VPS avec Nginx

  5. Comment installer WordPress avec LEMP Stack sur CentOS 8

Comment installer phpMyAdmin avec Apache sur CentOS 7 / RHEL 7

Installez WordPress avec Nginx sur CentOS 7 / RHEL 7

Comment installer phpMyAdmin avec Nginx sur CentOS 8 / RHEL 8

Comment installer Nginx avec ngx_pagespeed sur CentOS

Comment installer Nginx avec PHP-FastCGI sur CentOS 6

Comment installer Magento avec Nginx sur CentOS 7