Comment installer WordPress avec LEMP sur Ubuntu 18.04

introduction

WordPress est le plus populaire des CMS (systèmes de gestion de contenu) sur Internet. Il vous permet de configurer facilement des blogs et des sites Web flexibles sur un serveur MySQL avec un traitement PHP. WordPress a connu une adoption incroyable et constitue un excellent choix pour la mise en place rapide d’un site Web. Après l'installation, presque toute l'administration peut être effectuée via l'interface Web.

Dans ce guide, nous allons nous concentrer sur la configuration d’une instance WordPress sur une pile LEMP (Linux, Nginx, MySQL et PHP) sur un serveur Ubuntu 18.04.

Conditions préalables

Pour compléter ce didacticiel, vous devez avoir accès à un serveur Ubuntu 18.04.

Avant de pouvoir commencer ce guide, vous devez effectuer les tâches suivantes:

  • Create a sudo user on your server: Nous allons terminer les étapes de ce guide en utilisant un utilisateur non root avec les privilègessudo. Vous pouvez créer un utilisateur avec les privilègessudo en suivant nosUbuntu 18.04 initial server setup guide.

  • Install a LEMP stack: WordPress aura besoin d'un serveur Web, d'une base de données et de PHP pour fonctionner correctement. La configuration d’une pile LEMP (Linux, Nginx, MySQL et PHP) répond à toutes ces exigences. Suivezthis guide pour installer et configurer ce logiciel.

  • Secure your site with SSL: WordPress sert du contenu dynamique et gère l'authentification et l'autorisation des utilisateurs. TLS/SSL is the technology that allows you to encrypt the traffic from your site so that your connection is secure. La manière dont vous configurez SSL dépend de la présence ou non d'un nom de domaine pour votre site.

    • If you have a domain name…, le moyen le plus simple de sécuriser votre site consiste à utiliser Let’s Encrypt, qui fournit des certificats de confiance gratuits. Suivez nosLet’s Encrypt guide for Nginx pour configurer cela.

    • If you do not have a domain… et que vous n'utilisez cette configuration qu'à des fins de test ou d'utilisation personnelle, vous pouvez utiliser un certificat auto-signé à la place. Ceci fournit le même type de cryptage, mais sans la validation du domaine. Suivez nosself-signed SSL guide for Nginx pour vous installer.

Lorsque vous avez terminé les étapes de configuration, connectez-vous à votre serveur en tant qu'utilisateursudo et continuez ci-dessous.

[[step-1 -—- creation-a-mysql-database-and-user-for-wordpress]] == Étape 1 - Création d'une base de données MySQL et d'un utilisateur pour WordPress

La première étape que nous allons franchir est une étape préparatoire. WordPress utilise MySQL pour gérer et stocker les informations relatives au site et aux utilisateurs. Nous avons déjà installé MySQL, mais nous devons créer une base de données et un utilisateur pour WordPress.

Pour commencer, connectez-vous au compte MySQL root (administratif). Si MySQL est configuré pour utiliser le plugin d'authentificationauth_socket (par défaut), vous pouvez vous connecter au compte administratif MySQL en utilisantsudo:

sudo mysql

Si vous avez modifié la méthode d'authentification pour utiliser un mot de passe pour le compte racine MySQL, utilisez plutôt le format suivant:

mysql -u root -p

Vous serez invité à saisir le mot de passe que vous avez défini pour le compte racine MySQL.

Premièrement, nous pouvons créer une base de données distincte que WordPress peut contrôler. Vous pouvez l'appeler comme vous le souhaitez, mais nous utiliseronswordpress dans ce guide pour rester simple. Vous pouvez créer la base de données pour WordPress en tapant:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

[.note] #Note: Chaque instruction MySQL doit se terminer par un point-virgule (;). Assurez-vous que cela est présent si vous rencontrez des problèmes.
#

Ensuite, nous allons créer un compte utilisateur MySQL distinct que nous utiliserons exclusivement pour fonctionner sur notre nouvelle base de données. La création de bases de données et de comptes à fonction unique est une bonne idée du point de vue de la gestion et de la sécurité. Nous utiliserons le nomwordpressuser dans ce guide. N'hésitez pas à changer cela si vous le souhaitez.

Nous allons créer ce compte, définir un mot de passe et accorder l'accès à la base de données que nous avons créée. Nous pouvons le faire en tapant la commande suivante. N'oubliez pas de choisir un mot de passe fort ici pour votre utilisateur de base de données:

GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

Vous avez maintenant une base de données et un compte utilisateur, chacun spécialement créé pour WordPress. Nous devons supprimer les privilèges pour que l’instance actuelle de MySQL connaisse les modifications récentes que nous avons apportées:

FLUSH PRIVILEGES;

Quittez MySQL en tapant:

EXIT;

La session MySQL va se terminer, vous retournant au shell Linux habituel.

[[step-2 -—- Installing-additional-php-extensions]] == Étape 2 - Installation d'extensions PHP supplémentaires

Lors de la configuration de notre pile LEMP, nous n’avions besoin que d’un ensemble très minimal d’extensions afin de permettre à PHP de communiquer avec MySQL. WordPress et nombre de ses plugins exploitent des extensions PHP supplémentaires.

Nous pouvons télécharger et installer certaines des extensions PHP les plus populaires à utiliser avec WordPress en tapant:

sudo apt update
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

[.note] #Note: Chaque plugin WordPress a son propre ensemble d'exigences. Certains peuvent nécessiter l'installation de packages PHP supplémentaires. Vérifiez la documentation de votre plugin pour découvrir ses exigences PHP. S'ils sont disponibles, ils peuvent être installés avecapt comme illustré ci-dessus.
#

Lorsque vous avez terminé d'installer les extensions, redémarrez le processus PHP-FPM afin que le processeur PHP en cours d'exécution puisse exploiter les fonctionnalités nouvellement installées:

sudo systemctl restart php7.2-fpm

Nous avons maintenant toutes les extensions PHP nécessaires installées sur le serveur.

[[step-3 -—- configuring-nginx]] == Étape 3 - Configuration de Nginx

Nous allons ensuite apporter quelques modifications mineures aux fichiers de blocage de notre serveur Nginx. Sur la base des didacticiels prérequis, vous devez disposer d'un fichier de configuration pour votre site dans le répertoire/etc/nginx/sites-available/ configuré pour répondre au nom de domaine ou à l'adresse IP de votre serveur et protégé par un certificat TLS / SSL. Nous utiliserons/etc/apache2/sites-available/wordpress comme exemple ici, mais vous devez remplacer le chemin d'accès à votre fichier de configuration le cas échéant.

De plus, nous utiliserons/var/www/wordpress comme répertoire racine de notre installation WordPress. Vous devez utiliser la racine Web spécifiée dans votre propre configuration.

[.note] #Note: Il est possible que vous utilisiez la configuration par défaut de/etc/nginx/sites-available/default (avec/var/www/html comme racine Web). Cette option convient si vous ne comptez héberger qu’un seul site Web sur ce serveur. Sinon, il est préférable de diviser la configuration nécessaire en blocs logiques, un fichier par site.
#

Ouvrez le fichier de blocage du serveur de votre site avec les privilègessudo pour commencer:

sudo nano /etc/nginx/sites-available/wordpress

Dans le bloc principalserver, nous devons ajouter quelques blocslocation.

Commencez par créer des blocs d'emplacement correspondant exactement pour les requêtes adressées à/favicon.ico et/robots.txt, pour lesquelles nous ne souhaitons pas enregistrer les requêtes.

Nous utiliserons un emplacement d'expression régulière pour répondre à toutes les demandes de fichiers statiques. Nous allons à nouveau désactiver la journalisation pour ces demandes et les marquer comme hautement cachables car ce sont des ressources coûteuses à servir. Vous pouvez ajuster cette liste de fichiers statiques pour qu'elle contienne toute autre extension de fichier que votre site pourrait utiliser:

/etc/nginx/sites-available/wordpress

server {
    . . .

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }
    . . .
}

À l'intérieur du bloclocation / existant, nous devons ajuster la liste detry_files afin qu'au lieu de renvoyer une erreur 404 comme option par défaut, le contrôle soit passé au fichierindex.php avec les arguments de requête .

Cela devrait ressembler à ceci:

/etc/nginx/sites-available/wordpress

server {
    . . .
    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php$is_args$args;
    }
    . . .
}

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Maintenant, nous pouvons vérifier les erreurs de syntaxe dans notre configuration en tapant:

sudo nginx -t

Si aucune erreur n'a été signalée, rechargez Nginx en tapant:

sudo systemctl reload nginx

Ensuite, nous allons télécharger et configurer WordPress lui-même.

[[step-4 -—- download-wordpress]] == Étape 4 - Téléchargement de WordPress

Maintenant que notre logiciel serveur est configuré, nous pouvons télécharger et configurer WordPress. Pour des raisons de sécurité notamment, il est toujours recommandé de se procurer la dernière version de WordPress sur leur site.

Basculez dans un répertoire accessible en écriture, puis téléchargez la version compressée en tapant:

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz

Extrayez le fichier compressé pour créer la structure de répertoires WordPress:

tar xzvf latest.tar.gz

Nous allons transférer ces fichiers dans notre racine de document dans un instant. Avant de faire cela, nous pouvons copier le fichier de configuration exemple dans le nom de fichier que WordPress lit réellement:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

Maintenant, nous pouvons copier tout le contenu du répertoire dans notre racine de document. Nous utilisons l'indicateur-a pour nous assurer que nos autorisations sont maintenues. Nous utilisons un point à la fin de notre répertoire source pour indiquer que tout ce qui se trouve dans le répertoire doit être copié, y compris tous les fichiers cachés:

