Обновление движка до версии 2.1 (R600)

Started by Exile on 2014-08-31 20:05 — 61 replies, 15576 views

#1
Доброго времени суток.

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

В процессе подготовки к релизу версии 2.1, мы столкнулись с тем, что из-за большого временного разрыва между стабильными версиями, у нас слишком большая фрагментация по ревизиям. У пользователей представлен огромный диапазон используемых ими ревизий трекеров, начиная с R400, заканчивая R599. В связи с этим, написание универсального конвертера, который будет учитывать особенности всех ревизий, является нецелесообразным. Из-за этого обновление базы данных выполняется частично вручную, путем выполнения запросов, которые указаны в этой теме. Это значительно проще, чем кажется.

Перед выполнением каких-либо действий по обновлению, в первую очередь, обязательно сделайте бекап базы данных. Потому что это ваша единственная возможность откатить ваш ресурс в исходное состояние, если у вас что-то пойдет не так. Также запомните номер ревизии движка, которая у вас в настоящий момент установлена, она указана на главной странице администраторского раздела.

Для начала, скачайте из нашего GitHub-репозитория стабильную версию 2.1 (R600) и распакуйте архив с ней. Скачанные файлы из папки upload загрузите на ваш сервер с перезаписью всех имеющихся там аналогичных файлов. После этого, вам потребуется поправить параметры доступа к базе данных и имя сервера в файле config.php - вам необходимо будет заменить их на свои, корректные:
'db1' => array('localhost', 'dbase', 'user', 'pass', $charset, $pconnect)
В данной строке изменяем данные входа в базу данных
 
$domain_name = 'torrentpier.com';
В данной строке указываем ваше доменное имя. Остальные правки в файле вносятся по усмотрению, исходя из необходимости из внесения (ориентируйтесь на описания, указанные у полей).
Также переименуйте папку language/lang_russian в language/russian, чтобы у форума были временные языковые переменные для процесса обновления. После обновления форума эту папку надо будет удалить.

Файлы движка обновлены - для его корректной работы осталось обновить базу данных, чтобы пропали все ошибки, которые у вас появятся после обновления на всех страницах. Дальнейшие действия зависят от того, какая у вас стояла ревизия изначально. Если ревизия R400 - выполняйте все запросы, указанные ниже. Если у вас ревизия, например, 573 - то только запросы, относящиеся к следующей ревизии с правками в базе, то есть выполнение запросов начинайте с ревизии 579.

Если какой-то запрос не выполняется и выдает ошибку, что якобы нет поля в базе и т.п. - просто пропускайте его, переходите к следующему. Проблемные запросы отпишите в этой теме - каждый случай рассмотрим индивидуально. Во время выполнения запросов форум отключать не нужно (если хотите ограничить доступ для пользователей - пользуйтесь файлом .htaccess и аналогичными методами).
Spoiler content hidden.
База обновлена. Переименуйте папку files в old_files и очистите все виды кеша на главной странице администраторского раздела (если зайти в него не удается - очистите содержимое папки cache на сервере). Теперь у вас полноценно работающая стабильная ревизия 2.1 (R600). Осталось лишь удалить мусор, оставшийся от старой ревизии. Для этого удалите следующие файлы и папки:
Spoiler content hidden.
С папкой pictures будьте предельно внимательны - если вы пользовались галереей изображений, которая в версии 2.1 была удалена, не удаляйте эту папку! Также в обязательном порядке не забудьте удалить все конвертеры, которые вы загружали на сервер в процессе обновления.

Если у вас возникают какие-то вопросы по обновлению - задавайте их в этой теме. Поможем всем.
#2
Обновление с 400 до 600 ревизии проделывал сам лично, заняло не больше пяти минут, прошло без ошибок.

Если в чем-то сомневаетесь - задавайте вопросы, поможем, ну или платно обновим за вас.
#3
Здравствуйте, подскажите пожалуйста, где я могу найти функцию realdate()?

Fatal error: Call to undefined function realdate() in /sites/default/www/r496-user_birthday.php on line 22
#4
d1mAs1q, замените строку:
$birthday = realdate($row['user_birthday_old'], 'Y-m-d');
на вот эту:
$birthday = bb_date($row['user_birthday_old'] * 86400 + 1, 'Y-m-d', 0);
Готовый файл во вложении. На GitHub тоже обновил: https://github.com/torrentpier/torrentpier/commit/2d56971bc78d13aa06ebff3091cf8d06779374d8
В центре загрузки архив тоже с уже исправленным файлом.
#5
Считаю следует добавить в инструкцию по обновлению фразу, что при запусках php-скриптов, которые обновляют БД от ревизии к ревизии необходимо, чтобы форум был включён! Иначе скрипты не работают! Убил на это время, пока не догадался включить форум.

И второе, когда обновлялся по инструкции с ревизии R477, два запроса пришлось править вручную:
- это добавление в крон (ID22 у меня уже был)


- и вот этот запрос уже модифицирован:
ALTER TABLE `bb_groups` CHANGE `group_description` `group_description` text NOT NULL DEFAULT '';
ALTER TABLE `bb_groups` ADD `avatar_ext_id` int(15) NOT NULL DEFAULT '0' AFTER `group_id`;
ALTER TABLE `bb_groups` ADD `group_time` int(11) NOT NULL DEFAULT '0' AFTER `avatar_ext_id`;
ALTER TABLE `bb_groups` ADD `mod_time` INT(11) NOT NULL DEFAULT '0' AFTER `group_time`;
ALTER TABLE `bb_groups` ADD `release_group` tinyint(4) NOT NULL DEFAULT '0' AFTER `group_type`;
ALTER TABLE `bb_groups` ADD `group_signature` text NOT NULL DEFAULT '' AFTER `group_description`;
ALTER TABLE `bb_posts` ADD `poster_rg_id` mediumint(8) NOT NULL DEFAULT '0' AFTER `poster_ip`;
ALTER TABLE `bb_posts` ADD `attach_rg_sig` tinyint(4) NOT NULL DEFAULT '0' AFTER `poster_rg_id`;

добавил строку:
ALTER TABLE `bb_groups` ADD `group_time` int(11) NOT NULL DEFAULT '0' AFTER `avatar_ext_id`
#6
Еще одна задача в кроне не запускается, ошибка вываливается:
Fatal error: DB Error [includes/cron/jobs/tr_cleanup_and_dlstat.php(201)] in /var/www/includes/db/mysql.php on line 804
#7
whuru, а поглядеть что в файде sql_log уже в падлу ?
#8
это добавление в крон (ID22 у меня уже был)
Расчет на стандартный комплект cron-задач.
добавил строку:
А вот это крайне странно, потому что это поле уже было в ревизии 400 и даже значительно раньше нее. Почему его не было у вас - загадка.
читаю следует добавить в инструкцию по обновлению фразу, что при запусках php-скриптов, которые обновляют БД от ревизии к ревизии необходимо, чтобы форум был включён! Иначе скрипты не работают!
Ну, наверное это логично. Добавил, конечно, но странно это все.
#9
whuru, а поглядеть что в файде sql_log уже в падлу ?
Не могу найти где можно это посмотреть. Не подскажете куда копать? ОС: Ubuntu Server
#10
Считаю следует добавить в инструкцию по обновлению фразу, что при запусках php-скриптов, которые обновляют БД от ревизии к ревизии необходимо, чтобы форум был включён! Иначе скрипты не работают! Убил на это время, пока не догадался включить форум.
Какой смелый человек прямо сразу на боевом обновляется

Не могу найти где можно это посмотреть. Не подскажете куда копать? ОС: Ubuntu Server

Все логи располагаются в папке log в движке