旅のまとめ(この投稿よりもずっと長いです ;-)):
注:プロセス中に仮想マシンでKubuntuディストリビューションを使用したため、OSやディストリビューションが異なると同じではない可能性があることに注意してください。
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の認証が変更されました。現在、MySQLのrootになるには、ホストで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 gemのインストール
現在のソースの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のインストールスクリプトはRedisを起動しますが、永続的なサービスとして有効にしないため、再起動やクラッシュなどでは持続しません。
$ 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)で停止しなければ、ボトルを開ける時です:champagne:
残りのいくつかのこと
- OK - ユーザーのパスワードが明らかに欠けています。両方のアプリケーションがハッシュとソルトを保存しているにもかかわらず、ハッシュの長さから判断すると、「mybb」は古いハッシュアルゴリズムを使用しているようです。したがって、これは理解可能であり、問題にはなりません。誰もが最初にパスワードをリセットできるはずです。
- 一部のbbcodeが変換されません。例えば、コードブロックには、モノスペースのCourierフォントなどを設定するタグが付いています。これ以上自動化を試みる気力はありません。もし何か解決策を見つけたら、ここにいる私たちに知らせてください!
