アバターアップロードの問題 (Ubuntu)

これは、win 11 wsl 開発環境セットアップのスレッドから分割されたものです。

私の問題は、ubuntu 22.04.3 にインストールされた開発セットアップ(非 docker)に関連しています

…ありがとうございます。ただし、編集されたインストーラーでは npm や ruby の最新バージョンがインストールされていないようだったため、いくつかの追加の手動手順を実行する必要がありました。

ubuntu-22.04 も使用しています。

(オプション 2) を使用して最新の npm をインストールします: https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-22-04

pnmp をインストールします: npm install -g pnpm

(方法 3) を使用して最新の ruby をインストールします: https://ubuntuhandbook.org/index.php/2024/01/install-ruby-ubuntu-24-04/

これを bash.rc に追加します:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

imagemagik を手動でインストールします。最新バージョン (「ソースコードから ImageMagick の最新バージョンをインストールする (上級者および困っているユーザー向け)」のセクションに必ず移動してください): https://itsfoss.com/install-imagemagick-ubuntu

これらすべてを行った後でのみ、インスタンスにログインできました…。

丸一日かけて開発インスタンスを立ち上げましたが、アバターのアップロード以外はすべて問題なく、かなり満足していました。具体的には、ユーザーとしてアバターをアップロードすると、アバターアップロードボックスには正しく表示されますが、保存をクリックするとプレースホルダーのアバターが表示されるだけです…ログにはエラーもありません…

これは、移行をテストするために開発インスタンスを設定し、そのテストの1つがアバターを取得することであるため、私にとって非常に重要です :smiley: …したがって、テストインポートに進む前に、それらが機能することを確認したいのです。

トピックにアップロードされた画像は正しく表示され、問題ありません。

誰か何かアイデアはありますか?どんな助けでも大歓迎です。

ローカル環境での画像URLは少し厄介な場合があります。

FORCE_HOSTNAME=localhost:4200 bin/ember-cli -u を使用してローカルサーバーを起動していることを確認してください。

最終的なデスティネーションを模倣するために、クラウド上のテストインスタンスを使用する方が良いでしょう… 実際、最終的にはクラウドでマイグレーションをテストすることをお勧めします。

「いいね!」 1

それを試しましたが、うまくいきませんでした。

このローカル開発環境を整えるのに一日中費やしてとても疲れたので、すべてが無駄だったなんて考えたくないです :stuck_out_tongue: もうすぐだと思ったのに!

ローカル開発環境についての私の考え方は次のとおりでした。

インポートスクリプトをローカルで実行し、Discordをバックアップし、すべてが順調に見えたら本番のクラウドインスタンスにデプロイする…

ブラウザの開発者ツールでアバターのURLを確認すると、正しくないことがわかるかもしれません。

ローカルインストールは開発やテストに非常に役立ちますが、画像を操作するには完璧ではありません。

「いいね!」 1

おそらく、WSLが127.0.0.1をWindowsに公開しておらず、Windowsのブラウザがそれを認識できていない可能性があります。

代わりに、WSL2内でChromeから起動して試してみてはいかがでしょうか?

推測ですが、アバターが127.0.0.1アドレスで表示されているのだと思います…

ああ、すみません、Ubuntu を使用しています。Ubuntu VM 上です。この Win 11 スレッドをハイジャックするつもりはありませんでした。

「いいね!」 1

ここに正確な動作を示します。

投稿内の画像アップロードは正常に機能します。

ユーザーアバターを変更する場合、最初に画像をアップロードし、まだ画像選択ダイアログ内にいるときは機能するように見えます。

しかし、「変更を保存」すると、アップロードされた画像は表示されず、デフォルトの画像が表示されます。

画像はアップロードされており、ソースに移動することで表示できます。

そして、開発者ツールでURLを変更すると、設定ページでは正常に表示されます。

つまり…違いはURLです。アップロードされたカスタムアバターには「http://127.0.0.1:4200/uploads/default/original…..」というURLが付いていますが、ページが表示しようとしているのは

「/user_avatar/127.0.0.1/user1/…….」

です。

…何を見落としていますか?

注:トピック/投稿では、画像は次のURLで正しく表示されます:http://localhost:4200/uploads/default/original/……….etc

どんな助けでも感謝します!

わかりました、原因がわかりかけてきました。2つの問題があります。動作したらまた報告します。

了解…

最初の問題は、アバターのパスが IP アドレスの 127.0.0.1 であり、他のすべての URL が localhost であったことですが、これは違いを生んだでしょうか?コマンドラインから Discourse を起動する際にパラメータが認識されないようだったため(FORCE_HOST=localhost などは Rails では空白でした)、とにかくこれを変更しました。Rails コンソールに入って変更しました。

rails c
SiteSetting.force_hostname = "localhost"
SiteSetting.port = 4200
exit

サイトを再起動した後、アバターのパスは IP アドレスではなく localhost になりました。しかし、アバターはまだ動作しませんでした。

アバターのインポートを実行した直後にログをさらに調査したところ、次のことがわかりました。

tail -n 200 log/development.log

次のことが表示されました。

convert: no decode delegate for this image format jpeg:/home/bob/discourse/public/uploads/default/original/1X/92bb0d46e6a4b8a1333505b9d2da59a5ed1721ec.jpeg[0]' @ error/constitute.c/ReadImage/752.\nconvert: no images defined jpeg:/tmp/discourse-thumbnail20260202-4096-qjyo93.jpeg' @ error/deprecate.c/ConvertImageCommand/3368.\n"

そして、少し調べた結果、Imagemagick はインストールされていましたが、JPEG デリゲートが先にインストールされていなかったことが原因だとわかりました。Imagemagick をアンインストールし、JPEG デリゲート(およびその他)をインストールしました。

sudo apt install -y libpng-dev libtiff-dev libwebp-dev libheif-dev liblcms2-dev zlib1g-dev libjpeg-turbo8 libjpeg-turbo8-dev

そして、ソースから Imagemagick を再インストールしました。

./configure \
  --prefix=/usr/local \
  --with-modules \
  --disable-static \
  --with-quantum-depth=16 \
  --with-jpeg=yes \
  --with-png=yes \
  --with-tiff=yes \
  --with-webp=yes \
  --with-heic=yes \
  --with-lcms=yes

make -j"$(nproc)"
sudo make install
sudo ldconfig

Discourse サーバーを再起動したところ、アバターはすぐに動作するようになりました :slight_smile:

IP/localhost の URL 参照に固執して、基本的なことを確認しなかったことに腹が立ちますが…しかし、これで、過去数日間でかなりのことを学び、今は動作しています :slight_smile: