Дублирование установки
Содержание
Введение
Зачем дублировать установку Elgg?
Существует множество причин, по которым вы можете захотеть дублировать установку Elgg: перенос сайта на другой сервер, создание тестового или сервера разработки, создание функциональных резервных копий — это наиболее распространённые. Для успешного дублирования сайта Elgg необходимо скопировать 3 вещи:
База данных
Данные из каталога данных
Код
Также необходимо изменить как минимум 5 элементов информации из скопированной установки:
файл
elgg-config/settings.php, который также может находиться в расположении до версии 2.0engine/settings.phpфайл
.htaccess(Apache) или конфигурация Nginx в зависимости от используемого серверазапись в базе данных для сущности вашего сайта
запись в базе данных для пути установки
запись в базе данных для пути к данным
Что не рассматривается в этом руководстве
Это руководство предполагает базовые знания команд Apache, MySQL и Linux. В связи с этим некоторые вещи не будут рассматриваться в этом руководстве. К ним относятся:
Как создавать резервные копии и восстанавливать базы данных MySQL
Как настроить Apache для работы с Elgg
Как передавать файлы на производственный сервер и с него
Прежде чем начать
Прежде чем начать, убедитесь, что установка Elgg, которую вы хотите дублировать, полностью функциональна. Вам также потребуются следующие элементы:
Резервная копия рабочей базы данных Elgg
Место для копирования рабочей базы данных
- Сервер, подходящий для установки дубликата сайта Elgg
(Это может быть тот же сервер, что и ваша производственная установка Elgg.)
Резервные копии базы данных можно получить различными способами, включая phpMyAdmin, официальный графический интерфейс MySQL и командную строку. Обратитесь к вашему хостинг-провайдеру за информацией о том, как создавать резервные копии и восстанавливать базы данных, или используйте Google для поиска информации по этому вопросу.
В ходе этого руководства мы будем исходить из следующих предположений о производственном сайте Elgg:
URL —
http://www.myelgg.org/Путь установки —
/var/www/elgg/Каталог данных —
/var/data/elgg/Хост базы данных —
localhostИмя базы данных —
production_elggПользователь базы данных —
db_userПароль базы данных —
db_passwordПрефикс базы данных —
elgg
В конце руководства детали нашей тестовой установки Elgg будут следующими:
URL —
http://test.myelgg.org/Путь установки —
/var/www/elgg_test/Каталог данных —
/var/data/elgg_test/Хост базы данных —
localhostИмя базы данных —
test_elggПользователь базы данных —
db_userПароль базы данных —
db_passwordПрефикс базы данных —
elgg
Копирование кода Elgg на тестовый сервер
Самый первый шаг — дублировать производственный код Elgg. В нашем примере это так же просто, как скопировать /var/www/elgg/ в /var/www/elgg_test/.
cp -a /var/www/elgg/ /var/www/elgg_test/
Копирование данных на тестовый сервер
В этом примере это так же просто, как скопировать /var/data/elgg/ в /var/data/elgg_test/.
cp -a /var/data/elgg/ /var/data/elgg_test/
Если у вас нет доступа к оболочке сервера и приходится передавать данные по FTP, возможно, потребуется изменить владельца и права доступа к файлам.
Примечание
Также необходимо удалить кэш-каталоги с вашего диска. Они соответствуют каталогам cacheroot и assetroot в вашей конфигурации.
Редактирование settings.php
Файл elgg-config/settings.php содержит сведения о конфигурации базы данных. Их необходимо скорректировать для вашей новой тестовой установки Elgg. В нашем примере мы посмотрим в /var/www/elgg_test/elgg-config/settings.php и найдём строки, которые выглядят так:
// 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';
Нам нужно изменить эти строки, чтобы они соответствовали нашей новой установке:
// 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/'
Примечание
Обратите внимание, что $CONFIG->dbname изменено, чтобы отразить нашу новую базу данных.
Копирование базы данных Elgg
Теперь базу данных необходимо скопировать из elgg_production в elgg_test. Обратитесь к документации вашего любимого менеджера MySQL, чтобы узнать, как создать дубликат базы данных. Обычно вы экспортируете текущие таблицы базы данных в файл, создаёте новую базу данных, а затем импортируете ранее экспортированные таблицы.
У вас есть два варианта обновления значений в базе данных. Вы можете изменить значения в файле экспорта или импортировать файл и изменить значения с помощью запросов к базе данных. Одно из преимуществ изменения файла дампа заключается в том, что вы также можете изменить ссылки, которые люди создали на контент вашего сайта. Например, если люди добавили страницы в закладки с помощью плагина закладок, закладки будут указывать на старый сайт, если вы не обновите их URL.
Записи в базе данных
Теперь нам нужно изменить 4 записи в базе данных. Это легко сделать с помощью 4 простых команд SQL:
Изменение пути установки
UPDATE `elgg_config` SET `value` = REPLACE(`value`, "/var/www/elgg_production/", "/var/www/elgg_test/") WHERE `name` = "path";
Изменение каталога данных
UPDATE `elgg_config` SET `value` = REPLACE(`value`, "/var/data/elgg_production/", "/var/data/elgg_test/") WHERE `name` = "dataroot";
Проверка .htaccess
Если вы внесли изменения в .htaccess, которые изменяют какие-либо пути, убедитесь, что вы обновили их в тестовой установке.
Обновление конфигурации веб-сервера
В этом примере вы должны отредактировать конфигурацию Apache, чтобы включить поддомен с корнем документа /var/www/elgg_test/. Если вы планируете установку в подкаталог корня документа, этот шаг не требуется.
Если вы используете Nginx, вам необходимо обновить конфигурацию сервера, чтобы она соответствовала новым путям на основе install/config/nginx.dist.
Запуск upgrade.php
Для регенерации кэшированных данных обязательно запустите http://test.myelgg.org/upgrade.php
Советы
Хорошая идея — держать под рукой тестовый сервер для экспериментов с установкой новых модов и выполнением работ по разработке. Если вы автоматизируете восстановление в базу данных elgg_test, изменение значений $CONFIG и добавление следующих строк в конец файла elgg_test/elgg-config/settings.php позволит беспрепятственно перезаписывать записи базы данных 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();