Comment installer WordPress sur Ubuntu 20.04 avec un LAMP Stack

Introduction

WordPress est une technologie open-source extrêmement populaire pour la création de sites web et de blogs sur l'internet aujourd'hui. Utilisés par 63 % des sites web qui utilisent un système de gestion de contenu (CMS), les sites WordPress représentent 36 % de tous les sites web qui sont actuellement en ligne.

Il existe de nombreuses approches différentes pour accéder à WordPress et certains processus de configuration sont plus complexes que d'autres. Ce tutoriel est destiné à ceux qui souhaitent installer et administrer une instance de WordPress sur un serveur en nuage non géré via la ligne de commande. Bien que cette approche nécessite plus d'étapes qu'une installation WordPress toute faite, elle offre aux administrateurs un plus grand contrôle sur leur environnement WordPress.

Si vous cherchez à accéder à une installation WordPress prête à l'emploi, DigitalOcean Marketplace propose une app en un clic pour vous aider à démarrer avec WordPress, jusqu'à l'installation lors de la mise en route de votre serveur.

En fonction de vos besoins et de vos objectifs, vous pouvez trouver d'autres options plus adaptées. En tant que logiciel open-source, WordPress peut être téléchargé et installé gratuitement, mais pour être disponible sur le web, vous devrez probablement acheter une infrastructure en nuage et un nom de domaine. Continuez à suivre ce guide si vous êtes intéressé par l'installation côté serveur et par la mise en place d'un site WordPress.

Ce tutoriel utilisera un LAMP (Linux, Apache, MySQL et PHP) stack qui est une option pour une architecture de serveur qui supporte WordPress en fournissant le système d'exploitation Linux, le serveur web Apache, la base de données MySQL et le langage de programmation PHP. Nous installerons et configurerons WordPress via LAMP sur un serveur Linux Ubuntu 20.04.

Conditions préalables

Pour pouvoir suivre ce tutoriel, vous devez avoir accès à un serveur Ubuntu 20.04 et effectuer les étapes suivantes avant de commencer ce guide :

  • Configurez votre serveur en suivant notre guide de configuration initiale du serveur Ubuntu 20.04 et assurez-vous d'avoir un non-root sudo user. 
  • Installez un LAMP stack en suivant notre guide LAMP pour installer et configurer ce logiciel.
  • Sécurisez votre site : WordPress prend en compte les entrées de l'utilisateur et stocke ses données, il est donc important pour lui d'avoir une couche de sécurité. TLS/SSL est la technologie qui vous permet de crypter le trafic de votre site afin que votre connexion et celle de vos utilisateurs soient sécurisées. Voici deux options qui s'offrent à vous pour répondre à cette exigence :
    • Si vous avez un nom de domaine… vous pouvez sécuriser votre site avec Let’s Encrypt, qui fournit des certificats gratuits et fiables. Suivez notre guide Let’s Encrypt pour Apache afin de configurer cela.
    • Si vous n'avez pas de domaine… et que vous utilisez cette configuration à des fins de test ou pour un usage personnel, vous pouvez à la place utiliser un certificat auto-signé. Cela permet d'obtenir le même type de chiffrement, mais sans la validation du domaine. Suivez notre guide SSL auto-signé pour Apache afin de le mettre en place.

Une fois les étapes de préparation terminées, connectez-vous à votre serveur en tant qu'utilisateur sudo et continuez ci-dessous.

Étape 1 – Créer une base de données MySQL et un utilisateur pour WordPress

