Миграция с Joomla 1.5 на Joomla 2.5

Предисловие
1. Перенос информационного наполнения
2. Перенос расширений:
  2.1. jDownloads и jComments
  2.2. Шаблон, редактор и другие расширения
Эпилог


Upd: English version of the article: Migrating from Joomla 1.5 to Joomla 2.5. Part 1. Transferring content.


Внимание! Прежде чем читать эту статью и выполнять инструкции в ней изложенные, обязательно прочтите Предисловие!


Я воспользовался известным компонентом jUpgrade. На тот момент его последней версией была 2.5.2. Ею я и продолжаю пользоваться, хотя на момент написания статьи они уже выпустили 3.0 PRO, кардинально отличающуюся от 2.5.2. Я попробовал ее, но запустить с двух попыток так и не смог, и отбросил. Функциональность предыдущей меня продолжает устраивать, по крайней мере те опции, которые я использовал. Почему я отказался от переноса сторонних расширений этой же утилитой, я попытался обосновать в предисловии. А та пара багов, с которой пришлось столкнуться, не смущает, если знаешь легкие способы их обойти. О чем речь - будет ясно из дальнейшего описания.

Скачать jUpgrade можно на сайте производителя - http://redcomponent.com. И обычная, и PRO - бесплатны, денег стоит только подписка на поддержку.

Если кто-то хочет попробовать разобраться с PRO версией jUpgrade, о результатах просьба сообщить.

Итак, что нужно иметь перед началом процесса:

  • Архив с компонентом jUpgrade - com_jupgrade-2.5.2.zip.
  • Архив с последним релизом Joomla 2.5. Скачать можно с офсайта и кучи других мест. На момент написания статьи это Joomla_2.5.9-Stable-Full_Package.zip.

Предположим, что директория исходного сайта на 1.5 - site1_5, данные расположены в базе с именем db1_5, префикс таблиц - jos_. Новый сайт расположим в папке site2_5, его базу данных назовем db2_5, префикс для примера будет - aaaaa_. Поехали!

  1. Создаем поддиректорию site2_5 в фолдере site1_5 исходного сайта.
  2. Распаковываем архив Joomla_2.5.X-Stable-Full_Package.zip в папку site2_5.
  3. Устанавливаем Joomla 2.5 с базой db2_5 и префиксом aaaaa_. Игнорируем требование удалить директорию 'installation'!
  4. Логинимся в админку сайта site1_5.
  5. Устанавливаем компонент jUpgrade стандартным образом через Расширения -> Менеджер расширений -> Установка.
  6. Идем в Расширения -> Менеджер плагинов. Находим плагин System - Mootools Upgrade. Если он выключен - включаем его, поскольку он требуется для работы jUpgrade.
  7. Идем в меню Компоненты и выбираем jUpgrade. Кликаем на кнопку Параметры в правом верхнем углу. Настраиваем как на скриншоте:

jUpgrade-01

Заполняем поля 'Target Directory', Prefix for old database и Prefix for new database в соответствии с нашими параметрами. Disable Error Reporting - оставляем 'Нет', чтобы получать информативные сообщения при неудачных попытках, а они, как станет ясно далее, будут иметь место. Выбираем пропустить загрузку и распаковку, поскольку мы уже сами подготовили фолдер нового сайта и установили в нем Джумлу 2.5. Шаблоны и сторонние расширения не переносим по соображениям, высказанным выше. Переносим только данные, для чего отвечаем 'Нет' на предложения пропустить миграцию для всех пунктов раздела Core skips. Delete previous migration - категорическое 'Нет', иначе jUpgrade затрет наш фолдер site2_5.

  1. Жмем Сохранить.

Прежде чем кликать Начать обновление, научимся бороться с двумя багами данной версии jUpgrade.

Такой странный момент: при первом запуске jUpgrade почему-то игнорирует выставленное в настройках пожелание пропустить загрузку и распаковку и начинает старательно их выполнять. На скриншоте видно, что пошел прогресс скачивания:

jUpgrade-02

Ради интереса один раз довел процесс до конца. Выяснилось, что jUpgrade нашла и скачала далеко не последнюю версию, что-то вроде 2.5.3, и заменила ею уже установленную мной 2.5.9. При этом, подчеркиваю, самодеятельность она проявляет только при первом запуске после установки. Поэтому жмем кнопку Назад и повторно кликаем Начать обновление. Вот теперь загрузка и распаковка действительно пропускаются:

jUpgrade-03

Зато выявляется новая напасть. Этап Процесс обновления выдает результат 'Migrating undefined'. Благодаря включенной опции получать сообщения об ошибках, наблюдаем появление все новых Warnings и Fatal Errors. И так до посинения.

Решение проблемы нашлось на форуме офсайта вот в этом обсуждении, и нашел его пользователь с ником Gerald. Сводится оно к замене строки 43 с

$jconfig->db_type = 'mysqli';

на

$jconfig->db_type = 'mysql';

в файле administrator/components/com_jupgrade/includes/install_config.php. Это еще один явный баг jUpgrade, они не проверяют настройку SQL Driver, выбор MySql в соответствующем дропбоксе в Параметрах не помогает, приходится изменять его принудительно. Gerald, спасибо!

