어떤 가이드인가요?
포트 2045가 뭔지 정확히 떠오르지 않네요 ![]()
몇 달 전 몇 번의 설치 실패 후 2045로 변경했지만, #로 주석 처리되어 있어 이 문제는 해당 포트와는 무관합니다.
다음 가이드를 따랐습니다: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
음… 변경된 것이었네요. 손이 미끄러지는 실수는 흔히 일어나는 일이죠 ![]()
@Benjamin_D 제 nginx 파일에는 2045 포트가 없습니다. 위로 스크롤하면 확인할 수 있습니다. app.yml의 해당 행은 #으로 주석 처리되어 있으므로, 왜 그 부분을 지적하는지 이해가 되지 않습니다. 문제의 원인이 거기에서 비롯되었다면 에러 메시지에 명시되었을 텐데, 확실히 그렇지 않습니다.
원하시면 app.yml 파일에서 해당 행을 삭제할 수 있습니다. 그 경우 결과는 이전과 동일할 것입니다.
처음 설치했을 때 컨테이너에서 포트 80 또는 443이 사용 중이라는 메시지가 떴던 것으로 기억합니다. 그래서 어딘가에 무작위 포트를 추가하라는 내용을 보고 그렇게 한 것 같습니다. 하지만 다시 한번 강조하지만, 해당 행은 #으로 주석 처리되어 있으므로 고려 대상이 되지 않아야 합니다.
전혀 아닙니다. 우리는 단순히 당신의 단계를 재추적하고, 우리의 설정을 당신의 것과 비교해 보고 있을 뿐입니다.
이 오류는 확실히 실패한 PostgreSQL 업그레이드와 관련이 있습니다.
문제를 해결하려면 메타 토픽을 확인해 보세요.
postgres 업그레이드 관련 주제를 확인하겠습니다. 다른 오류가 발생하면 다시 말씀드리겠습니다.
Postgres를 10에서 12로 업그레이드한 후에도 다음 명령을 실행하면 여전히 문제가 발생합니다: ./launcher rebuild app
sudo ./launcher rebuild app
fatal: not a git repository (or any of the parent directories): .git
Stopping old container
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Already up to date.
I, [2020-07-13T13:34:21.635079 #1] INFO -- : Loading --stdin
I, [2020-07-13T13:34:21.643465 #1] INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-13T13:34:21.713536 #1] INFO -- : Generating locales (this might take a while)...
Generation complete.
I, [2020-07-13T13:34:21.713917 #1] INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-13T13:34:21.720693 #1] INFO -- :
I, [2020-07-13T13:34:21.721042 #1] INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-13T13:34:21.724919 #1] INFO -- :
I, [2020-07-13T13:34:21.725387 #1] INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-13T13:34:21.728768 #1] INFO -- :
I, [2020-07-13T13:34:21.729117 #1] INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-13T13:34:21.732712 #1] INFO -- :
I, [2020-07-13T13:34:21.733008 #1] INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-13T13:34:21.735981 #1] INFO -- :
I, [2020-07-13T13:34:21.736200 #1] INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/07/13 13:34:21 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2020-07-13T13:34:21.751266 #1] INFO -- :
I, [2020-07-13T13:34:21.752242 #1] INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-13T13:34:21.757300 #1] INFO -- :
I, [2020-07-13T13:34:21.757817 #1] INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-13T13:34:21.761287 #1] INFO -- :
I, [2020-07-13T13:34:21.761706 #1] INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-13T13:34:21.765114 #1] INFO -- :
I, [2020-07-13T13:34:21.765725 #1] INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-13T13:34:21.770573 #1] INFO -- :
I, [2020-07-13T13:34:21.781057 #1] INFO -- : File > /etc/service/postgres/run chmod: +x chown:
I, [2020-07-13T13:34:21.791681 #1] INFO -- : File > /etc/service/postgres/log/run chmod: +x chown:
I, [2020-07-13T13:34:21.800244 #1] INFO -- : File > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2020-07-13T13:34:21.808363 #1] INFO -- : File > /root/upgrade_postgres chmod: +x chown:
I, [2020-07-13T13:34:21.809170 #1] INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: cannot access '/var/lib/postgresql/10/main': No such file or directory
I, [2020-07-13T13:34:21.817357 #1] INFO -- :
FAILED
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main failed with return #<Process::Status: pid 42 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
3e7af3d49be0616ae52ee03d6ee0867d25e5db96de40d92c7ec7abeded5d3262
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
아무것도 모르겠어요, 포기합니다… ;/
"fatal: not a git repository (or any of the parent directories): .git " 이 메시지는 무슨 뜻인가요?
또한 다음과 같은 오류도 발생합니다.
sudo ./discourse-setup
The configuration file containers/app.yml already exists!
. . . reconfiguring . . .
Saving old file as app.yml.2020-07-13-153931.bak
Stopping existing container in 5 seconds or Control-C to cancel.
+ /usr/bin/docker stop -t 10 app
app
Found 4GB of memory and 2 physical CPU cores
setting db_shared_buffers = 1024MB
setting UNICORN_WORKERS = 4
containers/app.yml memory parameters updated.
Hostname for your Discourse? [cp2077.eu]:
Checking your domain name . . .
WARNING: Port 443 of computer does not appear to be accessible using hostname: cp2077.eu.
WARNING: Connection to http://cp2077.eu (port 80) also fails.
This suggests that cp2077.eu resolves to some IP address that does not reach thi s
machine where you are installing discourse.
The first thing to do is confirm that cp2077.eu resolves to the IP address of th is server.
You usually do this at the same place you purchased the domain.
If you are sure that the IP address resolves correctly, it could be a firewall i ssue.
A web search for "open ports YOUR CLOUD SERVICE" might help.
This tool is designed only for the most standard installations. If you cannot re solve
the issue above, you will need to edit containers/app.yml yourself and then type
./launcher rebuild app
웹사이트는 443 포트(SSL)를 사용하여 보안이 설정된 상태로 정상 작동 중인데, 왜 웹사이트에 도달할 수 없다고 말하는지 이해가 되지 않습니다. 더 이상 무엇을 해야 할지 모르겠습니다. 도와주세요.
리버스 프록시를 사용하고 있으므로 discourse-setup을 사용할 수 없습니다. 또한 설정 파일에서 Let’s Encrypt 템플릿을 제거해야 할 가능성이 높습니다.
Postgres 문제의 원인은 알 수 없습니다.
nginx 파일의 프록시 관련 줄을 말씀하시는 건가요?
2월에 설치했던 이전 인스톨 위에 discourse를 다시 설치하려는 건가요? 그렇다면 첫 번째 게시물의 스크린샷에 보이는 기존 app.yml 파일과, postgresql을 10에서 12로 업그레이드해야 하는 문제가 생길 수 있습니다. (에러 메시지를 보면 업그레이드를 하지 않은 것 같지만, 호스트에서는 했을지 모르겠고 데이터 컨테이너에서는 하지 않았을 수도 있으며, 해당 컨테이너가 더 이상 존재하지 않을 수도 있고, 이전 인스톨의 상태가 정확히 어떤지 모르겠습니다.)
백업이 있나요? 아니면 새로 설치하고 싶으신 건가요?
pfaffman님이 말씀하신 것은 리버스 프록시(nginx)를 사용하고 있으므로 discourse-setup 스크립트가 작동하지 않을 수 있다는 의미인 것 같습니다(저는 리버스 프록시를 사용하여 discourse를 실행해 본 적이 없어서 이것이 사실인지 모르겠습니다). app.yml을 올바르게 정의하면 discourse-setup을 실행하지 않아도 문제없을 것입니다.
이것은 postgres 10이 없는 컨테이너에서 이 코드를 실행하려고 시도하는 것처럼 보입니다(아마도 버전 12를 사용 중일 것입니다). 이것이 원하시는 것이라면, 그리고 첫 번째 게시글에서 정의한 대로 템플릿이 templates/postgres.template.yml이라면, 기기의 /var/discourse 위치에 있는 discourse_docker 저장소가 오래되었을 수 있습니다.
설치된 discourse가 최신 버전인지 오래된 버전인지 확인해 보세요. 저장소를 업데이트하면 해당 문제를 해결할 수 있을 것입니다:
cd /var/discourse
git pull
그 후 재빌드(rebuild) 단계를 실행하세요.
또한 오래된 컨테이너를 사용하지 않도록 discourse 컨테이너가 파괴되고 다시 생성되었는지(그냥 중지되고 다시 시작된 것이 아니라) 확인하세요(디스코urs 재빌드에서 이미 그렇게 처리했을 것 같지만, 혹시 모를 경우에 대비하여).
작동하지 않고 백업이 있다면 @Benjamin_D님이 말씀하신 대로 새 인스턴스에 새로 설치하는 것이 좋습니다.
저는 기존 설치 위에 "또 다른 도메인"으로 Discourse를 설치하려고 시도하고 있습니다. 정확히 말하면, 동일한 서버에 두 개의 도메인을 설정하는 것입니다. 제 무지를 용서해 주십시오. app.yml의 어느 부분에서 PostgreSQL을 찾을 수 있을까요? app.yml을 확인해 봤는데, 관련되는 것이 보이지가 않습니다.
기존에 사용했던 파일들의 백업은 가지고 있습니다. 새 서버를 위한 새로운 app.yml에 이전 설치 환경의 정보를 일부 복사해 넣었습니다.
여기서도 제 무지를 용서해 주십시오. “proxy” nginx라고 말씀하실 때, 이 부분을 말씀하시는 건가요?
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
이전에 PostgreSQL 10을 사용했지만, 어제 12로 업그레이드했습니다.
이 경우 새 인스턴스를 시작하고 싶습니다. 모든 것이 새로 설치되도록 확실히 하기 위해 기존 인스턴스를 어떻게 제거해야 할까요? 정말 감사합니다.
같은 서버에 디스커스(Discourse) 인스턴스가 두 개라면, 그것은 멀티사이트 설정에 해당하며 완전히 다른 이야기입니다 ![]()
지금으로서는 첫 번째 사이트의 백업을 확보하고, PG12로 업그레이드하여 정상적으로 작동하는 것을 확인한 후, 멀티사이트 모험에 도전하는 것이 가장 좋을 것 같습니다. 저는 멀티사이트 설정에 대해서는 전혀 자격이 없으니까요 ![]()
벤jamin님, 감사합니다.
처음부터 새로 시작하겠습니다. 첫 번째 사이트의 백업은 가지고 있지만, 그것은 단순한 테스트용이었으므로 더 이상 필요하지 않습니다. 깨끗하게 다시 시작하고 싶습니다.
새로 시작할 수 있도록 기존 컨테이너와 모든 데이터를 삭제하는 방법은 무엇인가요?
로컬에서 discourse_docker 저장소(경로 /var/discourse)를 먼저 업데이트해 보셨나요? 작동하지 않았나요?
리버스 프록시에 대해 말씀드리자면, nginx가 요청의 중간에 위치하여 올바른 서비스(이 경우 discourse)로 라우팅하기 때문이며, 이는 서비스가 인터넷에 직접 노출되는 대신 nginx가 리버스 프록시 역할을 수행하고 인터넷에 노출된 포트(80 및 443)가 nginx 서비스에 속하기 때문입니다.
이상하게도, 벤자민이 기억하시겠지만 제가 과거에 관련해서도 게시물을 올린 적이 있어서 아실 텐데, 지난 2월에는 제 도메인 중 하나에서 discourse 설정이 잘 작동했습니다. 그래서 nginx와 함께 discourse를 실행해 본 사람이 한 명도 없다는 사실에 놀랐습니다. 솔직히 말해서, 어제 같은 서버를 사용하여 다른 도메인에 discourse를 설치하려고 할 때까지 완벽하게 잘 작동했습니다.
discourse_docker에서 정확히 무엇을 찾아봐야 하나요? 해당 폴더의 내용은 다음과 같습니다.
discourse_docker$ ls
bin containers discourse-setup launcher README.md scripts templates
cids discourse-doctor image LICENSE samples shared
위에서 언급했듯이, 저장소를 업데이트하려면 git pull만 실행하면 됩니다(/var/discourse 디렉터리 자체가 로컬 저장소입니다):
그 후 rebuild 명령을 실행하세요.
nginx를 앞에 배치하여 사용하는 경우도 있지만, Discourse 전용으로 독립된 머신에 표준 설치하는 경우보다는 훨씬 적을 것입니다. 또한 discourse-setup가 깨지는지 저도 알지 못합니다. 이는 귀하의 결과에 기반한 추측일 뿐이며, 오류가 DNS 및 오픈 포트 확인 시 발생했고(호스트의 포트 80과 443을 사용하는 것이 귀하의 discourse 컨테이너가 아니라는 점을 고려할 때) 그렇게 판단한 것입니다.
