CPanel과 Apache가 포함된 VM에 설치하는 데 어려움

여러분 안녕하세요!

이것은 제 첫 번째 게시글입니다.

저는 phpBB에서 넘어온 신규 Discourse 사용자입니다.
2주 전, Apache가 기본적으로 80번과 443번 포트를 사용하기 때문에 Nginx를 사용하여 Docker 컨테이너에서 Discourse를 설치했습니다. 설치 가이드와 Nginx 멀티사이트 구성에 나와 있는 단계를 신중하게 따랐습니다.

**저는 일주일 동안 포럼을 실행하고 사용했으며, 플랫폼에 익숙해지기 위해 가끔 로그인만 했습니다. 한 사용자에게 가입해서 테스트해 달라고 했더니, 다음 날 포럼이 충돌했습니다. 브라우저에는 "이 토론 포럼을 구동하는 소프트웨어에서 예상치 못한 문제가 발생했습니다"라는 메시지가 표시되었습니다. 문제를 해결할 수 없었기 때문에 포럼 전체를 처음부터 다시 설치한 후, 마지막으로 사용 가능한 백업에서 스레드를 복원했습니다. 이것은 지난 목요일이었습니다. 이 모든 과정을 거친 후 포럼은 다시 정상 작동했습니다. 그런데 이제 다시 502 Bad Gateway Nginx 오류와 함께 다시 작동 중입니다. 저는 곧장 재빌드 앱을 실행했고, 다시 충돌하여 다음과 같은 오류가 발생했습니다:

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 580 exit 1>.

지난주에도 이 같은 일이 반복적으로 발생하여 결국 모든 것을 처음부터 다시 설치하게 되었습니다. 아직 공개하지 않았기 때문에 포럼은 사실상 비활성 상태입니다. 활동이 없는데도 계속 충돌한다면, 더 큰 사용자 그룹에서는 어떤 일이 발생할지 두려운 마음이 듭니다. 다음 명령어를 실행해 주세요: ./launcher enter app**

**cd /var/www/discourse**
**su discourse -c 'bundle exec rake db:migrate'**

**그리고 응답에서 제 주의를 끌었던 것이 이것입니다:

connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: the database system is starting up**

Postgres를 수동으로 재시작하고 재빌드를 다시 실행해 보았지만, 프로세스가 다시 중단되며 다음과 같은 오류 메시지가 표시되었습니다:

**FAILED**
**--------------------**
**Pups::ExecError: if [ -f /root/install_postgres ]; then**
**/root/install_postgres && rm -f /root/install_postgres**
**elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then**
**socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1**
**fi**
** failed with return #<Process::Status: pid 18 exit 1>**
**Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'**
**exec failed with the params {"tag"=>"db", "cmd"=>"if [ -f /root/install_postgres ]; then\n /root/install_postgres && rm -f /root/install_postgres\nelif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then\n socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container exit ; 1\nfi\n"}**
**bootstrap failed with exit code 1**

오류를 식별할 만큼 경험이 많은 사용자는 아니지만, Postgres가 언젠가 깨질 것 같다는 의심을 하고 있습니다. 지난주에는 이 때문에 모든 것을 재시작하고 처음부터 다시 시작했지만, 이것이 누구에게나 흔하거나 건강한 관행이라고 생각하지는 않습니다.

Discourse는 4코어, 6GB RAM, 180GB 디스크 공간을 가진 서버에서 실행되고 있습니다. 현재 이 Discourse 설치만 실행 중이므로, 제 이해로는 하드웨어로 인한 제한은 없는 상태입니다.

환영합니다, @Gustavo_Rip! 문제가 발생해 죄송합니다.

표준 설치(Standard install)를 수행했나요? 표준 설치의 경우 Nginx도 Apache도 필요하지 않습니다(두 프로그램 모두 기본적으로 포트 80과 443을 사용합니다). 이 중 하나라도 설치되어 있다면 시작 전에 제거해야 합니다.

멀티사이트(Multisite) 기능이 필요합니까? 필요하더라도 먼저 표준 설치를 수행한 다음, 이 가이드를 따르는 것을 권장합니다: Let’s Encrypt를 사용하고 리버스 프록시 없이 멀티사이트 구성하기. 어제 누군가에게 도움을 드렸는데, 올바른 호스트 이름을 사용하고 오렌지 클라우드(Orange cloud) 모드의 Cloudflare를 사용하지 않으면 정상적으로 작동하는 것 같습니다.

pfaffmann 감사합니다!!

다행히 저는 쉽게 포기하는 사람이 아니지만, 이러한 후속 문제들이 걱정됩니다. 특히 이 플랫폼에 대해 100% 익숙하지 않기 때문입니다.

기본적으로 제 CloudServer에는 Apache가 설치되어 있으며, 이를 제거하면 CPanel 및 기타 기능에 문제가 발생합니다. 처음 설치할 때 nginx가 훨씬 좋고 빠르다는 것을 읽고 시도해 보았지만, 언급했던 문제들이 발생했습니다. 따라서 서버의 운영 체제를 다시 설치하고 처음부터 다시 시작했으며, 다음 권장 사항을 따랐습니다:

여러 개의 사이트를 가지고 있는 것은 아닙니다. 적어도 아직까지는요. 제 CloudServer는 최대 5개 계정을 허용하기 때문입니다.

표준 설치의 경우, Docker, Discourse, Certbot을 설치하고 Let’s Encrypt 인증서를 다운로드하는 모든 단계를 따랐지만, discourse-setup을 실행했을 때 위에서 링크한 대로 수동 구성을 수행해야 했고, 재빌드를 수행하기 위해 app.yml 파일을 수동으로 구성해야 했습니다.

CPanel은 정말로 필요하지 않습니다. 아무런 가치를 더하지 않으면서 Discourse 설치를 훨씬 더 어렵게 만듭니다. 그리고 CPanel이 설치되어 있으면 Apache가 이미 존재하기 때문에 NGINX 지침을 따를 수 없습니다.

Apache와 CPanel을 제거할 수 있다면 그렇게 하세요. 제거할 수 없다면 다른 호스팅 서비스를 사용하는 것을 권장합니다.

사실, 현재 설정은 아예 작동하지 않을 수도 있습니다. 다음 명령을 실행해 볼 수 있을까요?

 docker run hello-world

어떤 호스팅 서비스를 추천하시나요? 아니면 Discourse 설치에 가장 많이 사용되는 호스팅 서비스는 무엇인가요?

네! 이 메시지가 표시됩니다:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

CPanel을 설치하지 않는 것이면 뭐든 좋습니다. 추천할 만한 서비스에 대한 여러 토론 주제가 있습니다. Digital Ocean은 사용하기 쉽습니다.

아. 그렇다면 Apache와 CPanel만 없애면 괜찮았을 텐데요. 현재 상황에서 가장 쉬운 방법은 이 것 같습니다.

다른 방법은 CPanel을 유지하고 기존 Apache를 리버스 프록시로 설정하는 것입니다. 하지만 설치 환경에 따라 함정이 너무 많아서 다른 사람들이 크게 도움이 되기 어려울 것입니다. 결국 혼자 해결하셔야 할 것 같습니다.

여기에 다양한 제안이 있습니다:

@pfaffman 님, 시간 내어 답변해 주셔서 감사합니다!!

Apache와 CPanel을 제거할 가능성은 낮을 것 같습니다. 아마 클라우드 서버 제공업체에서 Apache의 포트를 변경하여 Discourse와 같은 포트를 사용하지 않도록 설정할 수 있거나, CPanel을 Ferozo나 다른 서비스로 수정할 수 있을지 모르겠습니다. 정확히 알 수는 없지만, 문의해 보겠습니다.

감사합니다!