Dupliquer une installation
Contenu
Introduction
Pourquoi dupliquer une installation Elgg ?
Il existe beaucoup de raisons pour lesquelles vous pouvez vouloir dupliquer une installation Elgg : déplacer le site vers un autre serveur, créer un serveur de test ou de développement, et créer des backups fonctionnels sont les plus habituelles. Pour créer un double fonctionnel d’un site Elgg, 3 choses doivent être copiées :
Base de données
Données du répertoire des données
Code
Il faut modifier au moins 5 éléments d’information pour une installation copiée :
le fichier
elgg-config/settings.php
qui peut aussi se trouver à l’emplacementengine/settings.php
pour les versions pré-2.0le fichier
.htaccess
(Apache) ou la configuration de Nginx en fonction du serveur utilisél’entrée de la base de donnée pour l’entité de votre site
l’entrée de la base de donnée pour le chemin d’installation
l’entrée de la base de donnée pour le chemin du répertoire des données
Ce qui n’est pas traité dans ce tutoriel
Ce tutoriel nécessite une connaissance minimale d’Apache, MySQL, et des commandes Linux. A ce titre, certaines choses ne seront pas couvertes dans ce tutoriel. Ceci comprend :
Comment faire un backup - sauvegarder et restaurer des bases de données MySQL
Comment configurer Apache pour fonctionner avec Elgg
Comment transférer des fichiers vers et depuis votre serveur de production
Avant de commencer
Avant de commencer, assurez-vous que votre installation Elgg est pleinement fonctionnelle. Vous aurez aussi besoin des éléments suivants :
Un backup de la base de données de votre site Elgg actif
Un emplacement pour copier la base de données active
- Un serveur qui convienne pour installer le site Elgg dupliqué
(Qui peut être le même serveur que celui de votre installation Elgg en production)
Les backups de la base de données peuvent être obtenus de diverses manières, y compris via phpMyAdmin, l’interface graphique de MySQL, et la ligne de commande. Contactez votre hébergeur pour des informations sur comment sauvegarder et restaurer des bases de données, ou utilisez un moteur de recherche pour trouver de l’information à ce sujet.
Au cours de ce tutoriel, nous allons faire les hypothèses suivantes à propos du site Elgg en production :
L’URL est
http://www.myelgg.org/
Le chemin d’installation est
/var/www/elgg/
Le chemin du répertoire des données est
/var/data/elgg/
L’hôte de la base de données est
localhost
Le nom de la base de données est
production_elgg
L’utilisateur de la base de données est
db_user
Le mot de passe de la base de données est
db_password
Le préfixe des tables de la base de données est
elgg
A la fin du tutoriel, les renseignements de notre installation Elgg de test seront :
L’URL est
http://test.myelgg.org/
Le chemin d’installation est
/var/www/elgg_test/
Le répertoire des données est
/var/data/elgg_test/
L’hôte de la base de données est
localhost
Le nom de la base de données est
test_elgg
L’utilisateur de la base de données est
db_user
Le mot de passe de la base de données est
db_password
Le préfixe des tables de la base de données est
elgg
Copiez le code de Elgg vers le serveur de test
La toute première étape est de dupliquer le code du site Elgg de production. Dans notre exemple, c’est aussi simple que de copier /var/www/elgg/
vers /var/www/elgg_test/
.
cp -a /var/www/elgg/ /var/www/elgg_test/
Copiez les données de Elgg vers le serveur de test
Dans cet exemple, c’est aussi simple que copier /var/data/elgg/
vers /var/data/elgg_test/
.
cp -a /var/data/elgg/ /var/data/elgg_test/
Si vous n’avez pas d’accès console - shell - à votre serveur et devez transférer les données par FTP, vous pouvez avoir besoin de modifier le propriétaire et les permissions des fichiers.
Note
Vous devez aussi supprimer les dossiers de cache du disque. Ceux-ci correspondent aux dossiers cacheroot
et assetroot
dans votre configuration.
Editez settings.php
Le fichier elgg-config/settings.php
contient les renseignement de configuration de la base de données. Ceux-ci doivent être ajustés pour votre nouvelle installation Elgg de test. Dans notre exemple, nous allons regarder dans /var/www/elgg_test/elgg-config/settings.php
et trouver les lignes qui ressemblent à ceci :
// Database username
$CONFIG->dbuser = 'db_user';
// Database password
$CONFIG->dbpass = 'db_password';
// Database name
$CONFIG->dbname = 'elgg_production';
// Database server
// (For most configurations, you can leave this as 'localhost')
$CONFIG->dbhost = 'localhost';
// (For most configurations, you can leave this as 3306)
$CONFIG->dbport = 3306;
// Database table prefix
// If you're sharing a database with other applications, you will want to use this
// to differentiate Elgg's tables.
$CONFIG->dbprefix = 'elgg';
Nous devons modifier ces lignes pour qu’elles correspondent à notre nouvelle installation :
// Database username
$CONFIG->dbuser = 'db_user';
// Database password
$CONFIG->dbpass = 'db_password';
// Database name
$CONFIG->dbname = 'elgg_test';
// Database server
// (For most configurations, you can leave this as 'localhost')
$CONFIG->dbhost = 'localhost';
// (For most configurations, you can leave this as 3306)
$CONFIG->dbport = 3306;
// Database table prefix
// If you're sharing a database with other applications, you will want to use this
// to differentiate Elgg's tables.
$CONFIG->dbprefix = 'elgg';
$CONFIG->wwwroot = 'http://your.website.com/'
Note
Notez que $CONFIG->dbname
a changé pour correspondre à notre nouvelle base de données.
Copier la base de données de Elgg
Maintenant la base de données doit être copiée depuis elgg_production
vers elgg_test
. Voyez la documentation de votre gestionnaire MySQL préféré pour savoir comment dupliquer une base de données. Vous allez généralement exporter les tables de la base de donnée actuelle vers un fichier, créer la nouvelle base de données, puis importer les tables que vous avez précédemment exportées.
Vous avez deux possibilités pour mettre à jour les valeurs dans la base de données. Vous pourriez changer les valeurs dans le fichier exporté, ou vous pourriez modifier ces valeurs par des requêtes sur la base de données. Un avantage de modifier directement le fichier exporté est que vous pouvez aussi modifier les liens que les utilisateurs ont créé vers du contenu au sein de votre site. Par exemple, si des personnes ont mis en marque-page des pages avec le plugin bookmarks, les marque-pages vont pointer vers l’ancien site tant que vous n’aurez pas mis à jour leurs URLs.
Entrées de la base de données
Nous devons maintenant modifier 4 entrées dans la base de données. Ceci peut être fait aisément en exécutant 4 commandes SQL simples :
Modifiez le chemin d’installation
UPDATE `elgg_config` SET `value` = REPLACE(`value`, "/var/www/elgg_production/", "/var/www/elgg_test/") WHERE `name` = "path";
Modifiez le répertoire des données
UPDATE `elgg_config` SET `value` = REPLACE(`value`, "/var/data/elgg_production/", "/var/data/elgg_test/") WHERE `name` = "dataroot";
Vérifiez le fichier .htaccess
Si vous aviez apporté des modifications au fichier .htaccess qui modifient des chemins, assurez-vous que vous les mettez à jour dans l’installation de test.
Mettez à jour la configuration du serveur web
Pour cet exemple, vous devez modifier la config Apache pour activer un sous-domaine avec pour racine des documents - document root /var/www/elgg_test/
. Si vous prévoyez d’installer dans un sous-répertoire de votre racine des documents, cette étape n’est pas nécessaire.
Si vous utilisez Nginx, vous aurez besoin de mettre à jour la configuration du serveur pour correspondre aux nouveaux chemins basés sur install/config/nginx.dist
.
Exécutez upgrade.php
Pour régénérer les données mises en cache, assurez-vous d’exécuter http://test.myelgg.org/upgrade.php
Astuces
C’est une bonne idée de garder un serveur de test à portée de main pour expérimenter l’installation de nouveaux plugins et faire du développement. Si vous automatisez les restaurations de la base de données elgg_test
, modifier les valeurs de $CONFIG
et ajouter les lignes suivantes à la fin du fichier elgg_test/elgg-config/settings.php
va permettre de réécrire sans couture les entrées de la base de données MySQL.
$con = mysql_connect($CONFIG->dbhost, $CONFIG->dbuser, $CONFIG->dbpass);
mysql_select_db($CONFIG->dbname, $con);
$sql = "UPDATE {$CONFIG->dbprefix}config
SET value = REPLACE(`value`, "/var/www/elgg_production/", "/var/www/elgg_test/")
WHERE name = 'path'";
mysql_query($sql);
print mysql_error();
$sql = "UPDATE {$CONFIG->dbprefix}config
SET value = REPLACE(`value`, "/var/data/elgg_production/", "/var/data/elgg_test/")
WHERE name = 'dataroot'";
mysql_query($sql);
print mysql_error();