phpBB3フォーラムをDiscourseへ移行する

この質問を他の投稿の中に隠すべきではなかったかもしれません。

@gerhard 現在、異なる BB コードはどのように扱われていますか?これは誤ってそうなったのでしょうか、それとも意図的なものですか?

「いいね!」 2

より大きなマシンでテストした際、1 分あたりの投稿インポート速度は何件でしたか?現在、8 コアの Xeon でインポートを実行していますが、マシンはあまり負荷がかかっていないように見えるのに、速度は 1000 投稿/分を大幅に超えません。

高速な NVMe SSD を使用しているため、I/O がボトルネックではないと思われます。さらに速度を向上させる方法はありますでしょうか?全体のインポート時間を数パーセント短縮し、1〜2 時間ほど削減したいと考えています(現在は約 14 時間かかっています)。

「いいね!」 1

こんにちは、小さな問題に直面しています…約10万件の投稿をインポートして変換した後、リダイレクトリンクの設定を忘れていることに気づきました(さらに、settings.ymlでスマイリーを絵文字にリンクする設定も抜けていました)。リンクを正しく解析するようにすべてを再インポートする方法はありますか?既存の設定は変更されずに済みますか?
スクリプトを再度実行すると、すでにインポート済みだと判断されて何もしないでしょうか、それとも再実行されるでしょうか?

「いいね!」 1

私の知る限り、残念ながらそれは不可能です。おっしゃる通り、すでにインポートされた投稿は無視されます。

「いいね!」 1

インポートされた投稿を一時的に忘れさせ、再インポートする方法はありますか?
(後で投稿を追加したいので、永続的ではありません)

「いいね!」 1

おそらく意図的ではないでしょう。BB コードから Markdown への変換はまだ完璧ではありません。

それは妥当な数字のようです。ただし、より高いシングルコア速度を持つ CPU を見つけられる場合を除きます。

インポート開始前のバックアップはありますか?あれば、それを復元してインポートをやり直すことができます。そうでない場合は、残念ながら最初からやり直す必要があります。

「いいね!」 1

それは残念ですね。これは絵文字(smilies)にも当てはまるのでしょうか?

「最初からやり直す」というのは、Discourseを再インストールすることを意味するのでしょうか?

「いいね!」 1

申し訳ありませんが、インポート後にスマイリーを修正するのは非常に困難でエラーが発生しやすいでしょう。もしその方法を選ばれるのであれば、お手伝いすることはできません。

はい、基本的にそうです。すべてのデータを削除してコンテナを再構築することで、いくつかの手順を省略できます。

./launcher stop app
rm -rf /var/discourse/shared/
./launcher rebuild app
「いいね!」 2

ありがとうございます! :slight_smile: つまり、その2つのコマンドを実行すれば、フォーラムはインポートの準備が整うということでしょうか?他にやるべきことはありますか?(テーマ、賞、グループ、その他設定されたものはどうなるのでしょうか?それらのバックアップを取る方法はあるでしょうか(テーマについては保存してインポートする方法はわかっていますが、他の設定については……))( parentheses が多すぎますね)

とにかく、移行の真っ最中ですべてが停止している状況で気づくのではなく、今ここでこの情報を知れたことに安堵しています。修正の時間がありますので。ただ、できる限り手直しを減らしたいと考えています…

ああ、バックアップがない場合は、それらの作業を手動でやり直す必要があります。

「いいね!」 2

もし不明な点があれば、これはデータベース全体を消去し、最初からやり直すことを意味します。

設定を保存して復元する方法はいくつかありますので、検索してみてください。

ただし、提案されている通り、インポート後にそれらの設定を行うか、あるいはすべて設定してからバックアップを作成し、それをインポート前の出発点として使用するのがおすすめです。

「いいね!」 3

こんにちは、Helmi さん。

カスタム BB コードプラグインの開発に取り組んでいる友人が、インポーターにバグがあることを発見しました。そのバグにより、色タグが正しくレンダリングされません。

彼の話では以下の通りです。

色タグは意図的に投稿から削除されています。コンバーターのバグは「閉じタグのみを削除している」ことではありません。実際の「バグ」は、名前付きの色 に対する色タグが削除されていないことです。

証拠:
https://github.com/discourse/discourse/blob/master/script/import_scripts/ph pbb3/support/text_processor.rb

    def clean_bbcodes(text)
      # Many phpbb bbcode tags have a hash attached to them. Examples:
      #   [url=https://google.com:1qh1i7ky]click here[/url:1qh1i7ky]
      #   [quote="cybereality":b0wtlzex]Some text.[/quote:b0wtlzex]
      text.gsub!(/:(?:\w{8})\]/, ']')

      # remove color tags
      text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "")
    end

最後の行 text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "") は、ハッシュコードを含む色タグと閉じ色タグを捕捉する正規表現ですが、名前付きの色(color=green など)を含む色タグは捕捉しません。

解決策: その行を削除してください。

text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "")

実際にはその行は不要です。表示方法をどう決めるにせよ、色データは保持したいからです。(当フォーラムにとってはこれが解決策ですが、Discourse の場合はおそらく、名前付きの色に限らずすべての色タグを削除するようにするでしょう。)

「いいね!」 2

こんにちは、ゲルハルトさん。
ご指示通り作業を進めました(まず削除し、その後多くの作業をやり直し、バックアップを取得してからインポートを開始しました。しかし、インポートの途中で何か間違っていたことに気づき、インポートを中断。すでにデータがインポートされていたため、最初からやり直す必要がありました)。

そこで、再度すべてを削除しました。
アプリを再構築してバックアップを復元し、インポートを実行しようとしたところ、サイトが接続を拒否します。

