이 글은 Windows 11 WSL 개발 환경 설정 스레드에서 분리되었습니다.
제 문제는 Ubuntu 22.04.3에 설치된 개발 환경(도커 미사용)과 관련이 있습니다.
…고맙습니다. 다만 수정된 설치 프로그램이 npm이나 ruby의 최신 버전을 설치하지 않는 것 같아서 몇 가지 수동 단계를 추가로 수행해야 했습니다.
또한 ubuntu-22.04를 사용 중입니다.
최신 npm 설치(옵션 2): https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-22-04
pnpm 설치: npm install -g pnpm
최신 ruby 설치(방법 3): https://ubuntuhandbook.org/index.php/2024/01/install-ruby-ubuntu-24-04/
bash.rc에 다음 내용을 추가하세요:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
imagemagick은 수동으로 최신 버전을 설치해야 합니다. (“Install latest version of ImageMagick from the source code (for advanced and desperate users)” 섹션을 참고하세요): https://itsfoss.com/install-imagemagick-ubuntu
이 모든 작업을 마친 후에야 인스턴스에 로그인할 수 있었습니다….
하루 종일 개발 인스턴스를 설정하고 실행에 성공한 후, 꽤 만족스러웠습니다… 아바타 업로드를 제외하고는 모든 것이 정상으로 보입니다. 구체적으로 말하면, 사용자로 로그인하여 아바타를 업로드하면 아바타 업로드 상자에 올바르게 표시되지만, 저장을 클릭하면 그냥 기본(플레이스홀더) 아바타만 표시됩니다… 로그에는 에러가 없는데…
이것은 저에게 꽤 중요한 문제입니다. 개발 인스턴스를 설정한 이유는 마이그레이션을 테스트하기 위해서인데, 그 테스트 중 하나가 아바타가 정상적으로 가져와지는지 확인하는 것이기 때문입니다
… 따라서 테스트 가져오기를 진행하기 전에 아바타 기능이 정상 작동하는지 확인하고 싶습니다.
토픽에 업로드한 이미지는 올바르게 표시되며 문제가 없습니다.
혹시 아이디어가 있으신 분 계신가요? 도움을 주시면 정말 감사하겠습니다.
로컬 환경에서 이미지 URL은 조금 까다로울 수 있습니다.
로컬 서버를 FORCE_HOSTNAME=localhost:4200 bin/ember-cli -u 명령으로 시작하고 있는지 확인하세요.
최종 배포 환경을 모방하기 위해 클라우드에서 테스트 인스턴스를 사용하는 것이 더 좋습니다. 실제로는 마이그레이션도 궁극적으로 클라우드에서 테스트할 것을 권장합니다.
그렇게 해봤는데, 효과가 없었습니다.
오늘 하루 종일 이 로컬 개발 환경을 지금 상태까지 만들느라 너무 지쳐서, 이제 와서 모든 것이 헛수업이었을 거라고는 생각할 수가 없네요
거의 성공할 줄 알았는데 말이죠!
로컬 개발 환경을 구축하기 위해 제가 취한 접근 방식은 다음과 같습니다:
로컬에서 import 스크립트를 실행하고, Discord를 백업한 뒤, 모든 것이 정상적으로 확인되면 적절한 클라우드 프로덕션 인스턴스에 배포하는 것이었죠…
브라우저의 개발자 도구를 사용해 아바타의 URL을 확인하면 URL이 올바르지 않다는 사실을 발견할 수 있습니다.
로컬 설치는 개발 및 테스트에 매우 유용하지만… 이미지 조작에는 완벽하지 않습니다.
아마도 WSL이 127.0.0.1을 Windows에 노출하지 않아 Windows 브라우저가 이를 감지하지 못하고 있는 것 같습니다.
대신 WSL2 내에서 Chrome을 실행하여 사용해 보세요.
내 추측으로는 아바타가 127.0.0.1 주소로 표시되고 있는 것 같습니다…
아, 죄송합니다. 저는 Ubuntu VM에서 Ubuntu를 사용 중입니다. 이 Win 11 스레드를 장악하려는 의도는 아니었습니다.
정확한 동작을 설명드리겠습니다.
게시물 내 이미지 업로드는 정상적으로 작동합니다.
사용자 아바타를 변경할 때, 이미지를 처음 업로드하고 아직 이미지 선택 다이얼로그에 있는 상태에서는 정상적으로 작동하는 것처럼 보입니다:
하지만 '변경 사항 저장’을 누르면 업로드된 이미지가 표시되지 않고 기본 이미지가 표시됩니다:
이미지는 실제로 업로드되었으며 소스(Source)로 들어가면 볼 수 있습니다:
개발자 도구의 URL을 변경하면 설정 페이지에서 정상적으로 표시됩니다:
즉… 차이는 URL입니다. 업로드된 사용자 지정 아바타는 “http://127.0.0.1:4200/uploads/default/original…..” 형태이지만, 페이지는 다음과 같은 URL로 표시하기를 원합니다.
“/user_avatar/127.0.0.1/user1/…….”
…여기서 제가 놓치고 있는 것이 무엇일까요?
참고: 토픽/게시물에서는 http://localhost:4200/uploads/default/original/……….etc 형태의 URL로 이미지가 정상적으로 표시됩니다.
도움 주시면 감사하겠습니다!
음, 원인을 파악하는 것 같아. 문제가 두 개야. 작동하는 걸 확인하면 다시 알려줄게.
음…
첫 번째 문제 - 아바타 경로는 IP 주소인 127.0.0.1이었는데, 다른 모든 URL은 localhost였습니다. 이것이 차이를 만들 수 있을까요? 어쨌든, rails c에 진입하여 변경했습니다 (커맨드 라인에서 discourse를 시작할 때 FORCE_HOST=localhost 등의 매개변수를 가져오지 않는 것 같아서, 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">
그리고 조금 더 파고들다 보니, 제가 먼저 jpeg 델리게이트를 설치하지 않고 imagemagick만 설치했기 때문이라는 것을 알게 되었습니다. 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 서버를 재시작하자마자 아바타가 즉시 작동하기 시작했습니다 
기초적인 사항을 확인하는 대신 ip/localhost URL 참조에 집착한 제 자신에게 화가 납니다…. 하지만 어쨌든, 지난 며칠간 꽤 많이 배웠고 지금은 작동하고 있습니다 