41821
(41821)
7월 22, 2022, 1:46오전
1
안녕하세요, 제 discourse 서버가 유지보수 모드에 고정되어 있습니다.
의도적으로 수개월간 유지보수 모드를 유지해 왔으며, 처음 유지보수 모드를 설정한 이후 여러 버전으로 업그레이드를 진행했습니다.
세션이 만료되어 로그아웃되었고, 이제 다시 로그인할 수 없습니다.
discourse 서버에 SSH로 접속할 수는 있습니다.
다음 단계를 시도해 보았습니다:
discourse 서버에 SSH 접속
/var/discourse/ 디렉터리로 이동
./launcher enter app 실행
rails c 실행
여기서 유지보수 모드를 비활성화하기 위해 여러 가지를 시도해 보았습니다.
[1] pry(main)>
[2] pry(main)>
[3] pry(main)> Discourse.disable_readonly_mode(Discourse::READONLY_MODE_KEY)
=> true
[4] pry(main)> Discourse.disable_readonly_mode
=> true
SSH 창에서 포커스를 빼고 웹 브라우저로 전환하면 유지보수 모드 배너가 사라지는 것을 볼 수 있습니다.
그런 몇 초 후 다시 나타납니다.
이미 다음 문서를 참고했습니다:
Hi all,
My site is suddenly in ‘read only’ mode, and I don’t know why.
chathamhouse.sandbaggernews.com
A friend helped me set up Discourse, but unfortunately he’s left town for a Linux conference in Seattle
I’m trying to present this site to my professors tomorrow night. Really don’t know where to begin.
Thanks so much,
Stuck.
I did restore on my secondsite(multisite), but Read-only mode is enabled.
How can I login? or How can I turn off Read-only mode?
I tried:
./launcher enter app
discourse disable_readonly
But nothing’s changed. (I tried ./launcher rebuild app also)
도와주세요
첫 번째 링크된 주제에서 누군가가 컨테이너를 중지한 후 다시 시작하는 방식으로 효과를 봤다고 합니다. 그 방법도 시도해 볼 가치가 있을까요?
41821
(41821)
7월 22, 2022, 5:31오전
3
제안해 주셔서 감사합니다. 불행히도 문제는 해결되지 않았습니다.
아래 명령어를 실행해 보았어요.
docker ps
docker kill app
docker start app
흥미로운 점은 수동으로 읽기 전용 모드를 활성화해 본 것도 있다는 거예요.
예를 들면:
[8] pry(main)> Discourse.enable_readonly_mode
=> true
[9] pry(main)> Discourse.disable_readonly_mode
=> true
[10] pry(main)>
이렇게 해 보니까 배너가 다시 나타나고, Login is disabled while the site is in read only mode.라는 메시지가 뜨면서 로그인 버튼조차 클릭할 수 없었어요. 또한 아래 배너도 함께 보였어요:
This site is in read only mode. Please continue to browse, but replying, likes, and other actions are disabled for now.
다시 disable_readonly_mode를 호출하면 유지 관리 모드 배너가 사라지고 로그인 버튼을 클릭할 수 있어요. Discourse가 인증 SSO 제공자로 나를 넘겨주기도 해요.
하지만 discourse로 다시 리다이렉트되면 "The site is in read only mode. Interactions are disabled."라고 쓰인 전체 페이지가 나타납니다.
조사를 좀 해봤는데, 아직 해결책은 찾지 못했지만 /u/admin-login 링크가 read_only를 우회하여 로그인할 수 있게 해주는 것 같습니다:
tgxworld
(Alan Tan)
7월 22, 2022, 7:16오전
5
@41821 Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)를 시도해 볼 수 있나요?
무엇을 해도 해당 상태에서 빠져나오지 못했습니다.
Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)를 실행하면 잠시 동안 읽기/쓰기(R/W) 모드로 전환되었다가 바로 다시 읽기 전용(R/O) 모드로 되돌아갑니다. 로그에서도 특별한 내용은 발견되지 않았습니다. Redis를 플러시해도 도움이 되지 않으며, Redis 키를 수동으로 지워도 마찬가지입니다.
이것은 버그일 가능성이 매우 높습니다. 이전까지 정상적으로 작동하던 버전이었던 2.8.3으로 2.8.7을 되돌렸더니 문제가 해결되었기 때문입니다.
버그가 어디서 도입되었는지 파악하려고 코드를 살펴봤지만, 결국 원인을 찾지 못했습니다.
tgxworld
(Alan Tan)
8월 10, 2022, 1:54오전
8
이 사이트가 셀프호스팅된 사이트인가요? 읽기 전용 로직은 올바른 Redis 키 설정에 전적으로 의존하므로, Redis를 플러시하면 모든 문제가 해결될 것입니다.