Configuration matérielle et logicielle utilisée :
Raspberry Pi 3 Model B
Ubuntu Mate 16.04.2 pour Raspberry Pi
Apache 2
MySQL
PHP
WordPress 4.8
Dans cet article nous verrons comment héberger localement notre site web WordPress sur un système Ubuntu. J’ai choisi comme ordinateur un Raspberry Pi 3 Model B.
La distribution Ubuntu Mate dispose d’une image prête pour ce type d’architecture. Vous pouvez la télécharger via le lien en note 1 en bas de cet article.
Premiers réglages
Pour installer cette image sur la carte Micro SD du Raspberry j’utilise le logiciel Win32 Disk Imager (pour Windows) comme indiqué sur le site d’Ubuntu Mate, note 2.
Une fois l’image installée sur la carte vous pouvez alors démarrer votre Raspberry et procéder à l’installation d’Ubuntu.
Une fois installé vous accédez au bureau d’Ubuntu. Vous pouvez commencer par mettre à jour la liste des paquets via la commande apt-get update
Et mettre à jour les paquets avec apt-get dist-upgrade
Redémarrer votre ordinateur.
Maintenant que notre système est à jour nous pouvons installer Apache 2, MySQL et PHP à l’aide d’une seule commande :
apt-get install lamp-server^
Cette installation vous demandera de saisir un mot de passe pour le super utilisateur de MySQL.
Maintenant que LAMP est installé nous allons télécharger WordPress.
Rendez-vous sur le site officiel de WordPress (note 3) afin d’y télécharger l’archive au format .tar.gz
Extraire le contenu de cette archive avec tar -xzvf suivi par le nom de l’archive.
Cette archive contient un dossier wordpress. Déplacer le contenu de celui-ci vers le répertoire qui constituera la racine de votre site web. Pour cet article nous travaillerons dans le répertoire /home/myuser/www où myuser est le nom d’utilisateur créé à l’installation d’Ubuntu.
Paramétrage d’Apache 2
Pour cette partie merci à la vidéo de grafikart.fr (note 4)qui m’a permis de mener à bien cette configuration.
Je commence tout d’abord par créer un lien symbolique du dossier où se trouve mon site web vers le répertoire accessible par Apache2 :
ln -s /home/myuser/www /var/www/mywebsite.fr où mywebsite.fr est le nom de domaine.
J’édite le fichier /etc/hosts et j’y mets l’adresse IP de l’ordinateur qui répondra lorsqu’un client demande l’accès au site web :
192.168.1.2 mywebsite.fr
192.168.1.2 www.mywebsite.fr
Je créé maintenant le Virtual Host dans le répertoire /etc/apache2/sites-available que j’appelle 001-mywebsite.conf
<VirtualHost *:80>
ServerAdmin myaddressmail@free.fr
ServerName mywebsite.fr
ServerAlias *.mywebsite.fr
DocumentRoot /var/www/mywebsite.fr
<Directory /var/www/mywebsite.fr>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /home/myuser/logs/error.log
</VirtualHost>
La directive ErrorLog permet de rediriger les erreurs vers un fichier. Au préalable j’ai donc créé le dossiers logs dans lequel j’ai placé le fichier le fichier error.log
Pour activer notre site : a2ensite 001-mywebsite
Notre site sera alors présent dans le répertoire sites-enabled de Apache 2.
Je souhaite maintenant que la saisie de http://www.mywebsite.fr redirige vers http://mywebsite.fr
Je créé un fichier .htaccess que je place à la racine de mon site web (répertoire www) :
RewriteEngine On
RewriteCond %{HTTP_POST} ^www.mywebsite.fr$ [NC]
RewriteRule ^(.*)$ http://mywebsite.fr/$1 [R=301,L]
Comme on le voit cela fait appelle au module Rewrite, pour l’activer : a2enmod rewrite
En annexe de cet article vous trouverez plusieurs commandes Apache 2 utiles ainsi que les explications qui vont avec.
MySQL et paramétrages pour le bon fonctionnement de WordPress
Ici je me suis aidé d’un article du site digitalocean.com (note 5) qui explique clairement la manière de préparer son système afin d’y héberger son site WordPress.
Nous allons tout d’abord nous connecter à MySQL afin de créer notre base de données :
mysql -u root -p Cette commande permet de se connecter en tant que root. Le mot de passe vous sera demandé.
Créons notre base de données :
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
où mydb correspond au nom que vous donnez à la base de données.
utf8 correspond au codage des caractères.
Nous créons maintenant un nouvel utilisateur qui opérera sur cette base de données :
GRANT ALL ON mydb.* TO ‘wpuser’@’localhost’ IDENTIFIED BY ‘123456789’; où wpuser correspond à l’utilisateur qui opérera sur cette base.
Evidemment choisissez un mot de passe plus fort que celui ci-dessus!
Puis FLUSH PRIVILEGES; pour prendre en compte immédiatement les nouvelles informations.
Et enfin nous quittons MySQL : EXIT;
Afin d’agrémenter WordPress en fonctionnalités celui-ci utilise un système de plugins qui nécessitent l’installation d’extensions PHP.
Pour installer ces extensions :
apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc
Redémarrons Apache 2 : service apache2 restart
Réglages dans le dossier de notre site web
Attribuons les droits d’accès appropriés au fichier .htaccess créé précédemment :
chmod 660 /home/myuser/www/.htaccess donne les droits d’écriture et de lecture au propriétaire et au groupe du fichier.
Le fichier wp-config-sample.php est le modèle de fichier qui nous sert à créer le fichier wp-config.php :
cp wp-config-sample.php wp-config.php
Créons maintenant le dossier upgrade qui sera utilisé par WordPress pour les mises à jour :
mkdir /home/myuser/www/wp-content/upgrade
Nous avons désormais besoin d’ajuster les droits d’accès ainsi que de définir les propriétaires des dossiers WordPress. En effet sans cela divers problèmes peuvent se produire :
– Impossibilité d’installer un nouveau thème via l’interface de WordPress,
– Impossibilité d’ajouter des images,
– etc.
Attribuons myuser comme utilisateur et www-data comme groupe sur l’ensemble des dossiers :
sudo chown -R myuser:www-data /home/myuser/www
www-data est en fait le groupe du serveur web Apache 2.
La commande suivante va nous permettre qu’à chaque fichier créé dans www le fichier héritera du groupe du répertoire parent, autrement dit le groupe www-data :
sudo find /home/myuser/www -type d -exec chmod g+s {} \;
Donnons maintenant au groupe www-data les droits d’écriture sur le répertoire wp-content utilisé notamment pour les thèmes et plugins :
sudo chmod g+w /home/myuser/www/wp-content
Donnons au groupe www-data l’accès en écriture aux deux dossiers suivants ainsi qu’à tous leurs sous-dossiers :
sudo chmod -R g+w /home/myuser/www/wp-content/themes
sudo chmod -R g+w /home/myuser/www/wp-content/plugins
Pour finir revenons au fichier wp-config.php :
Les lignes define(‘AUTH_KEY’, … à define(‘NONCE_SALT’, … servent à sécuriser l’installation de WordPress.
WordPress fournit un générateur de mot de passe qui vous permettra de compléter cette partie du fichier :
curl -s https://api.wordpress.org/secret-key/1.1/salt/
Il ne reste plus qu’à copier-coller le résultat obtenu dans le fichier wp-config.php
Toujours dans wp-config.php intéressons nous maintenant à la partie :
define(‘DB_NAME’, ‘mydb’);
define(‘DB_USER’, ‘wpuser’);
define(‘DB_PASSWORD’, ‘123456789’);
Nous avons vu plus haut à quoi correspond ces 3 valeurs.
Enfin vous pouvez ajouter en dessous cette ligne :
define(‘FS_METHOD’, ‘direct’);
Cette directive permet à WordPress de réaliser certaines actions directement.
Dans mon cas et sans cette ligne, alors que je voulais installer un nouveau thème, WordPress m’a demandé de réaliser cette opération via FTP.
Grâce aux droits que nous avons défini précédemment et à l’ajout de cette ligne cette question ne se posera plus.
Premier démarrage à l’aide du navigateur web
Dans votre navigateur web favori entrer dans la barre d’adresse : http://mywebsite.fr
L’installation de WordPress vous demandera :
la langue souhaitée,
un nom pour votre site web,
un nom d’utilisateur et un mot de passe (utilisés pour accéder à l’interface d’administration de WordPress),
votre adresse mail,
si vous souhaitez que les moteurs de recherche indexent ou non votre site web.
Et voilà ! Votre site web est prêt.
Si vous souhaitez mettre à jour WordPress, le site digitalocean.com propose de mettre temporairement www-data comme propriétaire sur l’ensemble du répertoire www le temps de l’opération :
sudo chown -R www-data /home/myuser/www
Cela afin d’éviter des erreurs lors de la mise à jour.
Une fois la mise à jour faite remettez myuser comme propriétaire de l’ensemble du répertoire :
sudo chown -R myuser /home/myuser/www
Liens
1 – https://ubuntu-mate.org/download/
2 – https://ubuntu-mate.org/raspberry-pi/
3 – https://fr.wordpress.org
4 – https://www.youtube.com/watch?v=arVwa7jvp5M
5 – www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-lamp-on-ubuntu-16-04
Commandes utiles
service apache2 reload Pour recharger la configuration d’Apache 2.
service apache2 restart Pour redémarrer le serveur web Apache 2.
/var/log/apache2/error.log Où nous retrouvons les erreurs liées à Apache 2.
/usr/sbin/apache2ctl configtest Commande qui vérifie la bonne configuration d’Apache 2.