La première étape que nous allons suivre est une étape préparatoire. WordPress utilise MySQL pour gérer et stocker les informations du site et des 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) en exécutant cette commande (notez que ce n'est pas le root user de votre serveur) :

  • mysql -u root -p

Le mot de passe que vous avez défini pour le compte root MySQL lors de son installation vous sera demandé.

Note : Si vous ne pouvez pas accéder à votre base de données MySQL via le root, en tant que sudo user, vous pouvez mettre à jour le mot de passe de votre root user en vous connectant à la base de données de cette manière : 

  • sudo mysql -u root

Une fois que vous recevez l'invite MySQL, vous pouvez mettre à jour le mot de passe du root user. Ici, remplacez new_password par un mot de passe fort de votre choix.

  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

Vous pouvez maintenant taper EXIT ; et vous pouvez vous reconnecter à la base de données via un mot de passe avec la commande suivante :

  • mysql -u root -p

Dans la base de données, nous pouvons créer une base de données exclusive que WordPress peut contrôler. Vous pouvez l'appeler comme vous le souhaitez, mais nous utiliserons le nom wordpress dans ce guide. Créez la base de données pour WordPress en tapant :

  • CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Remarque : chaque instruction MySQL doit se terminer par un point-virgule (;). Vérifiez qu'il est bien présent si vous rencontrez des problèmes.

Ensuite, nous allons créer un compte utilisateur MySQL distinct que nous utiliserons exclusivement pour exploiter notre nouvelle base de données. La création de bases de données et de comptes spécifiques peut nous aider du point de vue de la gestion et de la sécurité. Nous utiliserons le nom wordpressuser dans ce guide, mais n'hésitez pas à utiliser le nom qui vous convient le mieux.

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

  • CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Ensuite, faites savoir à la base de données que notre wordpressuser devrait avoir un accès complet à la base de données que nous avons mise en place : 

  • GRANT ALL ON wordpress.* TO 'wordpressuser'@'%';

Vous disposez désormais d'une base de données et d'un compte d'utilisateur, chacun spécialement conçu pour WordPress. Nous devons supprimer les privilèges afin que l'instance actuelle de MySQL soit informée des récents changements que nous avons apportés :

  • FLUSH PRIVILEGES;

Sortez de MySQL en tapant :

  • EXIT;

Dans la prochaine étape, nous poserons quelques bases pour les plugins WordPress en téléchargeant des extensions PHP pour notre serveur.

Étape 2 – Installez des extensions PHP supplémentaires

Lors de la mise en place de notre pile LAMP, nous n'avons eu besoin que d'un ensemble très limité d'extensions pour que PHP puisse communiquer avec MySQL. WordPress et beaucoup de ses plugins utilisent des extensions PHP supplémentaires.

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

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

Cela permettra de préparer le terrain pour l'installation de plugins supplémentaires sur notre site WordPress.

Remarque : chaque plugin WordPress a ses propres exigences. Certains peuvent nécessiter l'installation de packages PHP supplémentaires. Consultez la documentation de votre plugin pour connaître ses besoins en matière de PHP. S'ils sont disponibles, ils peuvent être installés avec apt comme illustré ci-dessus.

Nous devrons redémarrer Apache pour charger ces nouvelles extensions, nous ferons d'autres configurations sur Apache dans la prochaine section, vous pouvez donc attendre jusque-là, ou redémarrer maintenant pour terminer le processus d'extension PHP.

  • sudo systemctl restart apache2

Étape 3 – Ajuster la configuration d'Apache pour autoriser .htaccess à remplacer et réécrire

Nous allons maintenant procéder à quelques ajustements mineurs de notre configuration Apache. Après avoir suivi les tutoriaux préalables, vous devez disposer d'un fichier de configuration pour votre site dans le répertoire /etc/apache2/sites-available/.

Dans ce guide, nous utiliserons ici /etc/apache2/sites-available/wordpress.conf comme exemple, mais vous devez substituer le chemin d'accès à votre fichier de configuration le cas échéant. De plus, nous utiliserons /var/www/wordpress comme répertoire root de notre installation WordPress. Vous devez utiliser la racine Web spécifiée dans votre propre configuration. Si vous avez suivi notre tutoriel LAMP, il se peut que ce soit votre nom de domaine au lieu de wordpress dans ces deux cas.

Remarque : il est possible que vous utilisiez la configuration par défaut 000-default.conf (avec /var/www/html comme racine Web). C'est une bonne solution si vous n'hébergez qu'un seul site web sur ce serveur. Sinon, il est préférable de diviser la configuration nécessaire en morceaux logiques, un fichier par site.

Une fois nos chemins identifiés, nous pouvons passer à la collaboration avec htaccess afin qu'Apache puisse gérer les changements de configuration par répertoire. 

Autoriser les remplacements .htaccess

Actuellement, l'utilisation des fichiers .htaccess est désactivée. WordPress et de nombreux plugins WordPress utilisent ces fichiers de manière intensive pour des ajustements dans les répertoires du comportement du serveur web.

Ouvrez le fichier de configuration Apache pour votre site web avec un éditeur de texte comme nano.

  • sudo nano /etc/apache2/sites-available/wordpress.conf

Pour autoriser les fichiers .htaccess, nous devons paramétrer la directive AllowOverride dans un bloc Directory pointant vers la racine de notre document. Ajoutez le bloc de texte suivant dans le bloc VirtualHost de votre fichier de configuration, en veillant à utiliser le bon répertoire web root :

/etc/apache2/sites-available/wordpress.conf

<Directory /var/www/wordpress/>     AllowOverride All </Directory> 

Lorsque vous avez terminé, enregistrez et fermez le fichier. Dans nano, vous pouvez le faire en appuyant sur CTRL et X ensemble, puis Y, puis ENTER.

Activer le module de réécriture

Ensuite, nous pouvons activer mod_rewrite afin de pouvoir utiliser la fonction de permalien de WordPress :

  • sudo a2enmod rewrite

Cela vous permet d'avoir des permaliens plus lisibles à l'oeil humain pour vos messages, comme les deux exemples suivants :

http://example.com/2012/post-name/ http://example.com/2012/12/30/post-name 

La commande a2enmod appelle un script qui active le module spécifié dans la configuration d'Apache.

Activer les modifications

Avant de mettre en œuvre les modifications que nous avons apportées, vérifiez que nous n'avons pas fait d'erreurs de syntaxe en effectuant le test suivant.

  • sudo apache2ctl configtest

Vous pouvez recevoir des résultats comme ceux qui suivent :

OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK 

Si vous souhaitez supprimer la première ligne, ajoutez simplement une directive ServerName à votre fichier de configuration principal (global) d'Apache à l'emplacement /etc/apache2/apache2.conf. Le ServerName peut être le domaine ou l'adresse IP de votre serveur. Il s'agit toutefois d'un simple message qui n'affecte pas la fonctionnalité de votre site. Tant que la sortie contient Syntax OK, vous êtes prêt à continuer.

Redémarrez Apache pour mettre en œuvre les changements. Veillez à redémarrer maintenant même si vous avez redémarré plus tôt dans ce tutoriel.

  • sudo systemctl restart apache2

Nous allons ensuite télécharger et mettre en place WordPress lui-même.

Étape 4 – Téléchargement de WordPress

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

Passez dans un répertoire inscriptible (nous recommandons un répertoire temporaire comme /tmp) et téléchargez la version compressée.

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

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

  • tar xzvf latest.tar.gz

Nous allons déplacer ces fichiers à la racine de notre document dans un instant. Avant cela, nous pouvons ajouter un fichier .htaccess factice afin qu'il soit disponible pour une utilisation ultérieure par WordPress.

Créez le fichier en tapant :

  • touch /tmp/wordpress/.htaccess

Nous allons également copier l'exemple du fichier de configuration vers le nom de fichier que WordPress lit :

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

Nous pouvons également créer le répertoire des upgrade, afin que WordPress ne rencontre pas de problèmes de permissions lorsqu'il essaie de le faire seul après une mise à jour de son logiciel :

  • mkdir /tmp/wordpress/wp-content/upgrade

Nous pouvons maintenant copier l'intégralité du contenu du répertoire à la racine de notre document. Nous ajoutons 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 les fichiers cachés (tels que le fichier .htaccess que nous avons créé) :

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

Veillez à remplacer le /var/www/wordpress avec le répertoire que vous avez configuré sur votre serveur. 

Étape 5 – Configurer le répertoire WordPress

Avant de procéder à la configuration Web de WordPress, nous devons ajuster certains éléments de notre répertoire WordPress.

Ajuster la propriété et les autorisations

Une étape importante que nous devons accomplir consiste à établir des autorisations et des droits de propriété raisonnables sur les fichiers.

Nous commencerons par donner la propriété de tous les fichiers à www-data user et group. C'est l'utilisateur sous lequel le serveur web Apache fonctionne, et Apache devra être capable de lire et d'écrire des fichiers WordPress afin de servir le site web et d'effectuer des mises à jour automatiques.

Mettez à jour la propriété avec la commande chown qui vous permet de modifier la propriété du fichier. Veillez à pointer vers le répertoire pertinent de votre serveur.

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

Ensuite, nous allons en faire deux find pour définir les autorisations correctes sur les répertoires et les fichiers WordPress :

  • sudo find /var/www/wordpress/ -type d -exec chmod 750 {} ;
  • sudo find /var/www/wordpress/ -type f -exec chmod 640 {} ;

Ces autorisations devraient vous permettre de travailler efficacement avec WordPress, mais notez que certains plugins et procédures peuvent nécessiter des ajustements supplémentaires.

Modifier le fichier de configuration WordPress

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

Lorsque nous ouvrirons le fichier, notre première tâche sera d'ajuster certaines clés secrètes afin d'assurer un niveau de sécurité pour notre installation. WordPress fournit un générateur sécurisé pour ces valeurs, afin que vous n'ayez pas à essayer de trouver de bonnes valeurs par vous-même. Elles ne sont utilisées qu'en interne, de sorte qu'il ne sera pas préjudiciable à la facilité d'utilisation d'avoir des valeurs complexes et sûres ici.

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

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

Vous obtiendrez des valeurs uniques qui ressemblent à des sorties similaires à celles du bloc ci-dessous.

Attention ! Il est important que vous demandiez des valeurs uniques à chaque fois. Ne copiez PAS les valeurs ci-dessous !

Outputdefine('AUTH_KEY',         '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<[email protected]'); define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY',        'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT',        'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES  07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%'); 

Il s'agit de lignes de configuration que nous pouvons coller directement dans notre fichier de configuration pour définir des clés sécurisées. Copiez la sortie que vous venez d'obtenir.

Ensuite, ouvrez le fichier de configuration de WordPress :

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

Trouvez la section qui contient les exemples de valeurs pour ces paramètres.

/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 depuis 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 allons modifier certains des 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 vous avez configuré dans MySQL.

L'autre modification que nous devons apporter est de définir la méthode que WordPress doit utiliser pour écrire dans le système de fichiers. Comme nous avons donné au serveur web la permission d'écrire là où il faut, nous pouvons explicitement définir la méthode du système de fichiers sur « direct ». Si nous ne configurons pas la méthode avec nos paramètres actuels, WordPress demandera les informations d'identification FTP lorsque nous effectuerons certaines actions.

Ce paramètre peut être ajouté sous les paramètres de connexion à la base de données ou n'importe où ailleurs dans le fichier :

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

. . .  // ** 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', 'wordpressuser' );  /** MySQL database password */ define( 'DB_PASSWORD', 'password' );  /** MySQL hostname */ define( 'DB_HOST', 'localhost' );  /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8' );  /** The Database Collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '' );   . . .  define('FS_METHOD', 'direct'); 

Enregistrez et fermez le fichier lorsque vous avez terminé.

Étape 6 — Finalisation de l'installation via l'interface Web

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

Dans votre navigateur web, naviguez vers le nom de domaine ou l'adresse IP publique de votre serveur :

https://server_domain_or_IP 

Sélectionnez la langue que vous souhaitez utiliser :

WordPress language selection

Ensuite, vous arriverez à la page de configuration principale.

Choisissez un nom pour votre site WordPress et choisissez un nom d'utilisateur. Il est recommandé de choisir quelque chose d'unique et d'éviter les noms d'utilisateur courants comme « admin » pour des raisons de sécurité. Un mot de passe fort est généré automatiquement. Enregistrez ce mot de passe ou choisissez un autre mot de passe fort.

Entrez votre adresse e-mail et choisissez si vous voulez demander aux moteurs de recherche de ne pas indexer votre site :

WordPress setup installation

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

WordPress login prompt

Une fois connecté, vous serez redirigé vers le tableau de bord d'administration de WordPress :

WordPress login prompt

A ce stade, vous pouvez commencer à concevoir votre site WordPress ! Si c'est la première fois que vous utilisez WordPress, explorez un peu l'interface pour vous familiariser avec votre nouveau CMS.

Conclusion

Félicitations, WordPress est maintenant installé et prêt à être utilisé !

À ce stade, vous voudrez peut-être commencer à faire ce qui suit :

  • Choisissez vos paramètres de permaliens pour les messages WordPress, qui se trouvent dans Settings > Permalinks.
  • Sélectionnez un nouveau thème dans Appearance > Themes. 
  • Installez de nouveaux plugins pour augmenter les fonctionnalités de votre site sous Plugins > Add New. 
  • Si vous comptez collaborer avec d'autres personnes, vous pouvez également ajouter des utilisateurs supplémentaires à ce moment sous Users > Add New. 

Vous pouvez trouver des ressources supplémentaires pour d'autres façons d'installer WordPress, apprendre comment installer WordPress sur différentes distributions de serveurs, automatiser vos installations WordPress, et faire évoluer vos sites WordPress en consultant notre balise communautaire WordPress.