Skip to main content

Обновление форума IPB 2.1.5 (cp1251) до IPS 4.x (utf8)

Возникла необходимость апгрейда форума, выполненного на cms IPB v.2.1.5. (с кодировкой базы данных cp1251, php 5.2). Форум «древний», открыт в 2008-м году. В год 2023-й он имел адрес forums.arcanumclub.org. Поскольку мотивация создания этого проекта давно не актуальна, то форум был «заброшен», жил себе тихо и спокойно, доживая свои последние дни, ветшая и умирая. Шли годыipbИ много их прошло.

«В наши дни» — обновился сервер, на котором располагался форум, поддержка php 5.2 на современном серверном ПО прекратилась, но «выбросить» этот «реликт мезазоя» — рука не поднимается (на форуме — десятки тысяч страниц, тысячи пользователей. Жалко! и «жаба душит».). Выход: апгрейд. Будем пробовать?.. Пробовать реализацию задачи: обновдение форума IPB v.2.1.5. до любой актуальной версии IPS v.4.x.

Апгрейд производим на сервере, который еще поддерживает старые версии php (конкретно, php 5.2) и старые же драйвера БД. В нашем конкретном случае имеем дело с доменом 3-го уровня по условному адресу: forums.site.ru

Для начала делаем резервную копию проекта, оставляя себе влозможность «отступления».

Процесс обновления разделен на следующие составляющие/этапы:

  • 2.1.5 > 2.3.6
  • 2.3.6 > 3.0.5
  • 3.0.5 > 3.4.6 > 3.4.9
  • 3.4.9 > 4.1.19
  • 4.1.19 > 4.4.3 > 4.7.12

В процессе обновления кодировка базы данных будет приведена к необходимой, с cp1251 на utf-8.

«Переезд» ipb приходится делать поэтапно, что есть вынужденная мера, технологически «переезд» с древних версий на более-менее новые «в один прием» технически не реализуем (особенность cms). Выбор конкретных версий ipb/ips продиктован наличием в Сети дистрибутивов в свободном доступе. Версии могут быть разные, будем использовать те, что удалось отыскать в собственных архивах и/или скачать в интернет.

1 этап: обновление до IP.Board 2.3.6

Стоит сразу отметить, что оригинальный шаблон форума (если он есть) работать на обновленнных версиях ipb не будет. Имеет смысл перед началом работ в админпанели установить дефолтный шаблон.

По счастью, архив IP.Board 2.3.6 есть в наличии с незапамятных времен, проверенно рабочий.

Файлы из архива «заливаем» на сервер (по ftp или через соответствующий сервис сервера) с заменой существующих на исходном форуме. В адресной строке браузера переходим: forums.site.ru/admin.php

Обновление прошло «безболезненно» и просто. Проверяем работоспособность форума после обновления, выполнив вход в админпанель. Стоит выполнить некоторые базовые манипуляции, дабы в этом убедиться. Проверяем логи ошибок, исправлякм ошибки БД (если они есть). Делаем бэкап этой версии проекта.

2 этап: обновление IP.Board 3.0.5

Сложный и «опасный» этап.

Удалямм ненужные директории и файлы версии ipb 2.3.6:

admin
converge_local
install
interface
ips_kernel
jscripts
lofiversion
modules
resources
retail
skin_acp
sources
admin.php
favicon.ico
index.php
init.php

Загружаем файлы дистрибутива IP.Board 3.0.5 на сервер.

Редактируем конфигурационный файл conf_global.php, расположенный в корне форума, а именно:

Удаляем строчку, т. к. она устарела:

$INFO['mysql_codepage']='cp1251';

Вместо неё вставляем:

$INFO['sql_charset']='utf8';

Теперь необходимо сконвертировать кодировку таблиц базы данных и изменить сравнение таблиц. Для этого создаём файл info.php со следующим содержанием:

include("conf_global.php");
$codepage='utf8';
$collation='utf8_unicode_ci';
$dbhost = $INFO['sql_host'];
$dbuser = $INFO['sql_user'];
$dbpass = $INFO['sql_pass'];
$dbname = $INFO['sql_database'];
$dbprefix = $INFO['sql_tbl_prefix'];
if( !ini_get('safe_mode') ){
@set_time_limit(0);
}
@header("Content-Type: text/plain; charset=UTF-8");
$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die( mysql_error() );
$db = mysql_select_db($dbname) or die( mysql_error() );
$sql = "ALTER DATABASE `".$dbname."` DEFAULT CHARACTER SET $codepage COLLATE $collation";
print "$sql;\n";
$sql ="SELECT table_name FROM information_schema.tables WHERE table_schema = '".$dbname."' AND table_collation NOT LIKE '".$collation."' AND table_name LIKE "."'".$dbprefix."%';";
$result = mysql_query($sql) or die( mysql_error() );
while ( $row = mysql_fetch_row($result) )
{
$table = mysql_real_escape_string($row[0]);
$sql = "ALTER TABLE $table DEFAULT CHARACTER SET $codepage COLLATE $collation, CONVERT TO CHARACTER SET $codepage COLLATE $collation";
print "$sql;\n";
}
mysql_close($dbconn);
flush();
?>

