Amazon Elastic Compute Cloud
Guide de l'utilisateur pour les instances Linux

Didacticiel : Hébergement d'un blog WordPress avec Amazon Linux

Les procédures suivantes vous aideront à installer, configurer et sécuriser un blog WordPress sur votre instance Amazon Linux. Ce didacticiel est une bonne introduction sur l'utilisation d'Amazon EC2, dans la mesure où vous contrôlez entièrement un serveur web qui héberge votre blog WordPress, ce qui n'est pas classique avec un service d'hébergement traditionnel.

Vous êtes responsable de la mise à jour des packages logiciels et de la gestion des correctifs de sécurité pour votre serveur. Pour une installation de WordPress plus automatisée qui ne nécessite aucune interaction directe avec la configuration du serveur web, le service AWS CloudFormation propose un modèle WordPress qui peut vous permettre de débuter rapidement. Pour plus d'informations, consultez la section Getting Started du manuel AWS CloudFormation Guide de l'utilisateur. Si vous préférez héberger votre blog WordPress sur une instance Windows, consultez la section Déploiement d'un blog WordPress sur votre instance Windows Amazon EC2 du manuel Amazon EC2 Guide de l'utilisateur pour les instances Windows. Si vous avez besoin d'une solution hautement disponible avec une base de données découplée, consultez Déploiement d'un site web WordPress haute disponibilité dans le AWS Elastic Beanstalk Manuel du développeur.

Important

Ces procédures sont destinées à une utilisation avec Amazon Linux. Pour obtenir plus d'informations sur d'autres distributions, consultez leur documentation spécifique. Plusieurs étapes de ce didacticiel ne fonctionnent pas sur des instances Ubuntu. Pour obtenir de l'aide sur l'installation de WordPress sur une instance Ubuntu, consultez WordPress dans la documentation Ubuntu.

Prérequis

Ce didacticiel suppose que vous avez lancé une instance Amazon Linux avec un serveur Web opérationnel à l'aide de la prise en charge PHP et de base de données (MySQL ou MariaDB) en suivant toutes les étapes dans Didacticiel : Installation d'un serveur web LAMP avec l'Amazon Linux AMI pour l'AMI Amazon Linux ou Didacticiel : Installation d'un serveur web LAMP sur Amazon Linux 2 pour Amazon Linux 2. Ce didacticiel propose aussi des étapes pour la configuration d'un groupe de sécurité afin de permettre le trafic HTTP et HTTPS ainsi que plusieurs étapes afin de vous assurer que les autorisations sur les fichiers sont définies correctement pour votre serveur web. Pour plus d'informations sur l'ajout de règles à votre groupe de sécurité, consultez le didacticiel Ajout de règles à un groupe de sécurité.

Nous vous recommandons vivement d'associer une adresse IP Elastic à l'instance que vous utilisez pour héberger un blog WordPress. Cela évite à l'adresse DNS publique de votre instance de changer et de détériorer votre installation. Si vous possédez un nom de domaine et que vous voulez l'utiliser pour votre blog, vous pouvez mettre à jour l'enregistrement DNS pour que le nom de domaine pointe vers votre EIP (afin d'obtenir de l'aide à ce sujet, veuillez contacter votre serveur d'inscriptions des noms de domaine). Vous pouvez avoir une EIP associée à une instance en cours d'exécution sans coût aucun. Pour plus d'informations, consultez Adresses IP Elastic.

Si vous n'avez pas encore de nom de domaine pour votre blog, vous pouvez enregistrer un nom de domaine avec Route 53 et associer l'EIP de votre instance à votre nom de domaine. Pour plus d'informations, consultez la section Inscription de noms de domaines à l'aide d'Amazon Route 53 du manuel Amazon Route 53 Manuel du développeur.

Installer WordPress

Connectez-vous à votre instance et téléchargez le package d'installation WordPress.

