최근 업데이트 후 포럼이 작동하지 않습니다

방금 Discourse 엔진 업데이트 버튼을 눌렀더니 500 오류가 발생했습니다:

이 토론 포럼을 구동하는 소프트웨어에서 예상치 못한 문제가 발생했습니다. 불편을 드려 죄송합니다.

안전 모드도 작동하지 않습니다. 포럼 URL은 https://forum.dudin.tv 입니다.

포럼을 복구하는 방법은 무엇이며, 어떤 로그를 확인해야 하나요?

메타에 오신 것을 환영합니다!
그 문제를 겪고 있는 사람은 당신만이 아닙니다

게시판의 /logs를 방문해서 눈에 띄는 오류가 있는지 확인해 주시겠어요?

.launcher rebuild app 명령을 실행했는데 프론트엔드에서 아무런 차이가 없습니다 (여전히 500 오류가 발생하네요)… “재빌드” 후 다른 명령어를 실행해야 하나요?

감사합니다!

root@forum:/var/discourse/shared/standalone/log/rails# tail -n 60 production.log 명령어로 확인해 보았더니 몇 가지 오류가 있는데, 개발자가 아니라서 어떻게 처리해야 할지 모르겠습니다 :confused:

Started GET "/.env" for 78.153.140.179 at 2024-05-17 15:16:40 +0000
ActionController::RoutingError (No route matches [GET] "/.env")
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
  Rendered exceptions/not_found.html.erb within layouts/no_ember (Duration: 181.9ms | Allocations: 3554)
  Rendered layout layouts/no_ember.html.erb (Duration: 2208.3ms | Allocations: 42766)
Failed to handle exception in exception app middleware : ActionView::Template::Error : No such file or directory @ rb_sysopen - /var/www/discourse/node_modules/ember-source/package.json
Started GET "/" for 143.178.246.7 at 2024-05-17 15:16:44 +0000
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007fc09c95c1d0 @theme_ids=[]>)
lib/homepage_helper.rb:5:in `resolve'
lib/homepage_constraint.rb:12:in `matches?'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
Started GET "/" for 5.164.29.116 at 2024-05-17 15:17:43 +0000
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007fc09c94eb20 @theme_ids=[]>)
lib/homepage_helper.rb:5:in `resolve'
lib/homepage_constraint.rb:12:in `matches?'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
Job exception: PG::UndefinedTable: ERROR:  relation "chat_mention_notifications" does not exist
LINE 1: ...ntions.chat_message_id = c_msg.id LEFT OUTER JOIN chat_menti...
                                                             ^


start
done
Job exception: PG::UndefinedTable: ERROR:  relation "problem_check_trackers" does not exist
LINE 1: SELECT "problem_check_trackers".* FROM "problem_check_tracke...
                                               ^


Job exception: PG::UndefinedTable: ERROR:  relation "discourse_automation_automations" does not exist
LINE 9:  WHERE a.attrelid = '"discourse_automation_automations"'::re...

이 로그 타임스탬프는 커맨드라인 리빌드를 실행하기 전인가요, 아니면 후인가요?

오류는 모두 데이터베이스 마이그레이션이 실행되지 않았음을 시사합니다. 이는 이상한 부분입니다. 왜냐하면 성공적인 커맨드라인 리빌드의 일부로 마이그레이션은 반드시 실행되어야 하니까요.

저는 이 타임스탬프 이후에 리빌드를 실행했습니다.

CLI 재구성이 완료되었는데, 여전히 오류가 발생하나요?

새로운 로그가 있습니다:

Started GET "/" for 143.178.246.7 at 2024-05-17 15:31:37 +0000
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007fc09e86a838 @theme_ids=[]>)
lib/homepage_helper.rb:5:in `resolve'
lib/homepage_constraint.rb:12:in `matches?'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
Started GET "/" for 143.178.246.7 at 2024-05-17 15:31:38 +0000
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007fc09e636698 @theme_ids=[]>)
lib/homepage_helper.rb:5:in `resolve'
lib/homepage_constraint.rb:12:in `matches?'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
Job exception: PG::UndefinedTable: ERROR:  relation "chat_mention_notifications" does not exist
LINE 1: ...ntions.chat_message_id = c_msg.id LEFT OUTER JOIN chat_menti...
                                                             ^


Started GET "/" for 143.178.246.7 at 2024-05-17 15:33:36 +0000
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007fc0ad283528 @theme_ids=[]>)
lib/homepage_helper.rb:5:in `resolve'
lib/homepage_constraint.rb:12:in `matches?'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
start
done
Started GET "/" for 90.240.110.180 at 2024-05-17 15:33:47 +0000
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007fc0ad17c2d8 @theme_ids=[]>)
lib/homepage_helper.rb:5:in `resolve'
lib/homepage_constraint.rb:12:in `matches?'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'

서로 다른 오류가 발생하는 것으로 보입니다. 추가적인 오류가 있습니다:

