AGGIORNAMENTO DI POSTGRES FALLITO - Ho provato di tutto

Ciao, il sito si è bloccato improvvisamente su “Welcome to nginx!”, quindi sto facendo il debug e ho riscontrato questi errori.

Successo. Ora è possibile avviare il server del database utilizzando:

    pg_ctlcluster 10 main start

Attenzione: La directory stats_temp_directory selezionata /var/run/postgresql/10-main.pg_stat_tmp
non è scrivibile per il proprietario del cluster. Questa impostazione non verrà aggiunta in
postgresql.conf.
Ver Cluster Porta Stato Proprietario Directory dati              File log
10  main    5433 spento   postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: avviso: forzatura della reinstallazione dell'alternativa /usr/share/postgresql/12/man/man1/postmaster.1.gz perché il gruppo di collegamenti postmaster.1.gz è rotto
invoke-rc.d: impossibile determinare il livello di esecuzione corrente
invoke-rc.d: policy-rc.d ha negato l'esecuzione dell'avvio.
Elaborazione dei trigger per postgresql-common (215.pgdg100+1) ...
Creazione dei dizionari PostgreSQL dai pacchetti myspell/hunspell installati...
Rimozione dei file di dizionario obsoleti:
Arresto del server del database PostgreSQL 10: main.
Arresto del server del database PostgreSQL 12: main.
Esecuzione dei controlli di coerenza
-----------------------------
Verifica delle versioni dei cluster                                   ok

Il cluster di origine non è stato arrestato correttamente.
Errore, uscita
-------------------------------------------------------------------------------------
AGGIORNAMENTO DI POSTGRES FALLITO

Si prega di visitare https://meta.discourse.org/t/postgresql-12-update/151236 per ottenere supporto

Nel frattempo è possibile eseguire ./launcher start app per riavviare l'applicazione




FALLITO
--------------------
Pups::ExecError: /root/upgrade_postgres è fallito con il codice di ritorno #<Process::Status: pid 45 exit 1>
Posizione dell'errore: /pups/lib/pups/exec_command.rb:112:in `spawn'
esecuzione fallita con i parametri "/root/upgrade_postgres"
bfe8265213ad992fa3245d252d192977f05d902d7213b361f53d3bc2b0d16b3a
** AVVIAMENTO FALLITO ** si prega di scorrere verso l'alto e cercare messaggi di errore precedenti, potrebbero essercene più di uno.
./discourse-doctor potrebbe aiutare a diagnosticare il problema.
root@bitkcor:/var/discourse# df -h
Filesystem      Dimensione  Usato Disponibile Uso% Montato su
udev            1,9G      0      1,9G    0% /dev
tmpfs           395M    648K     394M    1% /run
/dev/vda1        78G     23G       55G   30% /
tmpfs           2,0G      0       2,0G    0% /dev/shm
tmpfs           5,0M      0       5,0M    0% /run/lock
tmpfs           2,0G      0       2,0G    0% /sys/fs/cgroup
/dev/vda15      105M    3,4M      101M    4% /boot/efi
tmpfs           395M      0      395M    0% /run/user/0
root@bitkcor:/var/discourse# ls
bin   containers        discourse-setup  launcher  README.md  scripts  templates
cids  discourse-doctor  image            LICENSE   samples    shared
root@bitkcor:/var/discourse# cd shared
root@bitkcor:/var/discourse/shared# chown -R postgres postgres_data
chown: utente non valido: 'postgres'
root@bitkcor:/var/discourse/shared# ./launcher start app
-bash: ./launcher: File o directory non esistente
root@bitkcor:/var/discourse/shared# cd ..
root@bitkcor:/var/discourse# ./launcher start app

