Zup
2020 年 8 月 29 日午後 8:52
64
再度返信して申し訳ありません。パーマリンクが作成されない理由がわかりません。
まとめますと:
SMF2 のデフォルトの「醜い URL」を、ルートドメインのトップレベルで使用しています。Discourse はそのルートドメインのサブドメインにインストールされています。最新の Discourse リポジトリにある smf2.rb インポーターを使用して(あなたのガイドに従って)SMF2 から Discourse への変換を行いましたが、インポート完了後、Discourse にはパーマリンクが存在しません。
SMF2 または Discourse 上で特定の設定やプラグインを実行するなど、追加のステップが必要でしょうか?
pfaffman
(Jay Pfaffman)
2020 年 8 月 30 日午前 1:29
65
その関数はきれいなURL用のもののようですが?したがって、それに合わせて変更する必要があります(コードを見落としていなければの話ですが)。
「いいね!」 1
Zup
2021 年 2 月 24 日午後 9:52
66
少し混乱しています。Marco は「きれいな URL」を使用しませんでしたが、彼のためにパーマリンクが作成され、同じインポートスクリプトを使用していました。
インポートスクリプト内の「きれいな URL」関数はこちらです:discourse/script/import_scripts/smf2.rb at main · discourse/discourse · GitHub
SMF のデフォルトの「汚い」URL で動作させるためのサポートを求めています。何かヒントがあれば大変助かります。 ありがとうございます。
pfaffman
(Jay Pfaffman)
2021 年 2 月 24 日午後 10:06
67
わかりません。しかし、私の最善の推測としては、あなたが確認したいのは、以下の行 222 です。
Permalink.find_or_create_by(url: "forums/index.php/board,#{c["id_board"]}.0.html", category_id: category.id)
そのパーマリンク(あるいは他にもいくつかあるかもしれません)を、見苦しいものと同じ形式に変更する必要があるでしょう。ただ、私から見てもそれはかなり見苦しく見えます。また、ファイルの先頭にある permalink_normalizations を調整する必要があるかもしれません。
Zup
2021 年 2 月 26 日午後 10:56
68
Jay さん、また返信して申し訳ありません。222 行目はどこでしょうか?smf2.rb の 222 行目は以下の通りです:
if parent
pfaffman
(Jay Pfaffman)
2021 年 2 月 26 日午後 11:01
69
さて、私たちが参照しているバージョンが異なるようですね。その理由はよくわかりませんが、確認すべき点は「Permalink」に関する行です。
Zup
2021 年 2 月 26 日午後 11:24
70
リンクしたバージョンが最新の「公式」バージョンに見えるので混乱しています。しかし、あなたは2人目に異なるバージョンを参照する人です。何が抜けているのでしょうか?あなたのバージョンはどこで入手できますか?
pfaffman
(Jay Pfaffman)
2021 年 2 月 26 日午後 11:38
71
ああ、すみません。どうやら smf1 スクリプトをクリックしてしまったようです。ご覧の smf2.rb と同じ場所に smf1.rb1 があるので、そちらを確認してください。
smf1 スクリプトを確認するか、make_prettyurl_permalinks をモデルとして make_uglyurl_permalinks を作成することもできます。ただし、これは綺麗な URL テーブルから読み取るため、smf1.rb をモデルにする方が簡単かもしれません。確実なことはデータベースを確認しないとわかりません。いや、create_xxx 関数を変更しない限り、それでもあまり役立たないでしょう。
申し訳ありませんが、ここで説明できるような解決策は見当たりません。
「いいね!」 1
JustinZ
(Justin)
2021 年 7 月 10 日午前 6:41
72
ここまで進んできたのですが、どうやらそれ以上先に進めません。MySQL サーバーにネイティブパスワード付きの新しいユーザーを作成して試してみましたが、やはり解決しませんでした。
su discourse -c "bundle exec ruby script/import_scripts/smf2.rb /shared/smf2 -t UTC"
既存のグループを読み込み中...
既存のユーザーを読み込み中...
既存のカテゴリを読み込み中...
既存の投稿を読み込み中...
既存のトピックを読み込み中...
Traceback (most recent call last):
7: from script/import_scripts/smf2.rb:701:in `<main>'
6: from script/import_scripts/smf2.rb:28:in `run'
5: from script/import_scripts/smf2.rb:28:in `new'
4: from script/import_scripts/smf2.rb:62:in `initialize'
3: from script/import_scripts/smf2.rb:274:in `create_db_connection'
2: from script/import_scripts/smf2.rb:274:in `new'
1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect': RSA Encryption not supported - caching_sha2_password plugin was built with GnuTLS support (Mysql2::Error)
JustinZ
(Justin)
2021 年 7 月 12 日午後 12:09
73
OK、何時間もやり取りを繰り返してようやく動作させることができたので、同じように詰まってしまう人のために問題を特定し、ここに投稿します。
MySQL の Docker コンテナはバージョン 8 です。そのため、何らかの理由で MySQL テンプレートが依存する MariaDB ライブラリが機能しません。
インポート用 Docker コンテナの設定ファイルには MySQL テンプレートファイルを含めていませんでした。これが最初の修正点です。
インポート用コンテナをビルドし、./launcher enter import でその中に入りました。
その後:
echo "gem 'mysql2'" >> Gemfile
wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
dpkg -i mysql-apt-config_0.8.17-1_all.deb
対話式プロンプトが表示されますが、デフォルト設定(MySQL 8 とツール)を選択できます。
その後、通常の MySQL 8 ライブラリをインストールしてビルドを続行しました:
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmysqlclient-dev
su discourse -c 'bundle config unset deployment'
su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'
これで全て完了し、残りの手順は同じでした。インポートが現在実行されています。
Discourse 開発者たちは、この問題に対処するためにインポートスクリプトを調整したいと思うかもしれません。少なくとも、同じように詰まってしまう人が見られるようにフォーラムに投稿されました。
「いいね!」 3
Zup
2021 年 10 月 8 日午後 9:31
76
S3 を使用せずに一度インポーターを実行しました。すでにインポート済みのトピックからのアップロードは、デルタインポート中に S3 に転送されますか?
最初からやり直し、インポートする前に S3 を有効にすることをお勧めします。
Zup
2021 年 10 月 10 日午後 11:55
78
ユーザー作成時に以下のエラーが発生します:
oxipng worker: oxipngnot found; please provide proper binary or disable this worker (--no-oxipng argument or:oxipng => false through options)
その後、投稿の作成が始まります。
これが Discourse で添付ファイルが表示されない原因でしょうか?
oxipng はどこにインストールすべきですか?
更新:なぜ oxipng のエラーが発生しているのか混乱しています。Discourse 内でこれに関する情報を全く見つけることができず、この問題は SMF2 インポートスクリプトを実行した時のみ発生しています。もしかして、これと関連があるのでしょうか?https://meta.discourse.org/t/faster-and-smaller-uploads-in-discourse-with-rust-webassembly-and-mozjpeg-blog
Falco
(Falco)
2021 年 10 月 11 日午後 10:43
79
それはサーバー側で使用している画像最適化ライブラリからの警告に過ぎず、何もブロックするものではありません。
「いいね!」 2
Zup
2021 年 10 月 18 日午後 9:04
80
当初はインポートの問題が S3 の問題に関連している可能性があると考えていましたが、S3 は正常に動作していることがわかりました。私が直面している問題は、インポートスクリプトを実行(S3 有効化)し、インポートコンテナを再構築した後、Discourse のすべてのトピックに、smf2 トピックの添付ファイルとして存在するアップロードが含まれていないように見える点です。つまり、Discourse のトピックにはアップロードが存在することを示す視覚的な手がかりがなく、これは smf2 の対応するトピックでは明確に添付ファイルとして表示されているはずです。S3 を無効にしてインポートした場合でも同じ結果になります。手がかりが尽きてしまいました ご意見をお聞かせください。
pfaffman
(Jay Pfaffman)
2021 年 10 月 19 日午前 7:19
81
画像が投稿に添付されているため、インポートスクリプトはそれらをインポートする必要があると認識していますが、投稿内で参照されていないため表示されない可能性があります。画像へのリンクを含めるように投稿テキストを変更する必要があります。以前、別のフォーラムで同様の事例を目にしたことがあります。
Zup
2021 年 10 月 19 日午後 6:30
82
smf2 で投稿を編集して、Discourse にインポートする前に添付ファイルへのリンクを含めるという意味ですか?
pfaffman
(Jay Pfaffman)
2021 年 10 月 19 日午後 6:34
83
それは一つの手段かもしれません。
ただ、インポートスクリプトを修正して、添付ファイルを生の投稿に追記したいと考えています。例えば、以下のような形です。
def import_attachments
puts "", "importing attachments..."
mapping = {}
attachments = mysql_query(<<-SQL)
SELECT a.attachmentid, a.contentid as postid, p.threadid
FROM #{TABLE_PREFIX}attachment a, #{TABLE_PREFIX}post p
WHERE a.contentid = p.postid
AND contenttypeid = 1 AND state = 'visible'
SQL
attachments.each do |attachment|
post_id = post_id_from_imported_post_id(attachment["postid"])
post_id = post_id_from_imported_post_id("thread-#{attachment["threadid"]}") unless post_id
if post_id.nil?
puts "Post for attachment #{attachment["attachmentid"]} not found"
next
end
mapping[post_id] ||= []
mapping[post_id] << attachment["attachmentid"].to_i
end