Dificuldade na instalação em VM que inclui CPanel e Apache

Olá a todos!

**Este é o meu primeiro post. **

Sou um novo usuário do Discourse vindo do phpBB.
Duas semanas atrás, instalei o Discourse em um contêiner Docker usando Nginx, já que o Apache usa as portas 80 e 443 por padrão. Segui cuidadosamente os passos descritos nos guias de instalação e na configuração multisite do Nginx.

Consegui rodar e usar o fórum por uma semana, apenas acessando ocasionalmente para me familiarizar com a plataforma. Quando pedi a um dos usuários para se registrar e testar, o fórum travou no dia seguinte. O navegador exibiu a mensagem: “O software que alimenta este fórum de discussão encontrou um problema inesperado.” Não consegui consertar, então reinstalei todo o fórum do zero e restaurei os tópicos do último backup disponível. Isso foi na última quinta-feira. Depois de tudo isso, o fórum voltou a funcionar. Agora, ele travou novamente com um erro 502 Bad Gateway do Nginx. Fui direto para o rebuild app e ele travou novamente com o erro:

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

Isso aconteceu repetidamente na semana passada e me levou a reinstalar tudo do zero. O fórum está praticamente inativo porque ainda não o tornei público. Tenho medo da ideia de que, se ele continuar travando sem atividade, o que pode acontecer com um grupo maior de usuários? Execute estes comandos: ./launcher enter app

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

E na resposta, vejo isto que me chamou a atenção:

conexão com o servidor no socket "/var/run/postgresql/.s.PGSQL.5432" falhou: FATAL: o sistema de banco de dados está inicializando

Tentei reiniciar o Postgres manualmente e executar o rebuild novamente, mas o processo foi interrompido novamente com esta mensagem de erro:

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

Não sou realmente um usuário experiente para identificar o erro, mas suspeito que o Postgres falhe em algum momento. Isso me levou a reiniciar tudo e começar de novo na semana passada, mas não acho que essa seja uma prática comum ou saudável para ninguém.

O Discourse está rodando em um servidor com 4 núcleos, 6GB de RAM e 180GB de espaço em disco. Atualmente, estou executando apenas esta instalação do Discourse, então, pelo que entendi, não estou limitado pelo hardware.

Bem-vindo, @Gustavo_Rip! Sinto muito que você esteja tendo problemas.

Você fez uma instalação padrão? Com uma instalação padrão, você não precisa de Nginx nem de Apache (e ambos usam as portas 80 e 443 por padrão). Se você tiver algum deles instalado, deve removê-los antes de começar.

Você precisa de multisite? Mesmo que precise, eu recomendaria primeiro fazer uma instalação padrão e, em seguida, seguir este guia: Configuração de Multisite com Let’s Encrypt e sem Proxy Reverso. Ajudei alguém com isso ontem, e parece que se você usar os nomes de host corretos e não usar o Cloudflare com a nuvem laranja, funciona perfeitamente.

2 curtidas

Obrigado, pfaffmann!!

Felizmente, não sou uma daquelas pessoas que desistem facilmente, embora esses problemas subsequentes me preocupem, especialmente porque não estou 100% familiarizado com esta plataforma.

Por padrão, meu CloudServer tem o Apache instalado e, se eu o remover, isso causa problemas com o CPanel e outros recursos. Eu o removi durante a primeira instalação porque li que o nginx era muito melhor e mais rápido, mas tive os problemas que mencionei. Portanto, reinstalei o sistema operacional no servidor e comecei de novo, seguindo esta recomendação:

Não é como se eu tivesse vários sites, pelo menos não ainda, porque meu CloudServer permite até 5 contas.

Quanto à instalação padrão, segui todos os passos para instalar o Docker, Discourse, Certbot e baixar os certificados do Let’s Encrypt, mas quando executei o discourse-setup, tive que realizar a configuração manual seguindo o link acima e configurando manualmente o arquivo app.yml para realizar a reconstrução.

Você realmente não quer o CPanel. Ele não adiciona nada e torna muito mais difícil instalar o Discourse. E se você o tiver, não poderá seguir as instruções do NGinx, pois o Apache já está no caminho.

Se você puder remover o Apache e o CPanel, faça isso. Se não puder, eu recomendaria um serviço de hospedagem diferente.

Na verdade, o que você tem pode não funcionar, você consegue executar

docker run hello-world
1 curtida

Qual serviço de hospedagem você recomenda? ou qual é o mais usado para instalações do Discourse?

Sim! esta é a mensagem:

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/

Qualquer um que não instale CPanel. Existem vários tópicos sobre os recomendados. O Digital Ocean é fácil.

Ah. Então, se você pudesse simplesmente se livrar do Apache e do CPanel, estaria em boa situação. Esta parece ser a maneira mais fácil de avançar a partir de onde você está.

A outra maneira de seguir é manter o CPanel e criar uma forma de fazer seu Apache existente ser um proxy reverso. Você estará por conta própria, no entanto, pois existem muitos furos específicos da instalação para as pessoas poderem ajudar muito aqui.

Muitas sugestões aqui:

Obrigado @pfaffman pelo seu tempo e respostas!!

Não acho provável que eu remova o Apache e o CPanel. Talvez meu provedor de servidor em nuvem possa modificar as portas do Apache para que ele não use as mesmas do Discourse, eliminando assim o nginx, ou modificar o CPanel para o Ferozo ou outro serviço. Não sei, mas vou perguntar.

Atenciosamente!

1 curtida