Skip to main content

DiscuzXからの移行

Casnodeは、ユーザーがDiscuzX 3.xからCasnodeにフォーラムを移行するのに役立つ多くのGoスクリプトを提供しています。 スクリプトの場所は https://github.com/casbin/casnode/tree/master/discuzx

Xorm対応のデータベース(MySQLなど)は、トピックや返信などのフォーラムデータを保存するためにCansodeによって使用されます。 オブジェクトストレージ(Casdoorストレージプロバイダの形式として)は、Casnodeによって画像や添付ファイルを保存するために使用されます。

準備

移行を行う前に、以下の環境を準備する必要があります。

  1. クラウド VM (4 つのコアと 8 GB のメモリ、8 つのコアと 16 GB の方が優れています) 高速化のためのデータベースとイントラネット接続に優れています。 この VM は、Go マイグレーションスクリプトを実行するために使用されます。
  2. 上記のVMでGo移行スクリプトを使用したCasnodeのgitリポジトリ(Casnodeインスタンスを実行または停止することができます)。
  3. 実行中のCasdoor インスタンス (同じクラウド VM で高速化) 少なくとも 1 つのオブジェクトストレージは、Casdoor ストレージプロバイダーとして構成されています。 これはDiscuzXの画像と添付ファイルをオブジェクトストレージにアップロードするために使用されます。
  4. DiscuzXインスタンスはオンラインです。

設定

最初に、インストールガイドに基づいてCasdoorとCasnodeを正しく設定し、移行前に正常に動作していることを確認します。

CasdoorとCasnodeをDBのイントラネットURLに接続させます。 CasdoorのストレージプロバイダのエンドポイントをクラウドオブジェクトストレージのイントラネットURLにします。 もっと速くなります :::

Casnodeのapp.confでCasdoorデータベースを構成するため、CasnodeはCasdoorのDBに直接接続してユーザーを作成できます。 これは、CasdoorのRESTful APIを呼び出してユーザーを作成するよりも速くなります。

casdoorDbName = casdoor

以下で移行スクリプトを設定します: https://github.com/casbin/casnode/blob/master/discuzx/conf.go .

  1. dbName: あなたのDiscuzXのDB名
  2. discuzxDomain: DiscuzXのパブリックドメイン、末尾のスラッシュ付き
  3. discuzxAttachmentBaseUrl: 末尾スラッシュ付きDiscuzXの添付ベースURL(DiscuzXの添付ファイルURLから取得できます)
  4. avatarPoolBaseUrl: これを変更しない
package discuzx

var dbName = "ultrax"
var discuzxDomain = "https://www.discuz.net/"
var discuzxAttachmentBaseUrl = "https://attachment.discuz.net/forum/"

移行

XXXConcurrency がスクリプトの先頭に定義されていることがわかります。 これは移行を行う並行スレッドの数です 環境に基づいてこの値を調整できます。 小さすぎると、移住は非常に遅くなります。 高すぎると、DB接続は「接続が多すぎる」エラーを報告する可能性が高くなります。

var SyncAvatarsConcurrency = 20
以下のセクションで提供する推定時間は、DB とオブジェクトストレージを使用したリモートインターネット接続のあるマシンで測定されます。 VM が DB とオブジェクトストレージと同じサブネットにある場合、より高速になります。 :::

1. ユーザーの移行

DiscuzX の UCenter メンバー全員を Casdoor ユーザーに移行するには:

実行 TestAddUsers in: https://github.com/casbin/casnode/blob/master/discuzx/user_test.go

この手順では、60,000ユーザーに2分ほどかかります。

2. ユーザーアバターの移行

DiscuzX の UCenter メンバーのアバターをすべて、Casdoor のリソースに移行するには、(クラウドオブジェクトストレージにバックアップされた Casdoor のストレージプロバイダーを介して) 次のようにします。

TestSyncAvatars in: https://github.com/casbin/casnode/blob/master/discuzx/avatar_test.go

このステップでは、60,000人のユーザーに約10分かかります。

3. フォーラムの移行

DiscuzXのすべてのフォーラムをCasdoorのタブとノードに移行するには:

TestAddForums in: https://github.com/casbin/casnode/blob/master/discuzx/forum_test.go

このステップは通常2秒で終了します。

4. スレッドと移行投稿

DiscuzXのすべてのスレッドを移行するには & Casdoorのトピックに投稿 & 返信:

TestAddThreads in: https://github.com/casbin/casnode/blob/master/discuzx/thread_test.go

この手順では、10,000人のユーザーに約7分かかります。

完了

移行中は、Casnodeインスタンスを同時に実行させることができます。 そのため、Casnodeの公開ホームページで F5 を押すことで、効果をすぐに確認できます。

移行スクリプトの実行時にパニックに陥った場合は、Casnodeの作成者に連絡してください。