Discourse Doctor を実行すると、「[ドメイン] の Discourse バージョンが見つかりません」「localhost にも見つかりません」と表示され、他のエラーはありません。

どうすればよいでしょうか?

再構築する必要はなく、バックアップを復元するだけで十分です。

おそらく、以下のコマンドを実行する必要があります。

./launcher start import

Discourse-doctor は import コンテナについて認識していません。

app と import は同じバージョンであるべきなので、両方を再構築する必要があるかもしれません。

インポートを再構築し、アプリを再構築しましたが、接続が拒否されました。 :frowning:

phpBBのデータベースダンプとファイルを再度追加する必要があります。リセット中にそれらを削除した可能性があります。

「いいね!」 2

はい、それらは削除しました。でも、まずは自分のデータを復元する必要はないでしょうか?インポート前に多くの設定を済ませていたので、再度インポートする際に同じ作業を繰り返したくありませんでした。今は、何の設定もない状態の Discourse インスタンスにインポートされてしまうのでしょうか?

次に、/var/discourse/shared/backups/default にあるバックアップを復元します。

またまた登場してすみません、今度は別の問題が発生してしまいました…

今回はこれです:スマイリー! 各スマイリーを settings.yml のように設定しました:

happy: [‘:D’,‘:-D’]
woo: ‘:woo:’
など。

スマイリーの画像は /var/discourse/shared/standalone/import/images/smilies ディレクトリに配置しました。
インポート時に「スマイリーが見つからない」といったエラーは表示されませんでした。

しかし、スマイリーは絵文字にマッピングされず、投稿内では画像に変換されてしまいました。

どこが間違っていたのでしょうか?

またしてもお手伝いと知見をいただき、ありがとうございます!

編集::exploding_head: もちろん… phpBB2 ではなく phpBB3 からマッピングする必要があります…
これで解決すると思いますが、実際に問題だったかどうかはテストしてみないといけませんね。

編集2:今度はスマイリーが追加された新しい phpBB3 データベースダンプを使って再インポートしました。それでもスマイリーは表示されません。画像に変換されており、絵文字セットにも含まれていません。何が問題なのでしょうか?

ついにスマイリーを絵文字にマッピングすることに成功しました。
150 以上のカスタムスマイリーがあり、それぞれ異なる画像名とスマイリーコードを持っていたため、私には試行錯誤の連続でした。私のような人のために、簡潔に拡張された手順をまとめました。

インポーターがスマイリーをどのように処理するかを理解する
私が当初思っていたのは、インポーターでスマイリーコードを追加し、指定された画像ファイルに画像を配置すれば、自動的に絵文字フォルダにも追加されるというものでした。しかし、それは機能しません。そのため、スマイリー画像を絵文字フォルダに手動でインポートする必要があります。
インポートする際、画像名は実際に使用するスマイリーコードと同じにする必要があります。例えば、ユーザーが「:cheer:」と入力したときに表示されるスマイリーの画像ファイル名が「cheery_icon0.gif」の場合、その画像を「cheer.gif」にリネームし、絵文字フォルダ(管理 CP > カスタマイズ > 絵文字)にアップロードする必要があります。

さらに興味深いのは、phpBB で以下のようなコードで表示されるスマイリーが多数ある場合です。

<-)
%-)
:3

例えば、以下のようなスマイリーがあったとします。

コード:<:-) で、名前は "_1partyguyhat.gif"

まず、Discourse での新しいコードを決める必要があります(ファイル名に「<:-)」は使えないため)。次に、gif ファイルをそのコードにリネームし、対応するマッピングを設定ファイルに追加します。

私の場合、その特定のスマイリーは以下のようになりました:

party_hat: '&lt;:-)'

これをインポートすると、投稿内でユーザーが「<:-)」と入力したすべてのインスタンスが「:party_hat:」に変換されます。
その後、その絵文字が利用可能な場合、party-hat の絵文字を使用してスマイリーがレンダリングされます。

120 個のスマイリーを変換するためのヒント :wink:

  • phpBB3 インスタンスに、すべてのスマイリーを含んだテスト投稿を作成する
  • インポート時、その投稿を素早くスキャンして、テキストが残っていないか確認する。または [編集] オプションを使って、画像ではなく単に絵文字コードに変換されているか確認する(コロン「:」を忘れたり、セミコロン「;」をコロン「:」と間違えたりすると、このようなことが起こり得ます。信じてください)。

settings.yml のトラブルシューティング

  • emojisコメントアウト解除する必要があります(私も完全にこの点を見落としていました)。
  • 書式は、スマイリーコードの前に 4 個のスペースが必要です。
  • すでに「:cheer:」というスマイリーコードがあり、それを「cheer.gif」として絵文字に追加していた場合でも、すべてのコードを追加する必要があります。追加しないと、絵文字コードではなく画像ファイルとして変換されてしまいます。
  • 「:yes:」や「:no:」というコードのスマイリーがある場合、それらをコメントアウトする必要があります。そうしないと、ブール値の「:true:」や「:false:」としてパースされてしまいます。その場合は、以下のようにする必要があります:"yes": ':yes:'
  • 編集:あともう一つ面白い事実を忘れていました。絵文字にハイフン「-」を使う場合(例:‘party-hat’)、Discourse に画像をアップロードすると、それがアンダースコア「」に変換され、‘party_hat’ という名前に変わります。したがって、ハイフン「-」ではなく、アンダースコア「」のみを使用してください。

この情報が誰かの助けになれば幸いです。私も、すべてを正しくインポートできるようになるまで、ほぼ 2 週間を費やしました。

「いいね!」 8