Лицензия на IPB


Работа для фрилансеров

  1. Продвижение интернет ресурса
  2. Переделать скин IPB 3.1.4 для IPB 3.4.9
  3. Требуется специалист по Invision Power Board версия v2.3.1
  4. Шаблон
  5. Устранить дыры в IPB 3.1.4

Случайный файл

  • IPB 3.1 Paradox

    Хостинг для IPB2 и IPB3!

    • Рекомендуем: "ISPServer" и "ТаймВэб"
      Доступные тарифы гарантируют memory_limit в 128 и 256М. Напоминаем, что минимальные требования IPB3 – 128M.

Обновление форума IP.Board до версии 3 *****

май 24 2011 10:48 | Ritsuka » в Обслуживание IP.Board

В IP.Board 3 было сделано много существенных изменений в архитектуре приложения. Одним из самых больших нововведений стала работа форума с UTF-8.

При обновлении вашего старого форума до версии 3, вам скорее всего прийдется столкнуться с необходимостью сконвертировать вашу старую базу в новую (в формате UTF-8).

Данная инструкция поможет сделать шаг за шагом.
Шаг 0. Готов ли ты к переходу?

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

Для оценки существующей конфигурации PHP, создаем в корневой директории старого форума файл myinfo.php с содержимым
<?php

phpinfo();

Запускаем скрипт в браузере. Результатом будет табличка следующего вида:
-IMG-

Во-первых, версия PHP - она должна быть 5.1.x, а лучше 5.2.x, если версия PHP 4.x.x или PHP 5.3.x, форум у вас работать не будет.

Во-вторых, новому IP.Board 3 нужны модули расширения PHP:



  • dom
  • gd
  • iconv
  • libxml
  • mbstring
  • mysqli или mysql
  • Reflection
  • SimpleXML
  • SPL


Ищите эти модули поиском по странице. Если одного из выше перечисленных модулей не будет - форум не будет работать.

В-третьих, крайне желательно наличие следующих модулей:



  • json
  • sockets
  • sphinx
  • XCache или APC


Данные модули позволяют оптимизировать работу форума, но они не обязательны для его работы.

В-четвертых, память выделенная для PHP.

Найдите значение memory_limit в таблице на странице. Оно должно быть не менее 32M, идеально 128M, значение надо смотреть в первой колонке (Local Value). Если памяти будет меньше, то форум не сможет нормально обновиться, возникнут проблемы с импортированием стилей, настроек и языков.

Итак, если все условия выполнены - мы готовы к обновлению. Приступим...

Шаг 1. Подготовка.

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

Для обладателей SSH

Делаем резервную копию базы данных:

Получаем всю информацию о соединении с БД
> cat ./mydomain.ru/htdocs/forums/conf_global.php | grep sql

$INFO['sql_driver'] = 'mysql';
$INFO['sql_host'] = 'server.mysql';
$INFO['sql_database'] = 'db_forum';
$INFO['sql_user'] = 'db_user';
$INFO['sql_pass'] = 'db_passw';
$INFO['sql_tbl_prefix'] = 'ibf_';
$INFO['sql_debug'] = '1';
$INFO['mysql_tbl_type'] = 'MyISAM';
$INFO['mysql_codepage'] = 'cp1251';


Путь до conf_global.php у вас конечно будет свой. Здесь все данные для наглядности, у вас они будут другими!

Теперь когда данные нам известны делаем резервную копию базы
> mysqldump  -h server.mysql -u db_user -p db_forum --default-character-set=cp1251 > dump.sql

И сделаем сразу архивчик
> tar -czf dump.tar.gz dump.sql

Для обладателей SypexDumper

Подробная инструкция по использованию

Шаг 2. Новые файлы.

Теперь необходимо закачать новые файлы форма на сервер. Для этого в начале разберемся со старыми. Часть из них нам больше уже не понадобиться никогда. Потому удаляем следующие директории и файлы:
./sources
./skin_acp
./retail
./resources
./modules
./lofiversion
./jscripts
./ips_kernel
./interface
./install
./init.php
./index.php
./favicon.ico
./converge_local
./admin.php
./admin

Должны остаться следующие файлы и директории:
./uploads
./style_images
./style_emoticons
./style_captcha
./style_avatars
./conf_global.php
./cache

Теперь берем дистрибутив форума, и все файлы и директории из папки upload закачиваем на сервер при помощи FTP-клиента. Должно получиться так
./xml.php
./uploads
./style_images
./style_emoticons
./style_captcha
./style_avatars
./robotstxt.txt
./retail
./public
./lofiversion
./ips_kernel
./interface
./initdata.php
./index.php
./hooks
./favicon.ico
./converge_local
./conf_global.php
./cache
./admin

Теперь нужно проверить, что все права на директории расставлены правильно. IP.Board 3 требует записи в следующие директории
./cache
./cache/tmp
./cache/lang_cache
./cache/lang_cache/1
./cache/skin_cache
./public/style_images
./public/style_css
./hooks
./uploads

И файл ./conf_global.php

Для того чтобы не было проблем выставляем этим директориям и файлу CHMOD 777 (rwxrwxrwx).

Шаг 3. Подготовка к обновлению.

Кодировка в conf_global.php
Ваш старый conf_global нужно изменить, чтобы обновление прошло успешно. Допустим сейчас он выглядит так
<?php
$INFO['sql_driver'] = 'mysql';
$INFO['sql_host'] = 'server.mysql';
$INFO['sql_database'] = 'db_forum';
$INFO['sql_user'] = 'db_user';
$INFO['sql_pass'] = 'db_passw';
$INFO['sql_tbl_prefix'] = 'ibf_';
$INFO['sql_debug'] = '1';
$INFO['board_start'] = '1246400000';
$INFO['installed'] = '1';
$INFO['php_ext'] = 'php';
$INFO['safe_mode'] = '0';
$INFO['board_url'] = 'http://www.mydomain.ru/forum';
$INFO['banned_group'] = '5';
$INFO['admin_group'] = '4';
$INFO['guest_group'] = '2';
$INFO['member_group'] = '3';
$INFO['auth_group'] = '1';
$INFO['mysql_tbl_type'] = 'MyISAM';
$INFO['mysql_codepage'] = 'cp1251';

Нам необходимо указать кодировку соединения с базой данных, что бы ее понял новый форум. Для этого после строчки
$INFO['sql_tbl_prefix']			=	'ibf_';

Добавляем
$INFO['sql_charset']			=	'utf8';

Строчку
$INFO['mysql_codepage']			=	'cp1251';

Можно удалить за ненадобностью.

Перекодирование базы данных

Это очень важный этап. Если его выполнить неверно, дальнейшее обновление форума не будет иметь смысла.

Основная идея перекодирования базы
У нас есть резервная копия базы в файле. Это простой текст в кодировке windows-1251 (cp1251). Для того чтобы перевести этот текст в UTF-8, необходимо воспользоваться конвертером (редактор текста с поддержкой перекодирования, утилита для перекодирования; все что угодно, что может перевести текст из Windows-1251 в UTF-8).

После того как текст переведен в UTF-8, необходимо поправить инструкции в этом тексте, чтобы сама база работала с ним как с UTF-8. А именно есть две команды SET NAMES и DEFAULT CHARSET. На базе cp1251 они выглядят так
SET NAMES cp1251

) ENGINE=MyISAM DEFAULT CHARSET=cp1251

В нашей резервной копии таких команд больше чем две. Значит нам нужно их заменить во всем файле на
SET NAMES utf8

) ENGINE=MyISAM DEFAULT CHARSET=utf8


Перекодирование средствами SSH
Воспользуемся утилитой iconv для преобразования нашей резервной копии (которую мы делали на первом шаге), делается это так:
>iconv -f cp1251 -t utf8 dump.sql > dump.utf8


Назначение ключей следующее:
-f cp1251 – конвертировать из кодировки cp1251
-t utf8 – в кодировку utf8
dump.sql – файл который надо сконвертировать
> dump.utf8 – результаты конвертации запишутся сюда

Возможно появление проблем при конвертации, которые прервут процесс конвертирования. Это как правило происходит из-за невозможности найти соответствие символов одной кодировки в символы другой. В таких случаях стоит добавить еще один ключ (-c) в вызов iconv. Т.е. команда будет выглядеть уже так:
>iconv -c -f cp1251 -t utf8 dump.sql > dump.utf8


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

Итак весь текст у нас переведен в UTF-8, теперь необходимо изменить команды SQL. Делается это так

Собственно так как дамп у нас должен быть в правильной cp1251 кодировке, то делаем замену в файле этих значений на новые:

> sed 's/SET NAMES cp1251/SET NAMES utf8/g' < dump.utf8 > 1.dump.utf8
> sed 's/DEFAULT CHARSET=cp1251/DEFAULT CHARSET=utf8/g' < 1.dump.utf8 > dump.utf8.sql


Данную команду наглядно описать с русскими значениями:

sed 's/БЫЛО/СТАЛО/g' < ОТКУДА ЧИТАЕМ > КУДА ЗАПИСЫВАЕМ


Перекодирование подготовленным SypexDumper

В директории Tools дистрибутива мы расположили скрипт измененного SypexDumper, который уже настроен на работу с базой вашего форума. Необходимо закачать данный скрипт в корневую директорию форума на сервере и запустить.

Вводите данные для доступа к базе форума в первом окне.

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

Делаете дамп базы. После завершения dumper напишет, что резервная копия готова и даст ссылку на ее скачивание. Скачивать не надо. Просто заходим по FTP на сервер форума и убеждаемся, что копия действительно сделана и находится в директории cache. Вы можете скачать этот дамп к себе на компьютер. Запомните имя файла резервной копии.

Возвращаемся к форме дампера из которой вы начали делать резервную копию. Теперь в нем необходимо выбрать восстановление базы.
В первом выпадающем списке выбираете вашу базу данных, во втором - название файла резервной копии. Запускаете восстановление.

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

Другие способы

Конвертирование посредством самого MySQL

http://forums.ibreso...showtopic=58417 от Ritsuka

Дополнение к способу Ritsuka для больших баз

Если скрипт подвисает на конвертировании базы, в основном на таблице posts, то необходимо воспользоваться модифицированным скриптом и SSH.

Загружаете следующий скрипт в корневую директорию форума:

<?php
// Database info

include("conf_global.php");

$dbhost = $INFO['sql_host'];
$dbuser = $INFO['sql_user'];
$dbpass = $INFO['sql_pass'];
$dbname = $INFO['sql_database'];

//---------------

$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die( mysql_error() );
$db = mysql_select_db($dbname) or die( mysql_error() );

$sql = "ALTER DATABASE `".$dbname."` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;\n";

$exec_sql = 'SHOW TABLES';
$result = mysql_query($exec_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 utf8 COLLATE utf8_general_ci, CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;\n";
}
mysql_close($dbconn);

echo $sql;

Запускаете скрипт через браузер. Вы получите список инструкций для выполнения в mysql. Копируете код страницы в файл, например win2utf.sql, и закачиваете данный файл на сервер. Запомните путь к файлу, для примера у нас будет путь /home/user/htdocs/

Заходите на сервер с использованием SSH и выполняете следующую команду:

mysql -uusername -p dbname < /home/user/htdocs/win2utf.sql


Имя пользователя username, имя базы dbname и путь до файла sql запросов у вас должны быть свои.

Вводите пароль и ожидаете завершения работы команды mysql.
Использование специального Perl скрипта

Метод исключительно для SSH.

Скачиваете скрипт

wget http://www.pablowe.net/convert_charset


Выставляете ему права на запуск

chmod a+x convert_charset


Запускаете конвертацию базы форума в тестовом режиме

./convert_charset --database=database --host=localhost --user=username --askpass --test


В консоль будут выведены команды, которые будет выполнять скрипт. Убедитесь, что все таблицы базы будут сконвертированы. Если скрипт не сможет найти таблицы, выполните следующую команду:

mysql -u username -pDBUSERPASSWORD -e 'SHOW TABLES' database | awk '{if (NR>1) {if (NR==2) {a=$1} else {a=a "," $1}} } END {print a}'

Данные для username, DBUSERPASSWORD и database должны быть вашими.

Вы получите список таблиц в базе, дальше этот список необходимо добавить к ключу –tables

./convert_charset --database=database --host=localhost --user=username --askpass --tables=admin_login_logs,admin_logs,admin_permission_rows,announcements,.... --test


Убедившись, что все таблицы будут затронуты, запустите команду без ключа –test

Восстановление новой базы данных

Наша база сконвертирована и готова к обновлению. Однако ее еще надо восстановить на сервере MySQL.
Сначала необходимо поменять кодировку старой базы.

При наличии SSH

>mysql -u db_user -p db_forum -e 'ALTER DATABASE db_forum DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci'
Enter password:
>


При отсутствии SSH

В любом доступном интерфейсе для работы с базой данных (например, phpMyAdmin) перейти в базу форума и выполнить запрос

ALTER DATABASE db_forum DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci


Вместо db_forum должно быть название ваше базы!

Теперь развернем базу. Делается это так:

При наличии SSH

>mysql -u db_user -p --default-character-set=utf8 db_forum < ./dump.utf8.sql
Enter password:
>


При отсутствии SSH

Восстанавливать лучше SypexDumper. Закидываете сконвертированную резеврную копию в директорию, куда SypexDumper сохраняет резервные копии баз. И запускаете SypexDumper. Внимательно следуете инструкциям

Дамп развернут, кодировка базы utf8, база готова для обновления.

Шаг 4. Обновление

Теперь у нас все готово, чтобы запустить скрипт обновления. Заходите браузером на страницу http://mydomain.ru/f.../admin/upgrade/ и следуете указаниям мастера обновления.

Шаг 5. Ошибки после обновления

Кодировка страниц

Бывает так, что после обновления, зайдя на страницу форума, вы видите что-то подобное:
-IMG-

Проблема в том, что выбирается не правильная кодировка для страниц. Проверьте в АЦ параметр Кодировка страниц форума (АЦ → Системные настройки → Настройки серверного окружения → Кодировка страниц форума) он должен содержать значение utf-8.

Если все правильно, попробуйте создать файл .htaccess в корневой директории сервера, со следующим содержанием:

AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>


Не все символы выводятся

При просмотре страницы форума, часть символов пропала, а вместо них ромбики:
-IMG-

Причины может быть две:
1. Вы забыли изменить conf_global.php так как об этом писалось в шаге 1.
Попробуйте выполнить эти изменения, если не поможет внимательно повторите обновление.
2. Вы сконвертировали базу, которая уже была в UTF.
Начните обновление с шага 2, но не выполняйте перекодирование базы (самого текста), а только выполните замены команд SQL.

Аккорды к русским песням на mytabs.ru.

0 – комментариев

Страница 1 из 1

Комментариев еще нет

Вы не можете оставить комментарий
Страница 1 из 1


Сайт работает на IP.Content

Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна