Подводя итог (гораздо более длинному, чем этот пост)
путешествию:
ПРИМЕЧАНИЕ: Я использовал дистрибутив Kubuntu, запущенный в виртуальной машине, для выполнения этого процесса, поэтому имейте в виду, что на других ОС или даже дистрибутивах это может отличаться.
0. Установка окружения разработки Discourse
Следуйте этому посту и запустите этот скрипт, на который есть ссылка в посте, используя
`bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)`
как описано там, плюс клонируйте исходный код
git clone https://github.com/discourse/discourse.git ~/discourse
1. Подготовка базы данных MySQL
Сделайте дамп исходной базы данных mybb, как описано в начале темы:
$ mysqldump -u USER_NAME -p DATABASE_NAME > mybb_dump.sql
и скопируйте/переместите его в только что настроенную среду разработки.
Установите сервер MySQL
$ sudo apt-get install mysql-server
В более новых версиях изменилась аутентификация для MySQL. Если вы хотите быть root в MySQL, вам сейчас нужно быть root на хосте, поэтому используйте
$ sudo mysql
вместо
$ mysql -u root
Конечно, сначала вы должны быть «sudoer» (администратором)
$ sudo mysql
mysql> CREATE DATABASE mybb;
mysql> SHOW DATABASES;
mysql> CREATE USER 'nonrootuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON mybb.* TO 'nonrootuser'@'localhost';
mysql> quit
$ mysql -unonrootuser -ppassword mybb < mybb_dump.sql
<здесь вы получите предупреждение о том, что указание пароля в командной строке — не самая умная идея>
$ sudo mysql
mysql> USE mybb;
mysql> SHOW TABLES;
<здесь проверьте, все ли таблицы присутствуют — см. исходный пост>
mysql> quit
2. Установка Ruby gems
Проверка файла Gemfile в текущих исходных кодах показывает, что
$ echo "gem 'mysql2', require: false" >> Gemfile
на самом деле не нужна. Достаточно установить переменную окружения IMPORT в значение 1.
Однако необходимы файлы разработки для клиентов MySQL, что и делает первая строка ниже
$ sudo apt-get install libmysqlclient-dev
$ cd ~/discourse
$ IMPORT=1 bundle install
2. Подготовка Discourse (база данных PostgreSQL)
$ bundle exec rails db:drop
$ bundle exec rails db:create
$ bundle exec rails db:migrate
$ export DB_PW="password"
$ export DB_USER="nonrootuser"
3. Выполнение самого импорта
Следующая строка исправляет давно устаревший и на данный момент уже удаленный вызов метода в скрипте импорта mybb.rb, который всё ещё присутствует на момент написания и не изменит ничего, если это уже исправлено
$ sed -i.original 's/File.exists?/File.exist?/' script/import_scripts/mybb.rb
Теперь проверьте, работает ли Redis. Скрипт установки Rails запускает его, но не включает как постоянную службу, поэтому он не переживет перезагрузку, сбои и т. д.
$ ps -aux |grep redis
silverdr 2808 0.3 0.3 89972 14512 ? Ssl 05:25 2:04 redis-server *:6379
[…]
Если вы не видите ничего похожего на строку выше, выполните
$ redis-server --daemonize yes
это та же самая команда, которую использовал вышеупомянутый скрипт установки Rails при первой установке.
Наконец
и
$ IMPORT=1 bundle exec ruby script/import_scripts/mybb.rb
Если на этом этапе скрипт не остановился с YAE (Yet Another Error), то пора открыть эту бутылку ![]()
Осталось несколько вещей
- ОК — очевидно, что отсутствует одна важная часть: пароли пользователей. Видимо, хотя оба приложения хранят хеши с солью, судя по длине этих хешей, “mybb” использует более старый алгоритм хеширования. Поэтому это понятно и не является критической проблемой. Каждый сможет сбросить свой пароль при первом входе.
- Некоторые элементы BB-кода не конвертируются. У меня, например, проблема с блоками кода, вокруг которых есть теги, устанавливающие моноширинный шрифт Courier и прочее. У меня больше нет сил пытаться автоматизировать это дальше. Если вам удастся что-то сделать с этим, пожалуйста, дайте знать мне / нам здесь!
