DiscuzXからの移行
Casnodeは、ユーザーがDiscuzX 3.xからCasnodeにフォーラムを移行するのに役立つ多くのGoスクリプトを提供しています。 スクリプトの場所は https://github.com/casbin/casnode/tree/master/discuzx
Xorm対応のデータベース(MySQLなど)は、トピックや返信などのフォーラムデータを保存するためにCansodeによって使用されます。 オブジェクトストレージ(Casdoorストレージプロバイダの形式として)は、Casnodeによって画像や添付ファイルを保存するために使用されます。
準備
移行を行う前に、以下の環境を準備する必要があります。
- クラウド VM (4 つのコアと 8 GB のメモリ、8 つのコアと 16 GB の方が優れています) 高速化のためのデータベースとイントラネット接続に優れています。 この VM は、Go マイグレーションスクリプトを実行するために使用されます。
- 上記のVMでGo移行スクリプトを使用したCasnodeのgitリポジトリ(Casnodeインスタンスを実行または停止することができます)。
- 実行中のCasdoor インスタンス (同じクラウド VM で高速化) 少なくとも 1 つのオブジェクトストレージは、Casdoor ストレージプロバイダーとして構成されています。 これはDiscuzXの画像と添付ファイルをオブジェクトストレージにアップロードするために使用されます。
- 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 .
- dbName: あなたのDiscuzXのDB名
- discuzxDomain: DiscuzXのパブリックドメイン、末尾のスラッシュ付き
- discuzxAttachmentBaseUrl: 末尾スラッシュ付きDiscuzXの添付ベースURL(DiscuzXの添付ファイルURLから取得できます)
- 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の作成者に連絡してください。