sudo cp -a /tmp/wordpress/. /var/www/wordpress

Maintenant que nos fichiers sont en place, nous en attribuerons la propriété à l'utilisateur et au groupewww-data. Il s’agit de l’utilisateur et du groupe sous lesquels Nginx s’exécute. Nginx devra être en mesure de lire et d’écrire des fichiers WordPress afin de servir le site Web et d’effectuer des mises à jour automatiques.

sudo chown -R www-data:www-data /var/www/wordpress

Nos fichiers se trouvent maintenant dans la racine du document de notre serveur et ont la propriété correcte, mais nous avons encore besoin de terminer la configuration.

[[step-5 -—- setting-up-the-wordpress-configuration-file]] == Étape 5 - Configuration du fichier de configuration WordPress

Ensuite, nous devons apporter quelques modifications au fichier de configuration principal de WordPress.

Lorsque nous ouvrirons le fichier, notre premier travail consistera à ajuster certaines clés secrètes afin de sécuriser notre installation. WordPress fournit un générateur sécurisé pour ces valeurs afin que vous n'ayez pas à essayer de créer vous-même de bonnes valeurs. Celles-ci sont uniquement utilisées en interne, il n’est donc pas gênant d’avoir des valeurs complexes et sûres.

Pour récupérer les valeurs sécurisées du générateur de clé secrète WordPress, tapez:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

Vous obtiendrez des valeurs uniques ressemblant à ceci:

[.warning] #Warning: Il est important que vous demandiez des valeurs uniques à chaque fois. NOT copie les valeurs ci-dessous!
#

Outputdefine('AUTH_KEY',         '1jl/vqfs

Ce sont des lignes de configuration que nous pouvons coller directement dans notre fichier de configuration pour définir des clés sécurisées. Copiez le résultat que vous avez reçu maintenant.

Maintenant, ouvrez le fichier de configuration WordPress:

sudo nano /var/www/wordpress/wp-config.php

Recherchez la section contenant les valeurs factices pour ces paramètres. Cela ressemblera à ceci:

/var/www/wordpress/wp-config.php

. . .

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

. . .

Supprimez ces lignes et collez les valeurs que vous avez copiées à partir de la ligne de commande:

/var/www/wordpress/wp-config.php

. . .

define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');

. . .

Ensuite, nous devons modifier certains paramètres de connexion à la base de données au début du fichier. Vous devez ajuster le nom de la base de données, l'utilisateur de la base de données et le mot de passe associé que nous avons configuré dans MySQL.

L’autre modification à apporter consiste à définir la méthode que WordPress doit utiliser pour écrire dans le système de fichiers. Étant donné que nous avons donné au serveur Web le droit d'écrire à l'endroit voulu, nous pouvons explicitement définir la méthode du système de fichiers sur «direct». Si nous ne définissons pas cela avec nos paramètres actuels, WordPress demanderait les informations d'identification FTP lorsque nous effectuons certaines actions. Ce paramètre peut être ajouté sous les paramètres de connexion à la base de données ou n'importe où dans le fichier:

/var/www/wordpress/wp-config.php

. . .

define('DB_NAME', 'wordpress');

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

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

. . .

define('FS_METHOD', 'direct');

Enregistrez et fermez le fichier lorsque vous avez terminé.

[[step-6 -—- completion-the-installation-through-the-web-interface]] == Étape 6 - Finalisation de l'installation via l'interface Web

Maintenant que la configuration du serveur est terminée, nous pouvons terminer l'installation via l'interface Web.

Dans votre navigateur Web, accédez au nom de domaine ou à l’adresse IP publique de votre serveur:

http://server_domain_or_IP

Sélectionnez la langue que vous souhaitez utiliser:

WordPress language selection

Ensuite, vous arriverez à la page de configuration principale.

Sélectionnez un nom pour votre site WordPress et choisissez un nom d'utilisateur (il est recommandé de ne pas choisir quelque chose comme «admin» pour des raisons de sécurité). Un mot de passe fort est généré automatiquement. Enregistrez ce mot de passe ou sélectionnez un autre mot de passe fort.

Entrez votre adresse électronique et indiquez si vous souhaitez dissuader les moteurs de recherche d'indexer votre site:

WordPress setup installation

Lorsque vous cliquez en avant, vous accédez à une page qui vous invite à vous connecter:

WordPress login prompt

Une fois que vous vous êtes connecté, vous serez dirigé vers le tableau de bord d'administration WordPress:

WordPress login prompt

Conclusion

WordPress doit être installé et prêt à être utilisé! Les prochaines étapes courantes consistent à choisir le paramètre de permaliens pour vos messages (se trouve dansSettings > Permalinks) ou à sélectionner un nouveau thème (dansAppearance > Themes). Si vous utilisez WordPress pour la première fois, explorez un peu l’interface pour vous familiariser avec votre nouveau CMS.