Instalando Discourse com Apache2 instalado

Olá!
Estou executando um servidor Ubuntu 18.04 com o Apache instalado. Quero instalar o Discourse em uma porta diferente e, em seguida, usar um proxy reverso via Apache para torná-lo acessível por meio de uma URL. Tentei criar um app.yml, alterar as configurações nele e executei: ./launcher rebuild app. Tudo funciona bem até o final, onde recebo um erro ‘Failed’ com a seguinte mensagem:

FAILED

Pups::ExecError: cd /var/www/discourse && su discourse -c ‘bundle exec rake themes:update assets:precompile’ failed w ith return #<Process::Status: pid 3801 exit 134>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn’
exec failed with the params {“cd”=>“$home”, “hook”=>“assets_precompile”, “cmd”=>[“su discourse -c ‘bundle exec rake t hemes:update assets:precompile’”]}
2beda643ff51279f145c96cdede83a1d6b65f67e00225be74100c8fb9fe3f790
** FAILED TO BOOTSTRAP ** por favor, role para cima e procure mensagens de erro anteriores; pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.

Tentei usar o discourse-doctor, mas isso não me disse nada. Alguém tem uma solução para corrigir isso? Além disso, estou usando o Apache porque acho mais fácil de usar e tenho mais experiência com ele. Portanto, trocar para o Nginx não é uma opção.
Aqui estão alguns logs acima da seção de falha:

MaxMind IP database updates require a license
Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com
MaxMind IP database updates require a license
Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com
98765.375844045 Compressing: vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js
terser ‘/var/www/discourse/public/assets/_vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js’ -m -c -o ‘/var/www/discourse/public/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js’ --source-map “base=‘/var/www/discourse/public/assets’,root=‘/assets’,url=‘/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js.map’”
<— Last few GCs —>

[3798:0x4872980] 2679 ms: Scavenge 108.1 (126.5) → 97.8 (129.8) MB, 9.0 / 0.0 ms (average mu = 1.000, current mu = 1.000) allocation failure
[3798:0x4872980] 2823 ms: Scavenge 111.4 (129.8) → 101.3 (132.8) MB, 8.4 / 0.0 ms (average mu = 1.000, current mu = 1.000) allocation failure
[3798:0x4872980] 2964 ms: Scavenge 114.8 (133.0) → 104.8 (135.3) MB, 32.7 / 0.0 ms (average mu = 1.000, current mu = 1.000) allocation failure

<— JS stacktrace —>

