# Discourse Bad Gateway após reinicialização

**URL:** <https://meta.discourse.org/t/discourse-bad-gateway-after-reboot/156446>\
**Category:** Self-hosting\
**Created:** [Julho 1, 2020, 7:52am UTC](https://meta.discourse.org/t/discourse-bad-gateway-after-reboot/156446 "2020-07-01T07:52:02Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![nap](https://avatars.discourse-cdn.com/v4/letter/n/a87d85/32.png) [@nap](https://meta.discourse.org/u/nap)\
**Post date:** [Julho 1, 2020, 7:52am UTC](https://meta.discourse.org/t/discourse-bad-gateway-after-reboot/156446/1 "2020-07-01T07:52:02Z")

</div>

Meu servidor roda em uma Máquina Virtual hospedada por um dos principais provedores de nuvem.  
Instalei com sucesso o `discourse` nele e ele tem funcionado bem no último mês.  
Hoje, decidi alterar as especificações da minha VM de volta para sua configuração original(\*) e reiniciei. Ao iniciar, embora tudo o mais no servidor esteja funcionando corretamente, estou recebendo um erro `502 Bad Gateway` ao tentar acessar o fórum Discourse.  
Pensando que a instância do Docker não tivesse iniciado automaticamente, fiz SSH no servidor e executei `./launcher start app`, mas recebi uma mensagem dizendo que havia espaço insuficiente restante (5 GB disponíveis). Então, executei `df -h`, que indica que tenho na verdade 14 GB disponíveis. Assim, executei `./launcher start app` novamente, mas desta vez recebi um aviso de que o Docker iria baixar arquivos e que eu deveria ter paciência. Após algum processamento, obtive a mensagem `Nothing to do, your container has already started!` (Nada a fazer, seu contêiner já foi iniciado!). No entanto, minhas tentativas de acessar o fórum ainda retornavam `502 Bad Gateway`.  
Depois de consultar este fórum aqui, decidi executar `./launcher rebuild app` e obtive os seguintes erros, relacionados ao `PostgreSQL`:

```
    user@host:[16:48]:/var/discourse# ./launcher rebuild app
    Garantindo que o launcher está atualizado
    Buscando origem
    Launcher atualizado
    Parando o contêiner antigo
    + /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    Já está atualizado.
    I, [2020-07-01T07:19:42.821347 #1] INFO -- : Carregando --stdin
    I, [2020-07-01T07:19:42.831806 #1] INFO -- : > locale-gen $LANG && update-locale
    I, [2020-07-01T07:19:42.879007 #1] INFO -- : Gerando locais (isso pode demorar um pouco)...
    Geração concluída.
    
    I, [2020-07-01T07:19:42.879431 #1] INFO -- : > mkdir -p /shared/postgres_run
    I, [2020-07-01T07:19:42.885054 #1] INFO -- :
    I, [2020-07-01T07:19:42.885734 #1] INFO -- : > chown postgres:postgres /shared/postgres_run
    I, [2020-07-01T07:19:42.891657 #1] INFO -- :
    I, [2020-07-01T07:19:42.892269 #1] INFO -- : > chmod 775 /shared/postgres_run
    I, [2020-07-01T07:19:42.898103 #1] INFO -- :
    I, [2020-07-01T07:19:42.898942 #1] INFO -- : > rm -fr /var/run/postgresql
    I, [2020-07-01T07:19:42.905607 #1] INFO -- :
    I, [2020-07-01T07:19:42.906463 #1] INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
    I, [2020-07-01T07:19:42.912617 #1] INFO -- :
    I, [2020-07-01T07:19:42.913233 #1] INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres já está rodando, pare o contêiner ; exit 1
    2020/07/01 07:19:42 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Arquivo ou diretório não encontrado
    I, [2020-07-01T07:19:42.925688 #1] INFO -- :
    I, [2020-07-01T07:19:42.926081 #1] INFO -- : > rm -fr /shared/postgres_run/.s*
    I, [2020-07-01T07:19:42.931174 #1] INFO -- :
    I, [2020-07-01T07:19:42.931649 #1] INFO -- : > rm -fr /shared/postgres_run/*.pid
    I, [2020-07-01T07:19:42.938154 #1] INFO -- :
    I, [2020-07-01T07:19:42.938850 #1] INFO -- : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp
    I, [2020-07-01T07:19:42.943575 #1] INFO -- :
    I, [2020-07-01T07:19:42.944331 #1] INFO -- : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp
    I, [2020-07-01T07:19:42.949159 #1] INFO -- :
    I, [2020-07-01T07:19:42.961190 #1] INFO -- : Arquivo > /etc/service/postgres/run chmod: +x chown:
    I, [2020-07-01T07:19:42.973345 #1] INFO -- : Arquivo > /etc/service/postgres/log/run chmod: +x chown:
    I, [2020-07-01T07:19:42.983929 #1] INFO -- : Arquivo > /etc/runit/3.d/99-postgres chmod: +x chown:
    I, [2020-07-01T07:19:42.994843 #1] INFO -- : Arquivo > /root/upgrade_postgres chmod: +x chown:
    I, [2020-07-01T07:19:42.995487 #1] INFO -- : > chown -R root /var/lib/postgresql/12/main
    I, [2020-07-01T07:19:44.012812 #1] INFO -- :
    I, [2020-07-01T07:19:44.013656 #1] INFO -- : > [! -e /shared/postgres_data] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0
    I, [2020-07-01T07:19:44.019545 #1] INFO -- :
    I, [2020-07-01T07:19:44.019872 #1] INFO -- : > chown -R postgres:postgres /shared/postgres_data
    I, [2020-07-01T07:19:44.064432 #1] INFO -- :
    I, [2020-07-01T07:19:44.065186 #1] INFO -- : > chown -R postgres:postgres /var/run/postgresql
    I, [2020-07-01T07:19:44.071385 #1] INFO -- :
    I, [2020-07-01T07:19:44.072196 #1] INFO -- : > /root/upgrade_postgres
    I, [2020-07-01T07:19:44.084004 #1] INFO -- :
    I, [2020-07-01T07:19:44.084662 #1] INFO -- : > rm /root/upgrade_postgres
    I, [2020-07-01T07:19:44.090399 #1] INFO -- :
    I, [2020-07-01T07:19:44.092280 #1] INFO -- : Substituindo data_directory = '/var/lib/postgresql/12/main' por data_directory = '/shared/postgres_data' em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.093969 #1] INFO -- : Substituindo (?-mix:#?listen_addresses *=.*) por listen_addresses = '*' em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.095204 #1] INFO -- : Substituindo (?-mix:#?synchronous_commit *=.*) por synchronous_commit = $db_synchronous_commit em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.095937 #1] INFO -- : Substituindo (?-mix:#?shared_buffers *=.*) por shared_buffers = $db_shared_buffers em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.096695 #1] INFO -- : Substituindo (?-mix:#?work_mem *=.*) por work_mem = $db_work_mem em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.097554 #1] INFO -- : Substituindo (?-mix:#?default_text_search_config *=.*) por default_text_search_config = '$db_default_text_search_config' em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.101971 #1] INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
    I, [2020-07-01T07:19:44.112672 #1] INFO -- :
    I, [2020-07-01T07:19:44.113831 #1] INFO -- : Substituindo (?-mix:#?max_wal_senders *=.*) por max_wal_senders = $db_max_wal_senders em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.114973 #1] INFO -- : Substituindo (?-mix:#?wal_level *=.*) por wal_level = $db_wal_level em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.116047 #1] INFO -- : Substituindo (?-mix:#?checkpoint_segments *=.*) por checkpoint_segments = $db_checkpoint_segments em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.117033 #1] INFO -- : Substituindo (?-mix:#?logging_collector *=.*) por logging_collector = $db_logging_collector em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.118051 #1] INFO -- : Substituindo (?-mix:#?log_min_duration_statement *=.*) por log_min_duration_statement = $db_log_min_duration_statement em /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-01T07:19:44.119352 #1] INFO -- : Substituindo (?-mix:^#local +replication +postgres +peer$) por local replication postgres peer em /etc/postgresql/12/main/pg_hba.conf
    I, [2020-07-01T07:19:44.120299 #1] INFO -- : Substituindo (?-mix:^host.*all.*all.*127.*$) por host all all 0.0.0.0/0 md5 em /etc/postgresql/12/main/pg_hba.conf
    I, [2020-07-01T07:19:44.121038 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/12/bin/postmaster -D /etc/postgresql/12/main
    I, [2020-07-01T07:19:44.126334 #1] INFO -- : > sleep 5
    2020-07-01 07:19:44.157 UTC [49] LOG: iniciando PostgreSQL 12.2 (Debian 12.2-2.pgdg100+1) em x86_64-pc-linux-gnu, compilado por gcc (Debian 8.3.0-6) 8.3.0, 64-bit
    2020-07-01 07:19:44.158 UTC [49] LOG: ouvindo no endereço IPv4 "0.0.0.0", porta 5432
    2020-07-01 07:19:44.158 UTC [49] LOG: ouvindo no endereço IPv6 "::", porta 5432
    2020-07-01 07:19:44.161 UTC [49] LOG: ouvindo no socket Unix "/var/run/postgresql/.s.PGSQL.5432"
    2020-07-01 07:19:44.162 UTC [49] FATAL: não foi possível mapear memória compartilhada anônima: Não foi possível alocar memória
    2020-07-01 07:19:44.162 UTC [49] HINT: Este erro geralmente significa que a solicitação do PostgreSQL por um segmento de memória compartilhada excedeu a memória disponível, espaço de swap ou páginas grandes. Para reduzir o tamanho da solicitação (atualmente 4423172096 bytes), reduza o uso de memória compartilhada do PostgreSQL, talvez reduzindo shared_buffers ou max_connections.
    2020-07-01 07:19:44.162 UTC [49] LOG: sistema de banco de dados desligado
    I, [2020-07-01T07:19:49.141762 #1] INFO -- :
    I, [2020-07-01T07:19:49.142221 #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: Arquivo ou diretório não encontrado
        O servidor está rodando localmente e aceitando
        conexões no socket Unix "/var/run/postgresql/.s.PGSQL.5432"?
    I, [2020-07-01T07:19:49.227852 #1] INFO -- :
    I, [2020-07-01T07:19:49.228226 #1] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
    psql: erro: não foi possível conectar ao servidor: não foi possível conectar ao servidor: Arquivo ou diretório não encontrado
        O servidor está rodando localmente e aceitando
        conexões no socket Unix "/var/run/postgresql/.s.PGSQL.5432"?
    I, [2020-07-01T07:19:49.330486 #1] INFO -- :
    I, [2020-07-01T07:19:49.330822 #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: não foi possível conectar ao servidor: Arquivo ou diretório não encontrado
        O servidor está rodando localmente e aceitando
        conexões no socket Unix "/var/run/postgresql/.s.PGSQL.5432"?
    I, [2020-07-01T07:19:49.425970 #1] INFO -- :
    I, [2020-07-01T07:19:49.426356 #1] INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
    psql: erro: não foi possível conectar ao servidor: não foi possível conectar ao servidor: Arquivo ou diretório não encontrado
        O servidor está rodando localmente e aceitando
        conexões no socket Unix "/var/run/postgresql/.s.PGSQL.5432"?
    I, [2020-07-01T07:19:49.506638 #1] INFO -- :
    I, [2020-07-01T07:19:49.507202 #1] INFO -- : Encerrando processos assíncronos
    
    
    FALHA
    --------------------
    Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' falhou com retorno #<Process::Status: pid 75 exit 2>
    Localização 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;\"'"
    eb41679f76cd749ccd8c84a7543365d093619b80df6fc6750b9349fb63565fa1
    **FALHA NO 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.
    user@host:[17:19]:/var/discourse#

```

Estranhamente, apesar dos erros acima, executar `./launcher start app` não produz erros:

```
iniciando contêiner existente
+ /usr/bin/docker start app
app

```

Com a instância em execução, tentei usar `./launcher enter app` para entrar no contêiner. (Na minha humilde opinião, as ferramentas disponíveis no contêiner são muito pobres (sim, sou usuário de `nano` e gosto de ter vários aliases mapeados; por exemplo, `ll`). Não consigo encontrar o caminho físico para as pastas dentro da instância do Docker (como gostaria de baixá-las usando um cliente FTP).

Em `/var/log/nginx/error.log`, tenho a seguinte entrada de erro para cada vez que atualizo meu navegador:

```
2020/07/01 07:44:16 [error] 646#646: *3 connect() falhou (111: Connection refused) ao conectar ao upstream, cliente: xxx.xx.0.1, servidor: _, solicitação: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "discourse.myDomain.com"

```

O que poderia ser a causa do meu problema? Por que o PostgreSQL de repente não está funcionando?

(\*) Uma semana após instalar o Discourse, atualizei meu servidor com mais CPUs e memória. Eu precisava fazer isso para rodar uma videoconferência que hospedei. Com a conferência concluída, voltei à minha configuração normal. Observe que não alterei os tamanhos dos discos em nenhum momento durante as mudanças de especificação.

---

_[View the full topic](https://meta.discourse.org/t/discourse-bad-gateway-after-reboot/156446)._