root@forum:/var/discourse/shared/standalone/log/rails# tail -n 60 production.log
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
Started GET "/l" for 13.57.1.58 at 2024-05-17 15:34:45 +0000
ActionController::RoutingError (No route matches [GET] "/l")
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
Started GET "/lo" for 13.57.1.58 at 2024-05-17 15:34:45 +0000
  Rendered exceptions/not_found.html.erb within layouts/no_ember (Duration: 2.3ms | Allocations: 185)
  Rendered layout layouts/no_ember.html.erb (Duration: 13.9ms | Allocations: 1405)
Failed to handle exception in exception app middleware : ActionView::Template::Error : No such file or directory @ rb_sysopen - /var/www/discourse/node_modules/ember-source/package.json
ActionController::RoutingError (No route matches [GET] "/lo")
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
ActionController::RoutingError (No route matches [GET] "/logs")
config/initializers/100-silence_logger.rb:27:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
Failed to handle exception in exception app middleware : ActionView::Template::Error : No such file or directory @ rb_sysopen - /var/www/discourse/node_modules/ember-source/package.json
  Rendered exceptions/not_found.html.erb within layouts/no_ember (Duration: 239.6ms | Allocations: 4049)
Started GET "/lo" for 13.57.1.58 at 2024-05-17 15:34:47 +0000
ActionController::RoutingError (No route matches [GET] "/lo")
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
  Rendered exceptions/not_found.html.erb within layouts/no_ember (Duration: 3.9ms | Allocations: 246)
  Rendered layout layouts/no_ember.html.erb (Duration: 16.0ms | Allocations: 1464)
Failed to handle exception in exception app middleware : ActionView::Template::Error : No such file or directory @ rb_sysopen - /var/www/discourse/node_modules/ember-source/package.json
  Rendered layout layouts/no_ember.html.erb (Duration: 1179.6ms | Allocations: 29667)
Failed to handle exception in exception app middleware : ActionView::Template::Error : No such file or directory @ rb_sysopen - /var/www/discourse/node_modules/ember-source/package.json
Started GET "/log" for 13.57.1.58 at 2024-05-17 15:34:47 +0000
ActionController::RoutingError (No route matches [GET] "/log")
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
  Rendered exceptions/not_found.html.erb within layouts/no_ember (Duration: 1.4ms | Allocations: 185)
  Rendered layout layouts/no_ember.html.erb (Duration: 9.5ms | Allocations: 1403)
Failed to handle exception in exception app middleware : ActionView::Template::Error : No such file or directory @ rb_sysopen - /var/www/discourse/node_modules/ember-source/package.json
Started GET "/" for 143.178.246.7 at 2024-05-17 15:35:17 +0000
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007fc0a0b75800 @theme_ids=[]>)
lib/homepage_helper.rb:5:in `resolve'
lib/homepage_constraint.rb:12:in `matches?'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'

다음 내용을 시도해 보시겠어요?

cd /var/discourse
./launcher enter app
ls -l node_modules | grep ember-source

아래와 같은 결과가 나와야 합니다.

# ls -l node_modules | grep ember-source
drwxr-xr-x   9 discourse discourse  4096 May  2 00:23 ember-source
drwxr-xr-x   4 discourse discourse  4096 May  2 00:23 ember-source-channel-url

아무것도 없는 것 같습니다 :confused:

root@forum:/var/discourse# ls -l node_modules | grep ember-source
ls: cannot access 'node_modules': No such file or directory

CLI 재구성을 실행했을 때, 확실히 성공적으로 완료되었나요? 중간쯤에서 실패한 것 같습니다.

그것은 다음과 같이 주장합니다.

/var/lib/docker가 위치한 디스크의 남은 공간이 5GB 미만입니다. 계속하려면 더 많은 공간이 필요합니다`

아마도 이것이 원인일까요?.. 볼륨을 늘려서 시도해 보겠습니다.

25GB이면 충분할 거라고 생각했습니다.

디스크를 35Gb로 재조정했지만 /var/discourse가 삭제된 것으로 보입니다.

root@forum-app:/var/www/discourse# cd /var/discourse
bash: cd: /var/discourse: No such file or directory

폴더를 복원하는 방법은 무엇인가요?

다음 파일들은 남아 있습니다:

root@forum-app:/var/www/discourse# ls
app         config.ru        discourse.sublime-project  jsconfig.json  migrations    public     test
bin         CONTRIBUTING.md  docs                       lefthook.yml   node_modules  Rakefile   tmp
Brewfile    COPYRIGHT.md     Gemfile                    lib            package.json  README.md  translator.yml
CODEOWNERS  d                Gemfile.lock               LICENSE.txt    patches       script     vendor
config      db               images                     log            plugins       spec       yarn.lock

Docker 컨테이너 안에서 실행하고 있는 것 같습니다. exit를 입력하여 서버로 돌아가세요.

그런 다음 ./launcher rebuild app을 실행하여 재빌드하세요.

이제 훨씬 더 오래 잘 작동하고 상태도 좋습니다!
하지만 이제 502 Bad Gateway 오류가 발생했습니다 :slight_smile:

포럼이 작동하고 있어요!

정말 감사합니다! 빠른 답변에 감사드립니다 :heart: