Nginx 설정:
리버스 프록시(haproxy) 뒤에 있을 경우, /var/discourse/config/nginx-config-sample.conf를 /etc/nginx/sites-enabled/discourse.conf 또는 유사한 대상 경로로 복사한 후, 필요에 따라 listen <yourreverseproxyport>를 수정하고 server_name의 _를 호스트명(예: subdmain.example.com)으로 대체하면 됩니다. 그 외에는 변경할 것이 없습니다.
페이지가 표시되지 않음(“Oops” 메시지) 및 이메일 관리자 등록이 작동하지 않는 문제:
최초 부팅 시 관리자 등록 페이지 이후 페이지가 표시되지 않는 원인은 Magick였습니다. 로그에 표시된 파일 /var/www/discourse/lib/letter_avatar.rb의 112번째 줄을 확인해 보니, 두 개의 magick 명령어가 응답하지 않는 것으로 나타났습니다. convert는 응답했으므로 해당 줄의 magick을 convert로 대체했습니다. 이 수정 후 또 다른 오류가 기록되었습니다. 파일에서 제공된 명령어와 동일한 절차로 시도해 보았으나 magick 명령어는 작동하지 않았고 convert도 실패했습니다. 참고: magick --version은 7.x였고, convert --version은 6.x였습니다. 원인은 먼저 apt로 imagemagick을 설치한 후 소스에서 magick 7을 설치했기 때문에 발생한 충돌이었습니다. magick이 convert 명령어가 오래되었다고 알려주었습니다. 그래서 magick 7만 사용하여 스크립트를 다시 실행했습니다. 이렇게 하자마자 문제가 즉시 해결되었고, 며칠간 기다렸던 새 페이지를 볼 수 있게 되었으며 이메일도 정상 작동했습니다. Magick은 정말 마법과 같습니다.
혼합 콘텐츠(mixed content) 문제는 여전히 남아 있지만, 웹사이트는 정상적으로 작동합니다.
참고: puma.rb에서 bind ENV.fetch("PUMA_BIND", "tcp://#{ENV['PUMA_BIND_ALL'] ? '' : '127.0.0.1:'}3000") 줄은 이 형태여야 합니다(첫 번째 게시물의 수정 사항).
3번 항목에 대한 수정, discourse의 https 강제 적용에 관하여: 정확한 이유는 알 수 없으나, 이제 브라우저에서 ‘혼합 콘텐츠’ 경고가 더 이상 표시되지 않습니다(캐시 업데이트 때문일 수도 있습니다). 따라서 지금은 모든 것이 정상입니다. 이제 스크립트를 마무리하기만 하면 됩니다.
디버그 관련해서 진전이 있나요? 제 쪽에서는 Magick 작업을 진행 중입니다.
약 50KB 크기의 이미지에서 브라우저에 팝업이 표시되며 다음과 같은 내용이 나옵니다: timeout -k 40.0 20 magick gif:/tmp/RackMultipart20250927-23598-xrrp6e.gif -auto-orient -background white -interlace none -flatten -debug all -quality 90 jpg:/tmp/image20250927-23598-9ujq3d.jpg
그런데 이미지는 로드되지 않습니다.
이미지 크기가 더 크면 팝업은 뜨지 않지만, 로딩 휠이 무한정 회전하며 결과가 나오지 않습니다. /var/www/discourse/log 에는 오류가 기록되지 않습니다.
근데 이미지가 3MB를 넘으면 실패하더라… 아마 내가 policy 설정을 너무 엄격하게 잡은 것 같아.
한번 시도해 봐!!!
docker 설치로 테스트 중인데, nginx, unicorn, redis, postgresql 그 외 나머지를 전부 단 하나의 컨테이너에 배포하는 건 좀 멍청한 것 같아… 전혀 합리적이지 못해. 그리고 대규모 배포를 위한 인프라 문서도 없거든. IT 분야에서 20년 넘게 일해 봤는데, 이런 인프라를 쓰면 가까운 미래에 문제가 생길 것 같아.
…
unknown OID 21096: failed to recognize type of ‘embeddings’. It will be treated as String.
pngquant worker: pngquant not found; please provide proper binary or disable this worker (–no-pngquant argument or :pngquant => false through options)
oxipng worker: oxipng not found; please provide proper binary or disable this worker (–no-oxipng argument or :oxipng => false through options)
jhead worker: jhead not found, jpegtran not found; please provide proper binary or disable this worker (–no-jhead argument or :jhead => false through options)
jpegoptim worker: jpegoptim not found; please provide proper binary or disable this worker (–no-jpegoptim argument or :jpegoptim => false through options)
…
이 작업을 수행한 후, 업로드 크기가 최대 518KB까지 가능합니다. 그 이상은 불가능합니다. 이는 이미지에만 해당됩니다. 기타 모든 문서, 오디오, 비디오 업로드는 정상적으로 작동합니다.
나머지 문제에 대한 임시 해결책:
관리자 설정, discourse.conf, nginx/sites-enables/discourse.conf, git 폴더를 확인했습니다. 마침 AdminPanel/Parameters/Files에서 "Composer media optimization image enabled"를 비활성화한 후 모든 것이 정상적으로 작동합니다. 이제 어떤 이미지도 업로드할 수 있습니다.
bundler: failed to load command: puma (/home/mry/.rbenv/versions/3.4.6/bin/puma)
/home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/cluster.rb:472:in 'Puma::Cluster#run': undefined method 'wait_readable' for nil (NoMethodError)
if read.wait_readable([0, @next_check - Time.now].max)
^^^^^^^^^^^^^^
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/launcher.rb:202:in 'Puma::Launcher#run'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/cli.rb:73:in 'Puma::CLI#run'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/bin/puma:10:in '<top (required)>'
from /home/mry/.rbenv/versions/3.4.6/bin/puma:25:in 'Kernel#load'
from /home/mry/.rbenv/versions/3.4.6/bin/puma:25:in '<top (required)>'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in 'Kernel.load'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in 'Bundler::CLI::Exec#kernel_load'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in 'Bundler::CLI::Exec#run'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in 'Bundler::CLI#exec'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in 'Bundler::Thor::Command#run'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in 'Bundler::Thor::Invocation#invoke_command'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in 'Bundler::Thor.dispatch'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in 'Bundler::CLI.dispatch'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in 'Bundler::Thor::Base::ClassMethods#start'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in 'Bundler::CLI.start'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:28:in 'block in <top (required)>'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in 'Bundler.with_friendly_errors'
from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:20:in '<top (required)>'
from /home/mry/.rbenv/versions/3.4.6/bin/bundle:25:in 'Kernel#load'
from /home/mry/.rbenv/versions/3.4.6/bin/bundle:25:in '<main>'
그 후 Puma가 스스로 재시작됩니다. 이를 방지하려면 어떻게 해야 할까요?
수정: 이는 Ruby 3.4.0부터 Puma에 속하는 문제인 것 같습니다. YJIT를 비활성화하여 해결되었습니다.