Olá a todos – sou novo no Discourse (parece incrível!) e, embora tenha algumas habilidades técnicas gerais, acredito que me classificaria como um iniciante no mundo de Docker/Linux VM.
Estou recebendo consistentemente a mensagem de erro abaixo… tentei executar o discourse doctor, mas sem sucesso. Espero que alguém possa me apontar na direção correta sobre o que pode estar acontecendo aqui. Muito obrigado antecipadamente! -Tim
[2021-06-11T04:09:29.733935 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2021-06-11T04:09:29.735773 #1] INFO -- : > sleep 5
2021-06-11 04:09:30.320 GMT [54] LOG: 0 8kB está fora do intervalo válido para o parâmetro "shared_buffers" (16 .. 1073741823)
2021-06-11 04:09:30.322 UTC [54] FATAL: o arquivo de configuração "/etc/postgresql/13/main/postgresql.conf" contém erros
I, [2021-06-11T04:09:34.739847 #1] INFO -- :
I, [2021-06-11T04:09:34.740097 #1] INFO -- : > su postgres -c 'createdb discourse' || true
createdb: erro: não foi possível conectar ao banco de dados template1: não foi possível conectar ao servidor: Nenhum arquivo ou diretório
Está o servidor rodando localmente e aceitando
conexões no socket de domínio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:34.860266 #1] INFO -- :
I, [2021-06-11T04:09:34.860745 #1] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: erro: não foi possível conectar ao servidor: Nenhum arquivo ou diretório
Está o servidor rodando localmente e aceitando
conexões no socket de domínio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.023426 #1] INFO -- :
I, [2021-06-11T04:09:35.023810 #1] INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql: erro: não foi possível conectar ao servidor: Nenhum arquivo ou diretório
Está o servidor rodando localmente e aceitando
conexões no socket de domínio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.137806 #1] INFO -- :
I, [2021-06-11T04:09:35.138325 #1] INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: erro: não foi possível conectar ao servidor: Nenhum arquivo ou diretório
Está o servidor rodando localmente e aceitando
conexões no socket de domínio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.257190 #1] INFO -- :
I, [2021-06-11T04:09:35.257476 #1] INFO -- : Terminando processos assíncronos
FALHA
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' falhou com retorno #<Process::Status: pid 80 exit 2>
Local da falha: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec falhou com os parâmetros "su postgres -c 'psql $db_name -c \\\"alter schema public owner to $db_user;\\\"'"
14ef6216494c846091ea6ce48143e2f25018b9d2579b6d4d0021d605f7f5e145
** FALHA NO BOOTSTRAP ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.
Oi @Meathead40
Estou enfrentando possivelmente o mesmo problema.
Consegui configurar o Discourse no Oracle Free em junho. Agora, executei novamente o script de configuração para alterar alguns parâmetros relacionados às configurações de e-mail.
O primeiro erro que consegui rastrear no log é FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors, mas, no meu caso, esse arquivo não existe. Além disso, o serviço do PostgreSQL não está em execução (na verdade, nem sequer está disponível como serviço).
Você conseguiu resolver esse problema? Alguém mais enfrentou o mesmo?
Obrigado pelas sugestões. Consegui reunir mais informações.
Isso é do log, por volta do momento do erro (as mensagens anteriores são de dias antes):
2021-08-02 13:33:16.980 UTC [2419] LOG: received smart shutdown request
2021-08-02 13:33:28.273 UTC [2419] LOG: background worker "logical replication launcher" (PID 2442) exited with exit code 1
2021-08-02 13:33:28.344 UTC [2437] LOG: shutting down
2021-08-02 13:33:28.552 UTC [2419] LOG: database system is shut down
Também obtive a configuração de buffers compartilhados:
shared_buffers = 128MB # min 128kB
#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
Estou executando a configuração em uma instalação existente com o objetivo de alterar alguns parâmetros de configuração. A primeira parte do script detecta o seguinte:
sudo ./discourse-setup
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
The configuration file containers/app.yml already exists!
. . . reconfiguring . . .
Saving old file as app.yml.2021-08-03-102829.bak
Stopping existing container in 5 seconds or Control-C to cancel.
+ /bin/docker stop -t 30 app
app
Found 0GB of memory and 1 physical CPU cores
setting db_shared_buffers = 0MB
setting UNICORN_WORKERS = 0
containers/app.yml memory parameters updated.
Continuando, passando todos os parâmetros de configuração e, finalmente, construindo… isso deve ser a pista que você está procurando:
2021-08-03 10:30:37.709 GMT [55] LOG: 0 8kB is outside the valid range for parameter "shared_buffers" (16 .. 1073741823)
2021-08-03 10:30:37.713 UTC [55] FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors
Isso não é um bom sinal! Esse número deve vir diretamente da saída de
free -g --si | awk ' /Mem:/ {print $2} '
Isso está relatando 703 MB, o que é (oficialmente) muito pequeno para o Discourse funcionar bem. Se você quiser se arriscar (e ficar sem suporte!), pode editar o número mágico 990 em
Acho que você precisa de uma instância maior com mais RAM.
O arquivo de configuração ainda tem a verificação desativada, mas acho que ela está sendo sobrescrita? Vou tentar modificar o valor conforme você indicou e relatar o que acontece.
Consegui completar a configuração e a reconstrução. Os passos foram:
Comentar a verificação de memória (#check_disk_and_memory) em /var/discourse/discourse-setup (não tenho certeza se isso é necessário)
Executar o comando sudo ./discourse-setup na pasta /var/discourse (isso gerará o arquivo /var/discourse/containers/app.yml e tentará prosseguir com a construção, que falhará conforme descrito acima)
Editar o app.yml para definir explicitamente db_shared_buffers: “128MB” e UNICORN_WORKERS: 1
Iniciar uma reconstrução com sudo ./launcher rebuild app (da pasta /var/discourse)
Sei que isso está no limite dos requisitos, mas vou acompanhar de perto como a instância se comportará.
Fico feliz que você tenha resolvido. No tópico vinculado e no tópico aqui ao qual ele se refere, sinto que é muito mais preferível alterar o número de “permissão mágica” de 990 para o número que representa o seu próprio sistema. “Desativar a verificação de memória” está, na verdade, causando problemas.
Está claro para mim que a equipe do Discourse precisa estabelecer um limite inferior de algum valor, para traçar uma linha entre configurações suportadas e não suportadas, e eles definiram formalmente esse limite em 1G, com uma flexibilização para 990. Mas 960 me parece bastante próximo de 990 e surge por razões semelhantes. Por outro lado, 703 parece bem diferente!
Oi Ed,
Concordo, vou mudar o número. Fiquei bastante surpreso com essa quantidade tão baixa de memória. As especificações da instância Oracle (Free tier) indicam 1 GB de memória, mas a versão gratuita oferece algo em torno de 60-70% disso. Estou um pouco confuso e não sei o motivo disso.
Talvez a instrução mais importante que falta seja não use a imagem padrão do servidor. O Discourse requer 1 GB de RAM (ou algo próximo aqui), e a imagem do Oracle Linux, por algum motivo, não deixa memória suficiente. Não sei se o CentOS funcionará, mas a imagem do Ubuntu está boa. Apenas certifique-se de escolher a instalação completa2 em vez da instalação “Mínima”.
Suspeito que o Oracle Linux padrão inclua várias coisas que não são necessárias para instalar o Discourse. Presumivelmente, seu principal caso de uso é hospedar servidores de banco de dados Oracle. Felizmente, a imagem do Ubuntu funciona bem. Meu site de testes/hospedeiro de comentários ainda está em execução. (Embora não haja muita atividade.)