저는 Discourse 기반으로 만든 작은 포럼(themooster.net)을 운영하고 있는데, 몇 달 동안 업그레이드를 하지 않았습니다.
관리자(Admin) 화면의 추천 사항에 따라 업그레이드를 하려고 “Update” 버튼을 클릭했는데, 셸 프롬프트에서 직접 업그레이드를 수행해야 한다는 메시지와 함께 실행해야 할 세 줄의 명령어가 표시되었습니다:
cd /var/discourse
git pull
./launcher rebuild app
이 세 가지 명령어를 실행했습니다. 처음에는 "rebuild app"이 실패했는데, 작은 Linode 서버에 5GB의 여유 공간이 없었기 때문입니다. 더 많은 디스크 공간을 추가한 후 "rebuild app"은 정상적으로 완료된 것처럼 보였습니다.
하지만 사이트가 다시 시작되지 않았습니다.
여기저기 살펴보고 재시작을 해보았지만 여전히 사이트가 올라오지 않았으며, 조금 더 자세히 살펴본 결과 다음과 같은 상황이었습니다.
프론트엔드 nginx는 정상적으로 시작되는 것 같지만, 일반 사용자처럼 웹으로 포럼에 접속하려고 하면 nginx 프론트엔드에서 “502 Bad Gateway” 오류가 발생합니다.
/var/discourse/shared/standalone/log/var-log/postgres/current 파일에는 다음과 같은 오류로 가득 차 있습니다:
2021-04-17 13:54:37.785 UTC [7095] FATAL: database files are incompatible with server
2021-04-17 13:54:37.785 UTC [7095] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 10.12 (Debian 10.12-2.pgdg100+1).
포럼의 좋은 상태의 백업은 다음 디렉토리에 있습니다:
/var/discourse/shared/standalone/backups/default
“다시 재빌드(rebuild)해야 합니다. PostgreSQL 업그레이드에 대한 메시지를 무시했을 가능성이 크다고 추측합니다.”
라고 한 내용이 떠올라, “cd /var/discourse; git pull; ./launcher rebuild app” 명령을 다시 시도해 보았죠 … apparently 그 "rebuild"는 여러 번 시도해 볼 수 있는 것 같습니다.
이번에는 출력을 캡처해 두었습니다. 다만, 출력 메시지의 대부분을 무시했다는 것은 보증합니다. “./launcher rebuild app” 명령 하나만으로도 2020줄에 달하는 출력이 나옵니다. 모든 프로그램이 무엇이고 그 출력 메시지의 의미를 파악하는 데는 일요일이 한 달은 걸릴 것 같습니다. 그 출력에서 중요한 것을 무시하고 있는지 아닌지를 알 수 있는 현실적인 방법이 없습니다.
하지만 …
성공했습니다 !!
제 웹사이트가 최신 버전의 소프트웨어로 다시 구동되기 시작했습니다.
오늘의 교훈: “./launcher rebuild app” 명령이 정상 작동하는 사이트를 제공하지 못하면, 다시 시도해 보세요.