スクリプトをありがとうございます!
しかし、マニュアルはかなり粗く、不明瞭だと感じました。例えば、Xenforo移行ガイドなどを参照して、ここで何を提案しているのかを実際に理解する必要がありました。いくつか不足している手順を追加させてください。
- Discourse を起動して実行する
- 元の Phorum から mysqldump を作成する - すべてクリア、すべて良好。
- データベースダンプを Discourse フォルダにコピーする
docker cp/path/to/backup/phorum_db.sql.gz app:/shared/phorum_db.sql.gz(標準コンテナ名としてappを想定)
ここで不足している部分です。
- 実際に Discourse Docker コンテナに入り、そこに MySQL をインストールします。
docker exec -it app bash apt-get update && apt-get upgrade
# pv は進行状況を表示するために便利ですが、lsb-release は何かに必要です apt-get install -y lsb-release pv mariadb-server mariadb-client libmariadb-dev service mariadb start
MySQL のインストールは少しトリッキーですが、MariaDB で十分機能するはずです。
次にデータベースを作成します: mysql → CREATE database phorum。
次にバックアップからデータを投入します: pv phorum_db.sql.gz | gunzip | mysql phorum (ダンプが生の SQL の場合は gunzip は不要です)。
Ruby に MySQL サポートを追加します。
cd /var/www/discourse/
echo "gem 'mysql2'" >>Gemfile
bundle config unset deployment
bundle install --no-deployment
移行スクリプトでデータを変更します (データベース認証情報、プレフィックス、パーマリンク):
nano /var/www/discourse/script/import_scripts/phorum.rb
そして元の投稿ガイドに戻ると、すべて順調です。
クリーンな Discourse インスタンスでインポータを実行します。
git config --global --add safe.directory /var/www/discourse bundle exec ruby script/import_scripts/phorum.rb
もし Discourse データベースが実際にはクリーンでない場合は、事前に bundle exec rake db:drop db:create db:migrate でクリーンアップすることをお勧めします。
“PG::ConnectionBad: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "discourse" (PG::ConnectionBad)” で失敗した場合:
- ‘Peer authentication failed for user “discourse”’ というエラーが発生した場合:
- ファイル
/etc/postgresql/13/main/pg_hba.confを編集します。- すべての ‘peer’ を ‘trust’ に変更してファイルを保存します。
- postgresql サーバーをリロードします:
/etc/init.d/postgresql reload(またはpsql -U postgres -c "SELECT pg_reload_conf();"かもしれませんが、これは時々失敗しました)。
最初にユーザー移行が実行されます。これは比較的遅い可能性があります (~1.2k ユーザー/分、スクリプト出力による。私は 100k ユーザーを持っていましたので…)。次にカテゴリが作成され、メッセージとトピックの移行が開始されます (同じ速度、~1.2k/分)。しかし、この時点ですでにウェブサイトにアクセスして、どのように見えるかを確認できます。
Phorum のような古いエンジンにしては、予想よりもはるかにスムーズに進んでいるようです。プライベートメッセージ (PM) の移行はないようですが、少なくとも私にとっては問題にはならないでしょう。
スクリプトと労力に改めて感謝します!