Dupliquer une installation¶
Contenus
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 de 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 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 sauvegarder (backup) et restaurer des bases de données MySQL
Comment configurer Apache pour fonctionner avec ElggComment transférer des fichiers vers et depuis votre serveur de production
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 officielle 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 suivante à 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 de 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 de 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 d’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 d’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 avez aussi besoin de supprimer le cache des vues sur le serveur de test après que la copie soit terminée. Il s’agit d’un répertoire nommé views_simplecache
dans votre dossier de données ainsi que le répertoire nommé system_cache
.
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';
// 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';
// 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';
Note
Notez que $CONFIG->dbname
a changé pour correspondre à notre nouvelle base de données.
Copier la base de données d’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_datalists` SET `value` = "/var/www/elgg_test/" WHERE `name` = "path";
Modifiez le répertoire de données¶
UPDATE `elgg_datalists` SET `value` = "/var/data/elgg_test/" WHERE `name` = "dataroot";
Changer l’URL du site¶
UPDATE `elgg_sites_entity` SET `url` = "http://test.myelgg.org/";
Modifiez le répertoire de données de stockage des fichiers¶
UPDATE elgg_metastrings SET string = '/var/data/elgg_test/'
WHERE id = (
SELECT value_id
FROM elgg_metadata
WHERE name_id = (
SELECT *
FROM (
SELECT id
FROM elgg_metastrings
WHERE string = 'filestore::dir_root'
) as ms2
)
LIMIT 1
);
Avertissement
Ne changez que le premier chemin ci-dessus !
Avertissement
Si vous avez un plugin qui utilise des entrepôts de fichiers (« filestores ») personnalisés (qui contiennent l’appel à une méthode ElggFile::setFilestore
ou qui définissent des métadonnées avec des noms tels que filestore::*
), alors la requête ci-dessus pourrait ne pas être sûre (elle réécrit tous les emplacements dir_root
du système de fichiers). Veuillez demander des conseils via la communauté Elgg.
Vérifier 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 config 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}datalists
SET value = '/var/www/test_elgg/'
WHERE name = 'path'";
mysql_query($sql);
print mysql_error();
$sql = "UPDATE {$CONFIG->dbprefix}datalists
SET value = '/var/data/test_elgg/'
WHERE name = 'dataroot'";
mysql_query($sql);
print mysql_error();
$sql = "UPDATE {$CONFIG->dbprefix}sites_entity
SET url = 'http://test.myelgg.org/'";
mysql_query($sql);
$sql = "UPDATE {$CONFIG->dbprefix}metastrings
SET string = '/var/data/elgg_test/'
WHERE id = (
SELECT value_id
FROM {$CONFIG->dbprefix}metadata
WHERE name_id = (
SELECT *
FROM (
SELECT id
FROM {$CONFIG->dbprefix}metastrings
WHERE string = 'filestore::dir_root'
) as ms2
)
LIMIT 1
)";
mysql_query($sql);
print mysql_error();