Поэтому после настройки параметров выполняем два следующих шага:

  1. Редактируем файл install_config.php как описано выше.
  2. Запускаем Начать обновление и сразу нажимаем кнопку Назад.

Вот теперь норовистая jUpgrade укрощена, и можно ожидать от нее корректного выполнения задачи.

  1. Повторно запускаем Начать обновление. На этот раз процесс должен пройти гладко и завершиться выдачей сообщения 'Joomla 2.5 Upgrade Finished!':

jUpgrade-04

Таким образом мы перенесли из старой базы в новую информацию о пользователях и контактах, структуры меню, категорий и материалов, а также баннеры, веб-линки и RSS-ленты. В дополнение, jUpgrade скопировала фолдер images, переименовав оригинальный в images.orig. Папку media при этом не обновила несмотря на сообщение 'Coping images/media files'. Видимо, имелось в виду, что media-файлы также хранятся в фолдере images. Поэтому, если у вас имеются нужные файлы в других папках - самое время их скопировать на новый сайт.

Теперь можно зайти на новый сайт и в его админку и найти там данные со старого. Убедившись, что все в наличии, можно удалить фолдер installation, а папку самого сайта перенести в нужное место.

Итак, новый сайт получил привычный контент. Можно переходить к установке расширений и переносу их настроек и данных. Об этом - в продолжении.

Комментарии  

Quazimorda
0 # Quazimorda 04.06.2015 11:10
Изыскания завершились так: В ошибках на локальном веб-сервере удалось увидеть FatalError: MaxExicutionTime Limit 30. Установил этот лимит с 30 секунд на 3000 и миграция не без проблем, но прошла. В итоге в админку пускают, данные на сайте есть, вот только шаблон с joomla 1.5.x на 2.5.19 не перешёл. Как быть с этим? Неужели нужно шаблон отрисовывать "вручную"?
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 04.06.2015 11:39
Поздравляю! Ну да, теперь вам предстоит адаптировать расширения или подбирать новые. Про шаблон я там писал дальше в статьях. Добавить, по сути, нечего. Лично я под миграцию просто сконструировал новый шаблон в Artisteer, а потом ручками подрихтовал. А сейчас еще он ДОЛЖЕН быть адаптивным и легким, иначе Гугл понижает в выдаче.
Ответить | Ответить с цитатой | Цитировать
Quazimorda
0 # Quazimorda 04.06.2015 11:51
Я сархивировал тот, что был, установил через менеджер расширений, но если устанавливаю этот шаблон как умолчание для сайта, то - белая страничка. Это уже на хостинге. На локальном сервере шаблон вовсе не установился.
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 04.06.2015 12:32
Да он и на хостинге, по-видимому, установился только потому, что там игнорируются ошибки. Но установился криво, соответственно. Вам придется озаботиться созданием или приобретением нового шаблона. Нового - в смысле совместимого, выглядеть может как старый.
Ответить | Ответить с цитатой | Цитировать
Илья
0 # Илья 09.07.2015 04:08
Всем доброго дня. Делал по инструкции, доходит до обновления и выдает ошибку "Migrating undefined". Но фишка в том, что Jupgrade у меня, похоже, изначально не создает папку site2_5. Делал на виртуальной машине на локальном хосте. Ставил Jupgrade 2.5.2 и Joomla! 1.5.26. Сам Jupgrade на Джумлу поставился без ошибок в и в базу залил 4 таблицы. А когда начинаю обновлять Джумлу, получаю вот такие ошибки:


==========
[checks]

1

==========
[cleanup]

1

==========
[install_config]


Warning: require_once(C:\xampplite\htdocs\intranew\site2_5\ libraries/joomla/methods.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampplite\htdocs\intranew\administrator\compone nts\com_jupgrade\includes\install_config.php on line 27

Fatal error: require_once() [function.require]: Failed opening required 'C:\xampplite\htdocs\intranew\site2_5\libraries/jo omla/methods.php' (include_path='.;C:\xampplite\php\PEAR') in C:\xampplite\htdocs\intranew\administrator\compone nts\com_jupgrade\includes\install_config.php on line 27


==========
[install_db]


Warning: require_once(C:\xampplite\htdocs\intranew\site2_5\ libraries/joomla/methods.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampplite\htdocs\intranew\administrator\compone nts\com_jupgrade\includes\install_db.php on line 33

Fatal error: require_once() [function.require]: Failed opening required 'C:\xampplite\htdocs\intranew\site2_5\libraries/jo omla/methods.php' (include_path='.;C:\xampplite\php\PEAR') in C:\xampplite\htdocs\intranew\administrator\compone nts\com_jupgrade\includes\install_db.php on line 33


==========
[undefined] [undefined]


Warning: require_once(C:\xampplite\htdocs\intranew\site2_5\ libraries/joomla/factory.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampplite\htdocs\intranew\administrator\compone nts\com_jupgrade\includes\jupgrade.class.php on line 89

Fatal error: require_once() [function.require]: Failed opening required 'C:\xampplite\htdocs\intranew\site2_5\libraries/jo omla/factory.php' (include_path='.;C:\xampplite\php\PEAR') in C:\xampplite\htdocs\intranew\administrator\compone nts\com_jupgrade\includes\jupgrade.class.php on line 89
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий