Миграция с 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, а папку самого сайта перенести в нужное место.

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

Комментарии  

Саша
0 # Саша 19.07.2013 06:38
Дошел п.7

"Идем в меню Компоненты и выбираем jUpgrade. Кликаем на кнопку Параметры в правом верхнем углу."

У меня выводится ошибка:
Not a valid component.

Устанавливаю на локальном OpenServer'e
Ответить | Ответить с цитатой | Цитировать
Саша
0 # Саша 19.07.2013 06:39
По возможности подскажите, с чем это может быть связано
Ответить | Ответить с цитатой | Цитировать
Саша
0 # Саша 19.07.2013 07:41
Все заработало уже! Нашел ошибку 8)

В configuration.php стояло
var $live_site = адрес-сайта-в-интернете, а там же ничего не установлено. Вот и выводилась ошибка. Поменял на адрес локального сайта и все заработало.
Ответить | Ответить с цитатой | Цитировать
Саша
0 # Саша 19.07.2013 09:41
Еще две проблемы обнаружилось, может быть вы знаете, как они решаются?

1. При нажатии кнопки "Назад" затираются все таблицы из базы db1_5 с префиксом jos_

2. Все равно выводит "Migrating undefined" несмотря на то, что сделал исправления в install_config.php

Все делаю на Openserver'e
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 19.07.2013 14:44
Нкогда не использовал OpenServer, установил локалку ручками в незапамятные времена на виртуальной машине и тащу ее с тех пор с компа на комп. Только обновлял версии Apache, MySql и PHP. Проделывал в ней все как в инструкции множество раз и всегда успешно. Возможно, в OpenServer есть какие-то тонкости. Качаю его сейчас, попробую в нем. О результате отпишусь. Спасибо, Саша, за наводку.
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 20.07.2013 17:46
Попробовал. Даже не выскочил "Migrating undefined", install_config.php не пришлось редактировать. В настройке SQL Driver выбирал все варианты поочередно - нет бага. При нажатии кнопки "Назад" таблицы с префиксом jos_ прекрасно сохранились. Предыдущая ваша проблема - та, о которой в ваших первых трех камментах и которую вы решили - также не высветилась. Т.е. все проходило еще более гладко, чем я привык. Поэтому не знаю даже, что вам посоветовать. Интуиция подсказывает, что дело может быть в разнице версий и настроек. OpenServer я использовал последний (4.8.7 Full), настойки не менял, вообще ничего не трогал. Базу импортировал во встроенный PHPMyAdmin. Джумлу ставил и ту же, что в статье - 2.5.9, и последнюю - 2.5.11. Тестил на Windows 8 x64 в виртуальной машине, затем и на физическом компе с Windows 7 Home Premium x64. Все тесты прошли одинаково гладко - как описал выше.
Поиграйтесь с настройками. Если найдете решение - напишите. Удачи!
Ответить | Ответить с цитатой | Цитировать
Саша
0 # Саша 22.07.2013 02:26
Доброго дня.
Благодарю за внимание и пространный ответ. Может быть дело в версии с которой происходит миграция?
Я брал Joomla_1.5.26-Stable, а вы?
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 23.07.2013 13:07
Два сайта - 1.5.10 и 1.5.22. Это так, для статистики.
Ответить | Ответить с цитатой | Цитировать
Саша
0 # Саша 22.07.2013 08:20
Доброго дня.
Ситуация такая: Миграция свежеустановленной 1.5.26 с демо-данными прошла на ура. (Использовал имена баз данных и префиксы таблиц как у вас в статье).

В ту же директорию копирую копию сайта - опять та же ошибка, удаляет все таблицы старой БД, и, при нажатии кнопки "назад" не находит таблицы с сессиями.

Переименовал в локальной копии БД префиксы таблиц на ваши - все получилось. Вероятно ошибку вызвал префикс БД для Джумла 1.5 отличный от jos_ (у меня он был изменен для безопасности).
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 23.07.2013 13:16
Переименовал jos_ на zzzzz_ - опять прошло чез сучка. Имена сайтам и базам, а также префиксы таблиц я дал в статье для примера, каждый подставляет свои, реальные. Возможно, вы вводили не свои, а те, которые на скриншоте, и не проходило? А как переименовали на мои - совпало и получилось?
Ответить | Ответить с цитатой | Цитировать
Саша
0 # Саша 24.07.2013 02:07
Когда брал свои - не поулчалось (удалялись таблицы исходного сайта).