avvio del container esistente
+ /usr/bin/docker start app
Errore nella risposta del demone: il driver ha fallito la programmazione della connettività esterna sull'endpoint app (10f3d3b7938496e743c73affc9ddb2d821e04419985bf8e3ebde2ec9ec704a0b): Errore durante l'avvio del proxy userland: listen tcp 0.0.0.0:80: bind: indirizzo già in uso
Errore: impossibile avviare i container: app
root@bitkcor:/var/discourse# cd containers
root@bitkcor:/var/discourse/containers# ls
app.yml  app.yml.2018-08-29-034711.bak
root@bitkcor:/var/discourse/containers# cd ..
root@bitkcor:/var/discourse# ./launcher stop app
+ /usr/bin/docker stop -t 10 app
app
root@bitkcor:/var/discourse# ./launcher stop app
+ /usr/bin/docker stop -t 10 app
app
root@bitkcor:/var/discourse# git pull
Già aggiornato.
root@bitkcor:/var/discourse# ./launcher start app

avvio del container esistente
+ /usr/bin/docker start app
Errore nella risposta del demone: il driver ha fallito la programmazione della connettività esterna sull'endpoint app (f149fe57c125ae0c276c339a1367c83262f866227ab9317ff06bf026e8776f65): Errore durante l'avvio del proxy userland: listen tcp 0.0.0.0:80: bind: indirizzo già in uso
Errore: impossibile avviare i container: app

Ho visitato https://meta.discourse.org/t/postgresql-12-update/151236 per ottenere supporto e ho provato i suggerimenti di @Falco qui… e qualsiasi altro suggerimento su meta. Non riesco a far funzionare nulla.

Per quanto ne so, ho più che abbastanza spazio per questo.

Qualcuno può dirmi cosa mi sta sfuggendo?

C’è una voce FAQ dedicata proprio a questo nell’aggiornamento di PostgreSQL 12.

Grazie per la rapida risposta! Sì, ho provato anche quello.

root@bitkcor:/var/discourse# ./launcher start app

avvio del container esistente
+ /usr/bin/docker start app
Risposta di errore dal demone: il driver non è riuscito a programmare la connettività esterna sull'endpoint app (49f1fdf896618efc824e50f782c1fba91bf81320e49ccadb5e5e80b342552e3e): Errore durante l'avvio del proxy userland: listen tcp 0.0.0.0:80: bind: indirizzo già in uso
Errore: impossibile avviare i container: app
root@bitkcor:/var/discourse# ./launcher stop app
+ /usr/bin/docker stop -t 10 app
app
root@bitkcor:/var/discourse# tail -f shared/data/log/var-log/postgres/current
tail: impossibile aprire 'shared/data/log/var-log/postgres/current' per la lettura: File o directory non esistente
tail: nessun file rimanente

In qualche modo, qualcuno ha installato nginx sul tuo host. Dovresti rimuovere eventuali server web non necessari dal tuo VPS e poi seguire le istruzioni.

nginx è installato perché questo è un forum funzionante da alcuni anni. Sono stato in ritardo con Digital Ocean e il Droplet è stato spento. Dopo averlo riattivato, ricevo un errore 521 quando provo ad accedere all’indirizzo. Quando invece accedo tramite l’indirizzo IP, torno alla schermata di benvenuto.

La configurazione di Cloudflare non è stata modificata.

E i nameserver sono corretti su NameCheap.

Non ho apportato alcuna modifica da diversi mesi, quindi non so dove cercare.

Quindi avevi nginx installato ma non in esecuzione. Spegnere e riaccendere il Droplet ha riavviato il servizio, e ora blocca la porta web.

Dovresti davvero disinstallarlo, così non succederà ogni volta che il server si riavvia…

Qualcosa è cambiato? Quando l’ho configurato, la schermata di benvenuto di nginx faceva parte del processo di installazione. Pensavo che nginx fosse necessario per eseguire Discourse. Come si disinstalla?

Si prega di modificare il percorso in
tail -f shared/standalone/log/var-log/postgres/current

Il percorso menzionato nella guida fa riferimento all’installazione con due container (data container), mentre sembra che la tua installazione sia quella con un singolo container.

Fatto. Mi restituisce questo.

