Faire tourner un site wordpress en local
Aujourd'hui, j'ai entrepris d'éditer en local le site wordpress de climat-2020.eu. J'ai retenu quelques astuces qui seront utiles pour toute autre tâche similaire dans le futur. Cette démarche permet de faire tourner un site en local simplement et sans aucun outil particulier. Elle peut donc être appliquée à d'autres CMS.
Télécharger les fichiers du site et sa base de donnée
Je me suis connecté en FTP pour récupérer le contenu du site. J'ai exporté la base de données mysql dans phpmyadmin, mais ça dépend d'où est installé le site que vous voulez faire tourner. Bien sûr, il vous faut les identifiants.
Préparer son environnement de développement
Installer les programmes nécessaires
J'ai choisi Ubuntu, parce que debian est mon environnement habituel pour les serveurs. Pour servir le site en local, j'ai choisi apache. J'aurais pu installer tous les paquets d'un coup avec lamp ou xamp, mais j'ai choisi d'installer les paquets un par un.
sudo apt install apache2 php mysql-server libapache2-mod-php php-mysql
C'est à dire :
- apache2 : le programme apache (alternative nginx)
- php : le langage php
- mysql-server : un logiciel de base de donnée (alternative mariadb)
- libapache2-mod-php : le module apache pour le php
- php-mysql : le module php pour mysql
Configurer les programmes
Apache
Installez et activez les modules si nécessaire. Par exemple, pour activer "mod_rewrite"
sudo a2enmod rewrite
Il faut autoriser apache à servir les fichiers du site. Comme le site redirige en https par défaut, j'ai configuré un virtualhost sur le port 443 :
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
DocumentRoot /home/dev/finance-climat/www
RewriteEngine on
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
</IfModule>
Et dans le fichier /etc/apache2/apache2.conf
<Directory /home/dev>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Après des modifs sur les fichiers de configuration n'oubliez pas de redémarrer apache.
sudo service apache2 restart
Vous remarquerez ici que je n'ai pas installé de certificat. J'ai juste ajouté une exception de sécurité pour ce site sur firefox, ce qui n'est pas gênant puisque je ne le consulte qu'en local.
Mysql
Wordpress utilise une base de données. Pour voir les paramètres, allez voir dans le fichier wp-config.php.
define('DB_NAME', 'superdatabase');
define('DB_USER', 'superusername');
define('DB_PASSWORD', 'superpassword');
Changez l'adresse de la base de données à 'localhost'.
// define('DB_HOST', 'superdatabase.sql.online.net');
define('DB_HOST', 'localhost');
Pour créer la base de données et connecter wordpress :
se connecter à la base de données :
mysql -u root -p
une fois dans mysql, créer l'utilisateur
create user superusername identified by superpassword;
créez la base de données
create database superdatabase;
donnez les droits à l'utilisateur
grant all on superdatabase to superusername@localhost
importez la base de données depuis un terminal
mysql -u superusername -p superdatabase < superdatabase.sql
Rediriger le nom de domaine vers localhost
Comme beaucoup de sites sont mal foutus et ont des liens absolus au lieu de liens relatifs, j'ai décidé d'ajouter une entrée au fichier /etc/hosts :
# added temporarly to edit the site locally
127.0.0.1 climat-2020.eu
Bien entendu, je ne peux plus consulter le site réel pendant que j'ai cette modification, mais c'est juste pour le développement, donc temporaire.
Se rendre sur le site
Quand vous ouvrez votre navigateur à l'URL 'https://climat-2020.eu', après avoir ajouté une exception de sécurité (c'est en localhost, pas de certificat), vous pouvez essayer de modifier le site. Pour bien vous convaincre que c'est le site local et pas distant (avec l'URL, on pourrait s'y méprendre) arrêtez apache :
sudo service apache2 stop
Le tour est joué, vous pouvez même consulter le site modifié depuis une autre machine en modifiant son fichier hosts avec l'adresse IP de votre machine !