Перенос сайта modx на новый хостинг

Автор: | 05.06.2014

Так случилось, что пришлось несколько статичных сайтов переводить на движок MODX Revo. Делал всё это дело на своём локальном вебсервере, наступил момент переноса на хостинг nic.ru (Тариф 201).
Почитав официальные инструкции, рекомендации из поиска в интернете вывел нехитрый todo лист, по которому и собрался двигаться. Сразу хочу особо оговориться, что все траблы, которые возникли были связаны с хостингом и моей неопытностью. Но, тем не менее, по инструкции сразу не заработало вообще в принципе )))
Итак, перечень действий, которые нужно совершить:

Удалите кеш и сбросьте сессии

Прежде чем начать что-то делать, необходимо очистить все данные, которые могут кешироваться.

  • Авторизуйтесь в админке и нажмите «Сайт» → «Обновить сайт»
  • там же: «Безопасность» → «Завершить все сеансы»
  • Удалить файлы из каталога core/cache

Запакуйте ваши файлы

Делаем архив файлов сайта и базы данных. В интернете рекомендуют, что для небольших сайтов достаточно просто по ftp забрать файлы с одного хостинга и перенести так же по ftp на новый. В этом крылась моя первая засада. Скопировал я быстро, но окончания заливки на nic.ru так и не дождался ни по ftp, ни через файловый менеджер панели управления с хостинга nic.ru На моём тарифном плане нет SSH, поэтому я и не надеялся архив развернуть на хостинге, к тому же в файловом менеджере не нашёл функции разархивирования. Тем не менее, такая функция конечно же была, почитав мануалы хостинга, в этом убедился.
Все операции архивирования проделал в очень удобной программе WinSCP. Заходим в папку с сайтом, выделяем всё, что там есть, и делаем архив, который оказывается тут же в папке. Операцию архивирования делать нужно с рутовым доступом. Переживал, что права доступа на папки изменятся, но всё прошло гладко.

WinSCP_make_tar
Для истинных любителей всё делать в консоли tar -czf вам в помощь …

Копирование базы данных

При помощи phpMyAdmin делаем дамп базы данных, если размер базы велик, вам придётся попотеть при помощи других утилит или из командной строки делать дамп.

Развёртывание на новом хостинге

При помощи файлового менеджера хостинга заливаем в корень сделанный ранее архив файлов, затем просто щёлкаем на нём и происходит распаковка.

file uzip

sql дамп базы данных можно залить через phpMyAdmin хостинга. Важно перед этим сделать следующее:

    • Предварительно создать новую БД
    • Переписать всё, что отмечено на скриншоте, – название сервера БД, название вновь созданной БД, и имя пользователя (у меня он один для всех сайтов, ибо только два возможно создать при моём тарифе)

Обновление файла конфигурации

Самое муторное действо, которое нужно проделывать крайне внимательно!
Нужно внести изменения в конфигурационные файла в связи с тем, что поменялись к ним пути на новом хостинге в файлах:

/config.core.php
/connectors/config.core.php
/manager/config.core.php

Было

define('MODX_CORE_PATH', '/home/www/37/37.ru/docs/core/');
define('MODX_CONFIG_KEY', 'config');

Стало

define('MODX_CORE_PATH', '/home/37/37.ru/docs/core/');
define('MODX_CONFIG_KEY', 'config');

Путь на хостинге nic.ru начинается с /home, на других хостингах может быть иначе.
Правим последний файл core/config/config.inc.php

/**
* MODX Configuration file
*/
$database_type = ‘mysql’;
$database_server = ‘37.mysql‘;
$database_user = ‘37_mysql‘;
$database_password = ‘пароль к БД‘;
$database_connection_charset = ‘utf8’;
$dbase = ‘37_modx‘;
$table_prefix = ‘modx_’;
$database_dsn = ‘mysql:host=37.mysql;dbname=37_modx;charset=utf8′;

/* PATHS */
$modx_core_path= ‘/home/37/37.ru/docs/core/‘;
$modx_processors_path= ‘/home/37/37.ru/docs/core/model/modx/processors/‘;
$modx_connectors_path= ‘/home/37/37.ru/docs/connectors/‘;
$modx_manager_path= ‘/home/37/37.ru/docs/manager/‘;
$modx_base_path= ‘/home/37/37.ru/docs/‘;
$modx_assets_path= ‘/home/37/37.ru/docs/assets/‘;

/* HOST (used for command-line PHP stuff) */
$http_host=’37.ru‘;

Ищим нужные строки и подставляем свои данные, где отмечено красным, учитывая то, что у меня в примере сайт – 37.ru и данные, которые нужно было запомнить, см. выше …

Танцы с бубном

Теперь мы имеем полное право войти в админку, но не тут то было … Посыпались ошибки:

Warning: PDO::__construct() [pdo.--construct]: [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock)

… далее …

Fatal error: Call to undefined function hash() in

Для устранения их нужно включить модули PHP, на скриншоте ниже я показал стрелочкой какие нужно включить.

dop modul PHP ON

После этого вы должны войти в админку и возможно увидите последнюю ошибку:

Could not find action file at: /path//home/37/37.ru/docs/manager/controllers/default/welcome.php

Для её устранения нужно удалить все файлы из каталога core/cache
Я хоть и удалял перед архивацией в ней всё, но там почему то опять оказались файлы кеша.
На этом всё, удачи!