Cet article explique comment installer WordPress® sur un serveur Web Linux® avec Apache®.
WordPress, un outil de blogging open source populaire, utilise PHP et MySQL® pour gérer le contenu et l'interface du site.
Important :Rackspace Support ne prend pas en charge la configuration de WordPress. Cet article fournit des étapes comme solution optimale, mais vos développeurs doivent les examiner attentivement avant de les mettre en œuvre afin d'éviter les temps d'arrêt inattendus.
Prérequis
Exécutez toutes les commandes en tant qu'utilisateur non root avec sudo
privilèges.
Pour cette installation, installez une pile LAMP sur le serveur. LAMP inclut Linux®, Apache, MySQL et PHP). Si vous les avez déjà installés, passez à la section suivante. Sinon, reportez-vous à notre article sur la façon d'installer une pile LAMP sur les distributions basées sur RHEL 7.
Créer une base de données MySQL et un utilisateur pour WordPress
Comme mentionné précédemment, WordPress utilise une base de données relationnelle pour gérer le contenu. Cet exemple utilise MariaDB, installé précédemment, pour créer un utilisateur et une base de données à utiliser par WordPress. Effectuez les étapes suivantes pour créer une base de données et un utilisateur WordPress :
- Exécutez la commande suivante pour vous connecter à MySQL avec l'utilisateur root :
$ mysql -u root -p
- Créez la base de données nommée wpdatabase . N'oubliez pas que toutes les instructions MySQL doivent se terminer par un point-virgule (; ):
CREATE DATABASE wpdatabase;
- Créez un utilisateur que WordPress utilisera pour travailler sur cette base de données. Définissez l'utilisateur comme
wpuser
avec mot de passepassword
:
CREATE USER wpuser@localhost IDENTIFIED BY 'password';
- Accordez à l'utilisateur les autorisations nécessaires pour gérer l'ensemble de la base de données :
GRANT ALL PRIVILEGES ON wordpress.* TO wpuser@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
- Quitter l'interface MySQL :
exit
Cette procédure complète les exigences de WordPress MySQL. Vous n'êtes pas obligé de créer une base de données et un utilisateur spécifiques pour WordPress, mais nous vous le recommandons vivement pour des raisons de sécurité.
Installer WordPress
Effectuez les étapes suivantes pour installer WordPress :
- Exécutez les commandes suivantes pour installer les packages PHP qui permettent à WordPress de redimensionner les images en vignettes et permettent à la base de données MySQL d'accéder aux fonctions nécessaires :
$ sudo yum install php74-gd php74-mysqlnd
$ sudo service httpd restart
- Téléchargez la dernière version de WordPress dans le répertoire d'accueil de votre serveur :
$ cd ~
$ wget http://wordpress.org/latest.tar.gz
- Extraire tous les fichiers du dossier compressé :
$ tar xzvf latest.tar.gz
Cette commande crée un répertoire appelé wordpress dans votre répertoire personnel qui contient tous les fichiers dont WordPress a besoin pour fonctionner correctement.
- Exécutez la commande suivante pour copier le wordpress répertoire vers /var/www/html , qui contient tous les fichiers de la page Web, et conserve les autorisations par défaut :
$ sudo mv ~/wordpress/ /var/www/html/example.com
- Créez un dossier dans lequel WordPress peut stocker tous les fichiers téléchargés :
$ mkdir /var/www/html/example.com/wp-content/uploads
- Les étapes précédentes créent une page d'exemple WordPress sur votre serveur Web. Cependant, pour que cela fonctionne sans problème, vous devez changer la propriété des fichiers en votre utilisateur FTP ou l'utilisateur et le groupe Apache afin que WordPress puisse accéder à tous les fichiers avec les autorisations appropriées. Exécutez la commande suivante :
$ sudo chown -R FTP_USER:apache /var/www/html/example.com
Configurer WordPress
Bien que vous effectuiez la majeure partie de la configuration via une interface graphique (GUI) sur la page Web, vous devez apporter certaines modifications à la configuration sur le serveur. Effectuez les étapes suivantes pour configurer le serveur :
- Passez au dossier où se trouvent tous les fichiers Web :
$ cd /var/www/html
- Parce que WordPress a besoin d'un fichier de configuration appelé wp-config.php , qui n'existe pas, exécutez la commande suivante pour copier le fichier d'exemple et le renommer :
$ sudo cp wp-config-sample.php wp-config.php
- Modifiez le fichier de configuration avec l'éditeur de texte comme nano ou vi. Cet exemple utilise
vi
:
$ sudo vi wp-config.php
- Spécifiez les informations de la base de données dans les paramètres MySQL section. Entrez le nom de la base de données et les informations d'identification de l'utilisateur définies sur Créer une base de données MySQL et un utilisateur pour WordPress section, semblable à l'exemple suivant :
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wpdatabase');
/** MySQL database username */
define('DB_USER', 'wpuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
Sécuriser WordPress
Modification des autorisations de fichiers
Selon la documentation WordPress, la modification des autorisations de fichiers à la racine du document de votre site Web augmentera la sécurité de votre site Web.
$ find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;
$ find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;
Dans votre configuration vHost ou dans le .htaccess, vous pouvez placer le bloc suivant pour empêcher les scripts d'être accessibles par aucun utilisateur.
# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
# BEGIN WordPress
Désactiver l'exécution de PHP dans le répertoire des téléchargements
Lorsqu'un site Wordpress est compromis, il y a souvent des portes dérobées téléchargées dans des répertoires inscriptibles qui se déguisent en fichiers Wordpress légitimes. Une étape que vous pouvez suivre pour ajouter à votre stratégie de sécurité existante consiste à désactiver l'exécution de PHP dans certains répertoires.
L'une des plus courantes consiste à désactiver l'exécution de PHP dans le répertoire wp-content/uploads. Cela peut être effectué par :
$ vim /var/www/vhosts/example.com/wp-content/uploads/.htaccess
[...]
# Prevent PHP execution
<Files *.php>
deny from all
</Files>
[...]
AVERTISSEMENT : Cela peut casser votre thème s'il nécessite l'exécution de PHP dans le répertoire wp-content/uploads. Si vous constatez que quelque chose ne fonctionne pas, annulez simplement votre modification et le site recommencera à fonctionner.
Bloquer les attaques xmlrpc.php
Wordpress utilise XML-RPC pour exécuter à distance des fonctions dans Wordpress. Souvent, des parties malveillantes tenteront d'exploiter xmlrpc.php en le forçant brutalement, ce qui peut envoyer des milliers de requêtes au serveur Web, et donc causer des problèmes de conflit de ressources.
Une attaque xmlrpc.php peut être détectée en vérifiant les journaux d'accès du site. Si vous voyez des centaines ou des milliers de requêtes dans un court laps de temps qui ressemblent à ce qui est ci-dessous, c'est un signe que xmlrpc.php est attaqué :
$ tail /var/log/httpd/example.com-access.log
[...]
123.123.123.123 - - [2/Jun/2022:15:45:02 +0000] "POST /xmlrpc.php HTTP/1.1" 200 247 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1"
123.123.123.123 - - [2/Jun/2022:15:45:02 +0000] "POST /xmlrpc.php HTTP/1.1" 200 247 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1"
123.123.123.123 - - [2/Jun/2022:15:45:03 +0000] "POST /xmlrpc.php HTTP/1.1" 200 247 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1"
[...]
Vous pouvez atténuer les attaques par force brute xmlrpc.php dans Apache en plaçant ce qui suit dans le fichier .htaccess :
$ vim /var/www/vhosts/example.com/.htaccess
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
Forcer SSL sur les connexions wp-admin
$ vim /var/www/vhosts/example.com/wp-config.php
[...]
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
/* That's all, stop editing! Happy blogging. */
[...]
Terminer la configuration dans l'interface graphique
Vous pouvez maintenant accéder à votre page WordPress en naviguant sur http://
Pour accéder à ce tableau de bord à tout moment, rendez-vous sur http://
Conclusion
WordPress est un système de gestion de contenu (CMS) très intuitif qui vous permet de créer une page Web de blog, rapidement et gratuitement. Après avoir suivi les étapes de cet article, vous pouvez commencer à utiliser votre site WordPress.