Тогда я переименовал свои таблицы и базы согласно именам в статьие, внес соответственные изменения в файл конфигурации Джумла. Запустил компонент миграции - и все нормально получилось.
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 24.07.2013 02:27
Странный эффект. Откуда он вылез у вас - так и неясно. Впрочем, главное - получилось, хоть и не совсем по сценарию.
Ответить | Ответить с цитатой | Цитировать
Алена
0 # Алена 19.12.2013 02:57
Здравствуйте)))) помогите пожалуйста))) Первый раз делаю сайт))) и то на работе заставили)))) просто каждый шаг сто раз делаю и переделываю))))) я создала сайт на Joomla1.5.7. и теперь вообще не знаю как ее обновить... Сначала нужно до 1.5.23. или если через jUpgrade то можно сразу до 2.5.? Бэкап сделала... а дальше вот все!!! Везде столько всего написано, что я совсем запуталась?
Ответить | Ответить с цитатой | Цитировать
Ogri
+1 # Ogri 19.12.2013 04:14
Здравствуйте, Алена. Конечно, Joomla 2.5 современнее, надежнее в плане безопасности и вообще предпочтительнее, чем 1.5. Поддержка 1.5 не очуществляется уже почти 2 года, в то время как 2.5 будет поддерживаться и в 2014-м. С другой стороны, если вы уже сделали сайт с наполнением, шаблоном и расширениями, перевод его на 2.5 не ограничится только jUpgrade - почитайте следующие статьи цикла. Если вам по силам вся эта работа - мигрируйте на 2.5. Если же не хотите связываться с этой всей возней - оставьте сайт на 1.5. Множество сайтов так на ней и работают. Только обновитесь до последнего релиза - это 1.5.26.

Я не очень понимаю, почему вы в наше время начали делать сайт на 1.5, да еще и на древнем билде 1.5.7. Делали бы сразу на 2.5, а то и на третьей Джумле. Если все-таки решитесь переводить на 2.5, думаю, все равно стоит сперва проапгрейдить вашу 1.5.7 до 1.5.26, и лишь затем напускать на нее jUpgrade.

Подытожу. Совет будет такой: прочтите весь цикл и определитесь, сможете ли вы выполнить все действия по миграции контента, шаблона и расширений. Если да - переводите на 2.5 (сразу на последнюю, это сейчас 2.5.17). Если есть трудности с этим - обновитесь по крайней мере до 1.5.26. Удачи!
Ответить | Ответить с цитатой | Цитировать
Quazimorda
0 # Quazimorda 03.06.2015 10:00
Не работает. Так и так виснет на 'Migrating undefined'.

Файлик в нужном месте исправил, но ничего не меняется. Куда рыть?
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 03.06.2015 13:15
Сообщения об ошибках могут помочь догадаться, в каком направлении рыть.
Ответить | Ответить с цитатой | Цитировать
Quazimorda
0 # Quazimorda 03.06.2015 13:28
Спасибо вам за скорый ответ. В том как работает компонент обозначено лишь 'Migrating undefined'. Где искать другие сообщения об ошибках?
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 03.06.2015 13:58
Цитата:
Disable Error Reporting - оставляем 'Нет', чтобы получать информативные сообщения при неудачных попытках
...
Благодаря включенной опции получать сообщения об ошибках, наблюдаем появление все новых Warnings и Fatal Errors.
Вы их разве не получаете?
Ответить | Ответить с цитатой | Цитировать
Quazimorda
0 # Quazimorda 03.06.2015 14:01
Я перетаскиваю сайт заказчиков. На самом сайте вполне могут быть отключены ошибки, а jUpgrade я настроил как было у вас в инструкции. Другое дело, что в окошке самого компонента сообщений об ошибках нет. Есть только 'Migrating undefined'.
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 03.06.2015 14:18
Я надеюсь, вы делаете все на локалке. Попробуйте в админке в общих настройках на вкладке "Сервер" поиграть настройкой "Сообщения об ошибках". Кажется, в 1.5 она уже была. Если нет, можно самому задать через error_reporting(). Или вообще напрямую в php.ini.
Ответить | Ответить с цитатой | Цитировать
Quazimorda
0 # Quazimorda 03.06.2015 14:30
В настройках джумлы указал показывать сообщения об ошибках максимально. Джумла 1.5.22 Stable, и вот так выглядит скриншот работы компонента.


Сообщений об ошибках, увы, нет.
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 03.06.2015 14:38
А дебаг в конфигурации jUpgrade не пробовали включать? Может, что-то прояснит?
Ответить | Ответить с цитатой | Цитировать
Quazimorda
0 # Quazimorda 03.06.2015 14:44
Пробовал. Включал оба пункта. Из чего получил очень важную инфу о том, что Mootools версии 1.2.4. )) Более ничего на экран браузера не выводится.
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 03.06.2015 16:01
Ну тогда затрудняюсь посоветовать что-то конкретное - не хватает информации. Я бы попробовал накатить последний из существующих релизов полуторки - 1.5.26 (сделав бэкап сайта и базы перед этим, разумеется) - и попробовал бы с ним. Проверил бы расширения. Ну и поковырялся бы в коде jUpgrade. Но вначале бы поискал в Сети - может, есть какие-то наводки.

Я проделывал процесс множество раз с разными версиями, и ни разу не глючило. У вас, видимо, что-то поломано - или в самом движке, или в расширениях. А может, с конфигурацией сервера как-то конфликтует. Надо исследовать. Если не найдете решения, а надо очень сильно ;-), могу попробовать помочь. Дайте знать, с подробностями перейдем в личку.
Ответить | Ответить с цитатой | Цитировать
Quazimorda
0 # Quazimorda 03.06.2015 16:05
Благодарю за ответ. Постараюсь поискать сам, вполне вероятно ещё вернусь за советом. )
Ответить | Ответить с цитатой | Цитировать

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