Или скачайте info.php (архив *.zip), разархивируйте и «киньте» в корень сайта.

Загружаем скрипт в корень форума и обратимся к нему из браузера: forums.site.ru/info.php. На открывшейся странице видим запросы, которые необходимо сделать во вкладке SQL в phpMyAdmin (на сервере).

Если форум крупный, имеет большое количество данных, запросы для «массивных» таблиц имеет смысл делать по отдельности, например: для таблицы сообщений posts - стоит сделать отдельный запрос, а все остальные запросы — вместе. Обработка запроса займет некоторое время.

После выполнения запросов имеет смысл проверить данные в таблицах, данные должны быть в «правильной» кодировке.

Переходим на страницу обновления:
forums.site.ru/admin/upgrade и приступаем к обновлению скрипта форума.

В окне обновления по указанному выше адресу стоит выбрать режим ручного обновления и каждый нужный запрос sql проводить вручную.

Дело в том, что некоторые переменные php притерпели изменения и их придется править «руками». Каждый новый/очередной дамп запрос sql «появится» в папке сайта по адресу:
forums.site.ru/cache (имеют вид, типо: sql_source_30001.sql). Скачиваем их (по мере генерации дампов в процессе исполнения этапов обновления) себе на компьютер для правки (при необходимости) и выполнения запросов sql в phpMyAdmin.

Если при sql запросе в phpMyAdmin выдаются ошибки, то придется править дампы «руками» (в любом текстовом редакторе типа Nodpad++) и выполнять повторный запрос. В нашем конкретном случае пришлось менять:

DROP TABLE admin_login; заменить на DROP TABLE IF EXISTS admin_login;
TYPE=MyISAM заменить на ENGINE=MyISAM

Впрочем, в каждом конкретном случае могут быть разные варианты ошибок (или их может вовсе не быть).

Процесс обновления прошел с означенными выше ошибками, которые были исправлены «в ручном режиме».

Проверяем работоспособность обновленного форума и делаем бэкап версии IP.Board 3.0.5. Если «что-то пошло не так» и обновить не удалось, то... пробуем снова. Или прекрашаем процесс, если проблема фатальна. Хотя, если всё сделано аккуратно, версия обязана заработать.

Еще: архив данной версии не русифицирован, придется самостоятельно переводить инструкции при апгрейде. Это не критично? Конечно нет.

3 этап: обновление до IP.Board 3.4.6

Если предыдуший этап прошёл успешно и версия работоспособна, идём далее. Загружаем файлы дистрибутива IP.Board 3.4.6 в корень форума с заменой существующих. Обновляем скрипт:
forums.site.ru/admin/upgrade.

Как и с предыдущей версией, обновление производим «в ручном режиме». Скачиваем из директории forums.site.ru/cache дампы sql и, шаг за шагом, делаем запросы в phpMyAdmin. На этом этапе обновлений много и запросов будет — много, около 30-и. Нудно, но необходимо. Ошибки (если случатся) правим так же (как и на предыдушем этапе), внося правки с дампы и повторяя sql запросы, в очередности обновления.

Для данной версии имеет смысл провести русификацию, базовый пакет русификации. В админпанели форума найдите Manage Languages и установите по очереди все языковые пакеты.

Проверяем работоспособность обновленного форума и делаем бэкап версии IP.Board 3.4.6.

4 этап: обновление до IP.Board 3.4.9

Это (вроде как) крайняя версия линейки 3.x, посему стоит установить перед переходом к новой линейке.

Загружаем файлы дистрибутива IP.Board 3.4.9 в корень форума с заменой существующих. Обновляем скрипт:
forums.site.ru/admin/upgrade всё так же, по одному, по очередности обновления.

Проверяем работоспособность обновленного форума и делаем бэкап версии IP.Board 3.4.9.

5 этап: обновление до IPS Community Suite v.4.1.19

Перед этим обновлением изменяем версию php на сервере на 5.6. Загружаем файлы дистрибутива IPS Community Suite v.4.1.19 и обновляем скрипт:
forums.site.ru/admin/upgrade

Обновление проистекает в автоматическом режиме. В нашем конкретном случае прошло «без осложнений» и ошибок. Можно установить базовый пакет русификации.

На этом этапе скрипт обновления запросит выбрать, каким образом отображать аватары пользователей, из аватарок пользователей или из их фото. Придется выбирать, возможность задать отдельно аватару и фото — упраздняется. Я задал — Avatar. (Не точно, что на этом этапе, может на предыдущем? Пишется по памяти и для себяipbзабываются нюансы.)

Проверяем работоспособность обновленного форума и делаем бэкап версии IPS Community Suite v.4.1.19.