root@bitkcor:/var/discourse# tail -f shared/standalone/log/var-log/postgres/current
2020-07-19 03:33:56.864 UTC [19933] discourse@discourse LOG:  duration: 279.207 ms  statement: COPY public.scheduler_stats (id, name, hostname, pid, duration_ms, live_slots_start, live_slots_finish, started_at, success, error) TO stdout;
2020-07-19 03:34:09.436 UTC [19933] discourse@discourse LOG:  duration: 12555.420 ms  statement: COPY public.stylesheet_cache (id, target, digest, content, created_at, updated_at, theme_id, source_map) TO stdout;
2020-07-19 03:34:10.211 UTC [19933] discourse@discourse LOG:  duration: 727.297 ms  statement: COPY public.unsubscribe_keys (key, user_id, created_at, updated_at, unsubscribe_key_type, topic_id, post_id) TO stdout;
2020-07-21 01:56:22.105 UTC [6388] discourse@discourse LOG:  duration: 167.853 ms  execute <unnamed>: INSERT INTO "unsubscribe_keys" ("key", "user_id", "created_at", "updated_at", "unsubscribe_key_type") VALUES ('352fc5679876a1a700dfe7b45f8fa67612592421a3659e08ec5c2ccbf8f0e2d2', 2, '2020-07-21 01:56:21.932109', '2020-07-21 01:56:21.932109', 'digest') RETURNING "key"
2020-07-26 03:34:50.570 UTC [27570] discourse@discourse LOG:  duration: 147.456 ms  statement: COPY public.post_revisions (id, user_id, post_id, modifications, number, created_at, updated_at, hidden) TO stdout;
2020-07-26 03:34:50.925 UTC [27570] discourse@discourse LOG:  duration: 349.648 ms  statement: COPY public.post_search_data (post_id, search_data, raw_data, locale, version) TO stdout;
2020-07-26 03:34:51.236 UTC [27570] discourse@discourse LOG:  duration: 292.799 ms  statement: COPY public.posts (id, user_id, topic_id, post_number, raw, cooked, created_at, updated_at, reply_to_post_number, reply_count, quote_count, deleted_at, off_topic_count, like_count, incoming_link_count, bookmark_count, avg_time, score, reads, post_type, sort_order, last_editor_id, hidden, hidden_reason_id, notify_moderators_count, spam_count, illegal_count, inappropriate_count, last_version_at, user_deleted, reply_to_user_id, percent_rank, notify_user_count, like_score, deleted_by_id, edit_reason, word_count, version, cook_method, wiki, baked_at, baked_version, hidden_at, self_edits, reply_quoted, via_email, raw_email, public_version, action_code, image_url, locked_by_id) TO stdout;
2020-07-26 03:34:51.547 UTC [27570] discourse@discourse LOG:  duration: 296.400 ms  statement: COPY public.scheduler_stats (id, name, hostname, pid, duration_ms, live_slots_start, live_slots_finish, started_at, success, error) TO stdout;
2020-07-26 03:35:04.123 UTC [27570] discourse@discourse LOG:  duration: 12549.364 ms  statement: COPY public.stylesheet_cache (id, target, digest, content, created_at, updated_at, theme_id, source_map) TO stdout;
2020-07-26 03:35:04.760 UTC [27570] discourse@discourse LOG:  duration: 588.788 ms  statement: COPY public.unsubscribe_keys (key, user_id, created_at, updated_at, unsubscribe_key_type, topic_id, post_id) TO stdout;

Sembra che postgres sia in esecuzione. Hai spento il container di Discourse prima di controllare i log?

./launcher stop app

Non riesco proprio a fermarlo.