FATAL ERROR: NewSpace::Rebalance Allocation failed - JavaScript heap out of memory
1: 0xa89e60 node::Abort() [node]
2: 0x9ade29 node::FatalError(char const*, char const*) [node]
3: 0xc7583e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
4: 0xc75bb7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
5: 0xe3f6d5 [node]
6: 0xe7ec67 [node]
7: 0xe90b11 v8::internal::MarkCompactCollector::CollectGarbage() [node]
8: 0xe4c9d8 v8::internal::Heap::MarkCompact() [node]
9: 0xe4e368 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
10: 0xe5190c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
11: 0xe157da v8::internal::factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]
12: 0x116d5e8 v8::internal::Runtime_AllocateInOldGeneration(int, unsigned long*, v8::internal::Isolate*) [node]
13: 0x15045f9 [node]
Aborted (core dumped)
rake aborted!
Errno::ENOENT: No such file or directory @ rb_file_s_size - /var/www/discourse/public/assets/vendor-9297d3b5d396b76cde3e1a19c960cf10c5edf8be99b1f5aeff21012e3ae57a34.js
/var/www/discourse/lib/tasks/assets.rake:293:in size' /var/www/discourse/lib/tasks/assets.rake:293:in block (4 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:182:in block in concurrent?' /var/www/discourse/lib/tasks/assets.rake:284:in block (3 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:273:in each' /var/www/discourse/lib/tasks/assets.rake:273:in block (2 levels) in ’
/var/www/discourse/lib/tasks/assets.rake:182:in concurrent?' /var/www/discourse/lib/tasks/assets.rake:270:in block in ’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in `’
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
I, [2021-07-21T16:25:26.467914 #1] INFO – : Downloading MaxMindDB…
Compressing Javascript and Generating Source Maps

I, [2021-07-21T16:25:26.469702 #1] INFO – : Terminating async processes
I, [2021-07-21T16:25:26.469947 #1] INFO – : Sending INT to 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 pid: 56
I, [2021-07-21T16:25:26.470157 #1] INFO – : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 174
2021-07-21 16:25:26.470 UTC [56] LOG: received fast shutdown request
174:signal-handler (1626884726) Received SIGTERM scheduling shutdown…
2021-07-21 16:25:26.473 UTC [56] LOG: aborting any active transactions
174:M 21 Jul 2021 16:25:26.473 # User requested shutdown…
174:M 21 Jul 2021 16:25:26.474 * Saving the final RDB snapshot before exiting.
2021-07-21 16:25:26.479 UTC [56] LOG: background worker “logical replication launcher” (PID 65) exited with exit code 1
174:M 21 Jul 2021 16:25:26.480 * DB saved on disk
2021-07-21 16:25:26.480 UTC [60] LOG: shutting down
174:M 21 Jul 2021 16:25:26.480 # Redis is now ready to exit, bye bye…
2021-07-21 16:25:26.515 UTC [56] LOG: database system is shut down

Obrigado,
Kian

Você pode

? Precisamos realmente das linhas de log anteriores para oferecer qualquer ajuda significativa.

Acabei de anexá-los, desculpe :slight_smile:

Seu servidor não tem RAM suficiente para instalar o Discourse.

Qual é a sua capacidade de memória e swap?

Ele possui 8 GB de memória e 10 GB de swap. Pelo que parece, meu sistema não está usando swap.

A aplicação atual está utilizando toda a memória disponível e o swappiness está configurado para nunca ocorrer?

Como não vejo outros relatórios, acredito que seja algo no seu servidor.

1 curtida

Olá!
Tenho 8 GB de memória e 10 GB de swap. Estou executando ./launcher rebuild app e a RAM está em 3,4 GB, sem uso de swap. Estou usando o htop e a swap apenas mostra OK/10.00G. Não tenho certeza se isso significa que a swap está funcionando ou não.

No HTOP, o swap mostra OK/10,00G. Não tenho certeza do que isso significa. E a RAM está em torno de 3,4G enquanto executo ./launcher rebuild app.

Acho que funcionou. Fechei o Clamd com sigterm usando o htop. O final tem um ID do Docker. Então, imagino que tenha funcionado.

Edição: Parece estar funcionando bem. Carreguei via IP e porta e ele apareceu corretamente! Só preciso configurar o proxy reverso e está tudo pronto. Obrigado pela ajuda @Falco & @pfaffman :slight_smile:

2 curtidas

Além disso,
quero desabilitar o SSL no Discourse para que ele não exija uma porta. Posso desabilitá-lo no Discourse e habilitá-lo em um proxy reverso, onde tenho o certificado na minha máquina, etc?

Sim, você só precisa remover as primeiras linhas do arquivo app.yml. A que contém ssl e a que contém letsencrypt.

Como eu faria isso usando um proxy reverso Apache com SSL? E posso remover também a linha 443:443 no app.yml?

Sim. Normalmente, ao configurar um proxy reverso, você deseja que seu serviço seja executado em um socket Unix. Você pode adicionar a linha

  - "templates/web.socketed.template.yml" 

à lista de templates no arquivo app.yml para isso. O socket será criado em /var/discourse/shared/standalone/nginx.http.sock.

1 curtida

Como seria o meu arquivo .conf de proxy reverso? Ou você não tem certeza?

Embora existam alguns exemplos de membros da comunidade, como Configure Apache proxy with Let's Encrypt, isso está fora do escopo do suporte que oferecemos oficialmente aqui. Além disso, lembre-se do aviso do Sam:

1 curtida

Já configurei o Apache como proxy antes, então sei o que é essa pressão :smiley:

1 curtida

Olá!
Só queria saber se isso está correto para e-mails? Pois não estou recebendo nenhum.

Renderizado layouts/email_template.html.erb (Duração: 0,4ms | Alocações: 30)
E-mail entregue 2d4e2472-28bc-4eba-a9d6-4ca666feb9d1@forum.domain.com (6,7ms)
Exceção no trabalho: fim do arquivo atingido

O servidor de e-mail é mail.domain.com, não forum.domain.com, ou isso deveria estar aí?

Se você não receber o e-mail de teste em /admin/email, algo está errado :wink:. Você pode alterar a configuração SMTP no app.yml e corrigir qualquer erro.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.