Pour télécharger et décompresser le package d'installation WordPress

  1. Téléchargez le dernier package d'installation WordPress avec la commande wget. La commande suivante devrait toujours télécharger la dernière version.

    [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
  2. Décompressez et désarchivez le package d'installation. Le dossier d'installation est décompressé dans un dossier appelé wordpress.

    [ec2-user ~]$ tar -xzf latest.tar.gz

Pour créer une base de données et un utilisateur pour votre installation WordPress

Votre installation WordPress doit stocker des informations dans une base de données comme des billets de blog et des commentaires des utilisateurs. Cette procédure vous aide à créer la base de données de votre blog et un utilisateur qui est autorisé à lire et à enregistrer des informations dans cette dernière.

  1. Démarrez le serveur de base de données.

    • Amazon Linux 2

      [ec2-user ~]$ sudo systemctl start mariadb
    • AMI Amazon Linux

      [ec2-user ~]$ sudo service mysqld start
  2. Connectez-vous au serveur de base de données en tant qu'utilisateur root. Saisissez votre mot de passe root de base de données lorsque vous y êtes invité. Il peut être différent du mot de passe root de votre système ou il peut même être inexistant si vous n'avez pas sécurisé votre serveur de base de données.

    Si vous n'avez pas encore sécurisé votre serveur de base de données, il est important de le faire. Pour plus d'informations, consultez Pour sécuriser le serveur de base de données.

    [ec2-user ~]$ mysql -u root -p
  3. Créez un utilisateur et un mot de passe pour votre base de données MySQL. Votre installation WordPress utilise ces valeurs pour communiquer avec votre base de données MySQL. Saisissez la commande suivante en remplaçant les informations par un nom utilisateur et un mot de passe uniques.

    CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';

    Assurez-vous de créer un mot de passe fiable pour votre utilisateur. N'utilisez pas l'apostrophe ( ' ) dans votre mot de passe, car elle détériorera la commande précédente. Pour plus d'informations sur la création d'un mot de passe fiable, consultez http://www.pctools.com/guides/password/. Ne réutilisez pas un mot de passe existant et assurez-vous de stocker ce mot de passe dans un endroit sûr.

  4. Créez votre base de données. Donnez à votre base de données un nom descriptif pertinent comme wordpress-db.

    Note

    Les signes de ponctuation autour du nom de la base de données dans la commande ci-dessous sont appelés « accents graves ». La touche « accent grave » (`) est généralement située au-dessus de la touche Tab d'un clavier QWERTY standard. Les « accents graves » ne sont pas toujours nécessaires, mais ils vous permettent d'utiliser des caractères qui sont normalement interdits dans les noms de base de données, comme les traits d'union.

    CREATE DATABASE `wordpress-db`;
  5. Accordez l'ensemble des privilèges de votre base de données à l'utilisateur WordPress que vous avez créé précédemment.

    GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
  6. Annulez les privilèges de base de données pour récupérer tous vos changements.

    FLUSH PRIVILEGES;
  7. Quittez le client mysql.

    exit

Pour créer et modifier le fichier wp-config.php

Le dossier d'installation WordPress contient un modèle de fichier de configuration appelé wp-config-sample.php. Dans cette procédure, vous copiez ce fichier avant de le modifier pour respecter votre configuration spécifique.

  1. Copiez le fichier wp-config-sample.php sur un fichier appelé wp-config.php. Cela crée un nouveau fichier de configuration et garde le modèle de fichier original intact comme sauvegarde.

    [ec2-user ~]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
  2. Modifiez le fichier wp-config.php avec votre éditeur de texte préféré (comme nano ou vim) et saisissez les valeurs pour votre installation. Si vous n'avez pas d'éditeur de texte préféré, nano convient aux débutants.

    [ec2-user ~]$ nano wordpress/wp-config.php
    1. Trouvez la ligne qui définit DB_NAME et remplacez database_name_here par le nom de la base de données que vous avez créée à l'Étape 4 de la procédure Pour créer une base de données et un utilisateur pour votre installation WordPress.

      define('DB_NAME', 'wordpress-db');
    2. Trouvez la ligne qui définit DB_USER et remplacez username_here par l'utilisateur de base de données que vous avez créé à l'Étape 3 de la procédure Pour créer une base de données et un utilisateur pour votre installation WordPress.

      define('DB_USER', 'wordpress-user');
    3. Trouvez la ligne qui définit DB_PASSWORD et remplacez password_here par le mot de passe fiable que vous avez créé à l'Étape 3 de la procédure Pour créer une base de données et un utilisateur pour votre installation WordPress.

      define('DB_PASSWORD', 'your_strong_password');
    4. Trouvez la section appelée Authentication Unique Keys and Salts. Ces valeurs KEY et SALT offrent une layer de chiffrement aux cookies du navigateur que les utilisateurs de WordPress stockent sur leurs machines locales. En gros, l'ajout de valeurs longues aléatoires à cet endroit rend votre site plus sécurisé. Consultez https://api.wordpress.org/secret-key/1.1/salt/ pour générer de façon aléatoire un ensemble de valeurs clés que vous pouvez copier et coller dans votre fichier wp-config.php. Pour coller du texte dans un terminal PuTTY, placez le curseur où vous voulez coller le texte et faites un clic droit avec votre souris dans le terminal PuTTY.

      Pour obtenir plus d'informations sur les clés de sécurité, consultez http://codex.wordpress.org/Editing_wp-config.php#Security_Keys.

      Note

      Les valeurs ci-dessous sont proposées à titre d'exemple seulement. N'utilisez pas ces valeurs pour votre installation.

      define('AUTH_KEY', ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-'); define('SECURE_AUTH_KEY', 'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg'); define('LOGGED_IN_KEY', 'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3'); define('NONCE_KEY', 'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj'); define('AUTH_SALT', 'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h'); define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv'); define('LOGGED_IN_SALT', ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/'); define('NONCE_SALT', '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
    5. Enregistrez le fichier et quittez votre éditeur de texte.

Pour placer vos fichiers WordPress à la racine du document Apache

  1. Maintenant que vous avez décompressé le dossier d'installation, créé une base de données et un utilisateur MySQL et personnalisé le fichier de configuration WordPress, vous êtes prêt à copier vos fichiers d'installation à la racine du document du serveur web. Ainsi, vous pouvez exécuter le script d'installation pour terminer votre installation. L'emplacement de ces fichiers varie selon que vous préfériez avoir votre blog WordPress disponible à la racine réelle de votre serveur web (par exemple, my.public.dns.amazonaws.com) ou dans un sous-répertoire ou dossier à la racine (par exemple, my.public.dns.amazonaws.com/blog).

  2. Si vous souhaitez que WordPress s'exécute à la racine de votre document, copiez le contenu du répertoire d'installation wordpress (et non le répertoire lui-même), comme suit :

    [ec2-user ~]$ cp -r wordpress/* /var/www/html/
  3. Si vous souhaitez que WordPress s'exécute dans un autre répertoire à la racine du document, commencez par créer ce répertoire, puis copiez-y les fichiers. Dans cet exemple, WordPress s'exécutera à partir du répertoire blog :

    [ec2-user ~]$ mkdir /var/www/html/blog [ec2-user ~]$ cp -r wordpress/* /var/www/html/blog/

Important

A des fins de sécurité, si vous ne passez pas à la prochaine procédure immédiatement, arrêtez le serveur web Apache (httpd) dès maintenant. Une fois que vous avez déplacé votre installation à la racine du document Apache, le script d'installation WordPress n'est pas protégé, et un pirate informatique est susceptible d'accéder à votre blog si le serveur Web Apache est en cours d'exécution. Pour arrêter le serveur Web Apache, saisissez la commande sudo service httpd stop. Si vous ne passez pas à la prochaine procédure, vous n'avez pas à arrêter le serveur web Apache.

Pour autoriser WordPress à utiliser les permalinks

Les permalinks WordPress doivent utiliser les fichiers .htaccess Apache pour fonctionner correctement, mais ce n'est pas activé par défaut sur Amazon Linux. Utilisez cette procédure pour permettre tous les remplacements à la racine du document Apache.

  1. Ouvrez le fichier httpd.conf avec votre éditeur de texte préféré (comme nano ou vim). Si vous n'avez pas d'éditeur de texte préféré, nano convient aux débutants.

    [ec2-user ~]$ sudo vim /etc/httpd/conf/httpd.conf
  2. Trouvez la section qui commence par <Directory "/var/www/html">.

    <Directory "/var/www/html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Require all granted </Directory>
  3. Modifiez la ligne AllowOverride None dans la section ci-dessus par AllowOverride All.

    Note

    Il existe plusieurs lignes AllowOverride dans ce fichier. Assurez-vous de modifier la ligne dans la section <Directory "/var/www/html">.

    AllowOverride All
  4. Enregistrez le fichier et quittez votre éditeur de texte.

Pour corriger les autorisations sur les fichiers pour le serveur web Apache

Certaines fonctions disponibles dans WordPress nécessitent un accès en écriture à la racine du document Apache (comme le chargement de supports via des écrans d'administration). Si vous ne l'avez pas déjà fait, appliquez les autorisations et appartenances aux groupes suivantes (comme décrit plus en détail dans le didacticiel sur le serveur web LAMP).

  1. Accordez la propriété du fichier /var/www et de son contenu à l'utilisateur apache.

    [ec2-user ~]$ sudo chown -R apache /var/www
  2. Accordez la propriété de groupe de /var/www et de son contenu au groupe apache.

    [ec2-user ~]$ sudo chgrp -R apache /var/www
  3. Modifiez les autorisations sur les répertoires de /var/www et ses sous-répertoires pour ajouter des autorisations d'écriture de groupe et définir l'ID de groupe pour les futurs sous-répertoires.

    [ec2-user ~]$ sudo chmod 2775 /var/www [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
  4. Modifiez de façon récursive les autorisations sur les fichiers de /var/www et ses sous-répertoires pour ajouter des autorisations d'écriture de groupe.

    [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
  5. Redémarrez le serveur web Apache pour récupérer les nouveaux groupe et autorisations.

    • Amazon Linux 2

      [ec2-user ~]$ sudo systemctl restart httpd
    • AMI Amazon Linux

      [ec2-user ~]$ sudo service httpd restart

Pour exécuter le script d'installation WordPress avec Amazon Linux 2

Vous êtes maintenant prêt à installer WordPress. Les commandes que vous utilisez dépendent du système d'exploitation. Les commandes dans cette procédure sont destinées à une utilisation avec Amazon Linux 2. Exécutez la procédure suivant celle-ci avec AMI Amazon Linux.

  1. Utilisez la commande systemctl pour vous assurer que les services httpd et de base de données commencent à chaque démarrage système.

    [ec2-user ~]$ sudo systemctl enable httpd && sudo systemctl enable mariadb
  2. Vérifiez que le serveur de base de données est en cours d'exécution.

    [ec2-user ~]$ sudo systemctl status mariadb

    Si le service de base de données n'est pas en cours d'exécution, démarrez-le.

    [ec2-user ~]$ sudo systemctl start mariadb
  3. Vérifiez que votre serveur web Apache (httpd) est en cours d'exécution.

    [ec2-user ~]$ sudo systemctl status httpd

    Si le service httpd n'est pas en cours d'exécution, démarrez-le.

    [ec2-user ~]$ sudo systemctl start httpd
  4. Dans un navigateur Web, saisissez l'URL de votre blog WordPress (soit l'adresse DNS publique pour votre instance soit cette adresse suivie par le dossier blog). Vous devriez voir le script d'installation WordPress. Fournissez les informations requises lors de l'installation de WordPress. Choisissez Installer WordPress pour terminer l'installation. Pour plus d'informations, consultez Exécuter le script d'installation sur le site web de WordPress.

Exécuter le script d'installation WordPress avec AMI Amazon Linux

  1. Utilisez la commande chkconfig pour vous assurer que les services httpd et de base de données commencent à chaque démarrage système.

    [ec2-user ~]$ sudo chkconfig httpd on && sudo chkconfig mysqld on
  2. Vérifiez que le serveur de base de données est en cours d'exécution.

    [ec2-user ~]$ sudo service mysqld status

    Si le service de base de données n'est pas en cours d'exécution, démarrez-le.

    [ec2-user ~]$ sudo service mysqld start
  3. Vérifiez que votre serveur web Apache (httpd) est en cours d'exécution.

    [ec2-user ~]$ sudo service httpd status

    Si le service httpd n'est pas en cours d'exécution, démarrez-le.

    [ec2-user ~]$ sudo service httpd start
  4. Dans un navigateur Web, saisissez l'URL de votre blog WordPress (soit l'adresse DNS publique pour votre instance soit cette adresse suivie par le dossier blog). Vous devriez voir le script d'installation WordPress. Fournissez les informations requises lors de l'installation de WordPress. Choisissez Installer WordPress pour terminer l'installation. Pour plus d'informations, consultez Exécuter le script d'installation sur le site web de WordPress.

Étapes suivantes

Après avoir testé votre blog WordPress, pensez à mettre à jour sa configuration.

Utilisez un nom de domaine personnalisé

Si vous avez un nom de domaine associé à l'EIP de votre instance EC2, vous pouvez configurer votre blog pour utiliser ce nom au lieu de l'adresse DNS publique EC2. Pour obtenir plus d'informations, consultez http://codex.wordpress.org/Changing_The_Site_URL.

Configurez votre blog

Vous pouvez configurer votre blog pour utiliser différents thèmes et plugins afin de proposer une expérience plus personnalisée à vos lecteurs. Cependant, il peut arriver que le processus d'installation échoue ce qui entraînera la perte de tout votre blog. Nous vous recommandons vivement de créer une sauvegarde Amazon Machine Image (AMI) de votre instance avant d'essayer d'installer des thèmes ou des plugins. Ainsi, vous pouvez restaurer votre blog en cas de problème pendant l'installation. Pour plus d'informations, consultez Création de votre propre AMI.

Augmentez la capacité

Si votre blog WordPress devient populaire et que vous avez besoin de plus de puissance de calcul ou de stockage, pensez aux étapes suivantes :

En savoir plus sur WordPress

Pour obtenir des informations sur WordPress, consultez la documentation d'aide au sujet de WordPress Codex sur http://codex.wordpress.org/. Pour obtenir plus d'informations sur le dépannage de votre installation, consultez http://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems. Pour obtenir des informations sur comment rendre votre blog WordPress plus sécurisé, consultez http://codex.wordpress.org/Hardening_WordPress. Pour obtenir des informations sur comment garder à jour votre blog WordPress, consultez http://codex.wordpress.org/Updating_WordPress.

Aide! Mon nom DNS public a changé et mon blog ne fonctionne plus

Votre installation WordPress est automatiquement configurée à l'aide de l'adresse DNS publique pour votre instance EC2. Si vous arrêtez et redémarrez l'instance, l'adresse DNS publique change (à moins qu'elle soit associée à une adresse IP Elastic) et votre blog ne fonctionne plus, car il fait référence à des ressources à une adresse qui n'existe plus (ou qui est assignée à une autre instance EC2). Une description plus détaillée du problème et de plusieurs solutions possibles est présentée sur http://codex.wordpress.org/Changing_The_Site_URL.

Si cela est arrivé à votre installation WordPress, vous pouvez récupérer votre blog avec la procédure ci-dessous qui utilise l'interface de ligne de commande wp-cli pour WordPress.

Pour changer l'URL de votre site WordPress avec la commande wp-cli

  1. Connectez-vous à votre instance EC2 avec SSH.

  2. Notez l'ancienne URL de site et la nouvelle URL de site pour votre instance. L'ancienne URL de site ressemble au nom DNS public pour votre instance EC2 lorsque vous avez installé WordPress. La nouvelle URL de site correspond au nom DNS public actuel pour votre instance EC2. Si vous n'êtes pas certain de votre ancienne URL de site, vous pouvez utiliser curl pour la trouver avec la commande suivante.

    [ec2-user ~]$ curl localhost | grep wp-content

    Vous devriez voir des références à votre ancien nom DNS public dans les données de sortie qui ressembleront à cela (ancienne URL de site en rouge) :

    <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
  3. Téléchargez le kit wp-cli avec la commande suivante.

    [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  4. Recherchez et remplacez l'ancienne URL de site dans votre installation WordPress avec la commande suivante. Remplacez l'ancienne et la nouvelle URL de site pour votre instance EC2 ainsi que le chemin vers votre installation WordPress (généralement /var/www/html ou /var/www/html/blog).

    [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
  5. Dans un navigateur web, saisissez la nouvelle URL de site de votre blog WordPress pour vérifier que le site fonctionne correctement à nouveau. Si ce n'est pas le cas, consultez http://codex.wordpress.org/Changing_The_Site_URL et http://codex.wordpress.org/Installing_WordPress#Common_Installation_Problems pour plus d'informations.