root@bitkcor:/var/discourse# ./launcher stop app
+ /usr/bin/docker stop -t 10 app
app
root@bitkcor:/var/discourse# tail -f shared/standalone/log/var-log/postgres/current
2020-07-19 03:33:56.864 UTC [19933] discourse@discourse LOG:  duration: 279.207 ms  statement: COPY public.scheduler_stats (id, name, hostname, pid, duration_ms, live_slots_start, live_slots_finish, started_at, success, error) TO stdout;
2020-07-19 03:34:09.436 UTC [19933] discourse@discourse LOG:  duration: 12555.420 ms  statement: COPY public.stylesheet_cache (id, target, digest, content, created_at, updated_at, theme_id, source_map) TO stdout;
2020-07-19 03:34:10.211 UTC [19933] discourse@discourse LOG:  duration: 727.297 ms  statement: COPY public.unsubscribe_keys (key, user_id, created_at, updated_at, unsubscribe_key_type, topic_id, post_id) TO stdout;
2020-07-21 01:56:22.105 UTC [6388] discourse@discourse LOG:  duration: 167.853 ms  execute <unnamed>: INSERT INTO "unsubscribe_keys" ("key", "user_id", "created_at", "updated_at", "unsubscribe_key_type") VALUES ('352fc5679876a1a700dfe7b45f8fa67612592421a3659e08ec5c2ccbf8f0e2d2', 2, '2020-07-21 01:56:21.932109', '2020-07-21 01:56:21.932109', 'digest') RETURNING "key"
2020-07-26 03:34:50.570 UTC [27570] discourse@discourse LOG:  duration: 147.456 ms  statement: COPY public.post_revisions (id, user_id, post_id, modifications, number, created_at, updated_at, hidden) TO stdout;
2020-07-26 03:34:50.925 UTC [27570] discourse@discourse LOG:  duration: 349.648 ms  statement: COPY public.post_search_data (post_id, search_data, raw_data, locale, version) TO stdout;
2020-07-26 03:34:51.236 UTC [27570] discourse@discourse LOG:  duration: 292.799 ms  statement: COPY public.posts (id, user_id, topic_id, post_number, raw, cooked, created_at, updated_at, reply_to_post_number, reply_count, quote_count, deleted_at, off_topic_count, like_count, incoming_link_count, bookmark_count, avg_time, score, reads, post_type, sort_order, last_editor_id, hidden, hidden_reason_id, notify_moderators_count, spam_count, illegal_count, inappropriate_count, last_version_at, user_deleted, reply_to_user_id, percent_rank, notify_user_count, like_score, deleted_by_id, edit_reason, word_count, version, cook_method, wiki, baked_at, baked_version, hidden_at, self_edits, reply_quoted, via_email, raw_email, public_version, action_code, image_url, locked_by_id) TO stdout;
2020-07-26 03:34:51.547 UTC [27570] discourse@discourse LOG:  duration: 296.400 ms  statement: COPY public.scheduler_stats (id, name, hostname, pid, duration_ms, live_slots_start, live_slots_finish, started_at, success, error) TO stdout;
2020-07-26 03:35:04.123 UTC [27570] discourse@discourse LOG:  duration: 12549.364 ms  statement: COPY public.stylesheet_cache (id, target, digest, content, created_at, updated_at, theme_id, source_map) TO stdout;
2020-07-26 03:35:04.760 UTC [27570] discourse@discourse LOG:  duration: 588.788 ms  statement: COPY public.unsubscribe_keys (key, user_id, created_at, updated_at, unsubscribe_key_type, topic_id, post_id) TO stdout;c

La schermata di benvenuto di nginx non è mai stata parte del processo. Ti stai sbagliando.

Anche all’interno del contenitore Docker è installato nginx; non è mai stato necessario installarlo all’esterno.

Hai due istanze di nginx in ascolto sulla stessa porta. Se l’unico servizio presente su questo server è Discourse, puoi rimuovere in tutta sicurezza l’istanza duplicata di nginx esterna al contenitore.

Va bene, scusa per questo.

Sai dove potrebbe essere situato?

Assumendo che il server sia Ubuntu, esegui questo comando all’esterno del contenitore:

sudo apt-get remove nginx nginx-common

Uff. Ora il sito non è raggiungibile. Sto ripristinando un backup e speriamo nel meglio.

È effettivamente una buona notizia: significa che l’istanza nginx esterna al contenitore non sta più occupando la porta.

Una volta disinstallata, dovresti riavviare il server in modo che tutto possa avviarsi correttamente.