В принципе, можно закончить апгрейд и на этом этапе (версия php старенькая, но пока актуальная). Зависит от планов на дальнейшую судьбу Форумаipb

6 этап: обновление до IP.Board 4.4.3

Обновление до версий старше 4.1.19 стандартное однотипное. Скачиваем дистрюбитив (например, IPS Community Suite v.4.2.8), загружаем на сервер с заменой файлов, обновляем:
forums.site.ru/admin/upgrade, следуя инструкциям инсталлятора.

Имеет значение «качество» дистрибутивов, которые удастся «достать» и скачать, стоит использовать проверенные источники (еще лучше: лицензионные версии). Вполне возможно, что процесс обновления может «зайти в тупик» и придется ограничиться «достигнутым результатом». Старые проекты не всегда удается «реанимировать». Установленные давным-давно форумы в неведомой комплектации, напичканные (иногда) сторонним (а то и вредоносным) скриптом — «поднять» реально, но вовсе не со 100%-ым результатом.

Ладно, проверяем (по возможности тщательно и всесторонне) работоспособность обновленного форума и делаем бэкап этой версии.

В зависимости от того, какие версии удалось достать из «надежных источников», производим еще несколько обновлений (хотя некоторые «шаги» можно и пропустить (в теории). Вопрос пригодности/актуальности дистибутивов, увы, придется решать «по месту» и «методом тыка». Посему, не стоит лениться делать бэкапы (максимально часто). Если «не проходит» какой-то вариант скачанной (где-то) версии ips — «откатываемся» и пробуем иной. Увы. Или: лицензия вас ждёт почти за $500. «Весело»? — Нет! «Весело и вкусно!»ipb(сарказм поймёт только проживающий на территории РФ).

6 этап: обновление до IP.Board 4.7.12

Этап «риторический». Методом «проб и ошибок» пытаемся изыскать (и скачать) в Сети для своего конкретного обветшало-замшелого проекта нужные/пригодные варианты обновлений и установить оные. Я перепробовал:

И еще большеipbпока результат не стал удовлетворительный. С множеством «откатов» и переустановок. Шаманство и «танцы с бубном»ipbНо проект, в итоге, кое-как был «запихан» и протестирован благополучно.

По ходу обновлений меняем в установках сервера версии php. Крайняя версия IPS работает на php 8, промежуточные — на php 7.

7 этап: перенос форума на иной URL

В чем «засада»: варианты обновлений тестировались на временном/тестовом домене, отличном от нужного, «родного» url.

Адрес URL сайта и детали, которые Invision Community использует для подключения к базе данных (БД), указаны при первой установке программного обеспечения в файле conf_global.php в корневой директории форума. Но: если изменились — адрес сайта или данные для подключения к базе данных, то необходимо заменить их на нужные. В данном конкретном случае менялись:

  • Адрес сайта (url);
  • Путь на сервере до директории форума и имя директории форума;
  • Имя пользователя БД и имя БД (пароль БД и префиксы таблиц не менялись).

Для смены URL адреса форума на IPS4 необходимо проделать несколько манипуляций:

  • Сменить адрес форума, имя БД, имя пользователя БД, префикс таблиц в conf_global.php (при необходимости, если они иные).
  • Скачать бэкап БД, открыть его в Notepad++, массово изменить адрес старого форума на новый адрес, заменить путь на сервере, имя пользователя БД, имя БД.

Чистим кэш в админпанели форума. Если шаблон отображается адекватно, то начинаем тестировать скрипт ips. С ошибками будет: как повезёт.

Лучше, всё же, делать апгрейд на «нужном» url и на нужном сервере — сразу, но не всегда это возможно (как в данном конкретном случае).

Удачи! Она точно понадобитсяipb

Вопросы (нсли случатся) стоит задать в Комментариях.

PS: был в ЛС вопрос про смайлики-колобки для форума: наш раздел смайликов переехал на иной проект (по ссылке). Выбирайте, качайте. Бесплатно.

Комментарии  
  0
Отличные смайлики!
  +1
Смалики супер!
Добавить комментарий

Для комментирования материалов регистрация на сайте не нужна. Правила публикации: наличие здравого смысла. Комментарии проходят премодерацию и публикуются только после проверки администратором.



Планируете проект?

Заполните форму, наш специалист свяжется с вами для консультации (бесплатно), составит для вас персональное предложение. Или звоните:
+7(916) 107-51-99 (10.00–18.00, Мск.)

Как к вам обращаться?
Сообщите корректный адрес электронной почты.
Опишите кратко суть задачи: *
Необходимо подтвердить согласие с Политикой.

Планируете создание веб проекта?

Заполните форму и наш специалист свяжется с вами для консультации и составит для вас персональное предложение. Или звоните:
+7(916) 107-51-99 (10.00–18.00, Мск.)

Ваше имя, как к вам обращаться?
Сообщите корректный адрес электронной почты.
Пожалуйста, напишите ваше сообщение, коротко обозначив задачу *
Необходимо подтвердить согласие с Политикой.