Impossibile ricostruire a causa del fallito aggiornamento di postgres 12

Quale guida?
La porta 2045 mi ricorda qualcosa che non riesco a identificare esattamente :thinking:

Dopo alcuni tentativi di installazione falliti qualche mese fa, l’ho modificato a 2045, ma ciò non è rilevante poiché è commentato con #. Il problema non riguarda quella porta.

Ho seguito questa guida discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Beh… è stato modificato, capita di avere le dita scivolose :sweat_smile:

Capisco, ma per arrivare al 2045 a un certo punto potresti aver seguito qualcosa che ti ha portato qui e ora.
Credo di aver seguito lo stesso post perché anch’io ho un proxy 2045 nella mia configurazione di nginx per qualche ragione che non riesco a ricordare…

:crazy_face:

@Benjamin_D non c’è alcuna porta 2045 nel mio file nginx, puoi controllarlo scorrendo verso l’alto. Quella riga in app.yml è commentata con #, quindi non capisco perché state puntando il dito contro di essa. Il problema non deriva da lì, questo è certo; altrimenti il messaggio di errore lo avrebbe indicato.

Posso rimuovere quella riga dal file app.yml se vuoi, il risultato sarebbe lo stesso di prima.

Penso che al momento della prima installazione il container abbia segnalato che le porte 80 o 443 erano già in uso, quindi potrei aver letto da qualche parte di aggiungere semplicemente una porta casuale. Ma, ancora una volta, quella riga è commentata con #, quindi non dovrebbe essere presa in considerazione.

Assolutamente no, stiamo solo cercando di ripercorrere i tuoi passi e confrontare la nostra configurazione con la tua

Questo errore è sicuramente legato a un aggiornamento di PostgreSQL non riuscito.

Consulta l’argomento meta per risolvere il problema.

Controllerò l’argomento relativo all’aggiornamento di PostgreSQL. Tornerò a parlare se incontro altri errori.

Quindi, dopo aver aggiornato PostgreSQL da 10 a 12, ho ancora problemi dopo aver eseguito il comando: ./launcher rebuild app

sudo ./launcher rebuild app
fatal: non è un repository git (o nessuna delle directory genitore): .git
Arresto del vecchio contenitore
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Già aggiornato.
I, [2020-07-13T13:34:21.635079 #1]  INFO -- : Caricamento da --stdin
I, [2020-07-13T13:34:21.643465 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-13T13:34:21.713536 #1]  INFO -- : Generazione delle localizzazioni (questo potrebbe richiedere del tempo)...
Generazione completata.

I, [2020-07-13T13:34:21.713917 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-13T13:34:21.720693 #1]  INFO -- :
I, [2020-07-13T13:34:21.721042 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-13T13:34:21.724919 #1]  INFO -- :
I, [2020-07-13T13:34:21.725387 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-13T13:34:21.728768 #1]  INFO -- :
I, [2020-07-13T13:34:21.729117 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-13T13:34:21.732712 #1]  INFO -- :
I, [2020-07-13T13:34:21.733008 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-13T13:34:21.735981 #1]  INFO -- :
I, [2020-07-13T13:34:21.736200 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres già in esecuzione, arresta il contenitore ; exit 1
2020/07/13 13:34:21 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): File o directory non esistente
I, [2020-07-13T13:34:21.751266 #1]  INFO -- :
I, [2020-07-13T13:34:21.752242 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-13T13:34:21.757300 #1]  INFO -- :
I, [2020-07-13T13:34:21.757817 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-13T13:34:21.761287 #1]  INFO -- :
I, [2020-07-13T13:34:21.761706 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-13T13:34:21.765114 #1]  INFO -- :
I, [2020-07-13T13:34:21.765725 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-13T13:34:21.770573 #1]  INFO -- :
I, [2020-07-13T13:34:21.781057 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-13T13:34:21.791681 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-13T13:34:21.800244 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-13T13:34:21.808363 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-13T13:34:21.809170 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: impossibile accedere a '/var/lib/postgresql/10/main': File o directory non esistente
I, [2020-07-13T13:34:21.817357 #1]  INFO -- :


FALLITO
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main fallito con return #<Process::Status: pid 42 exit 1>
Posizione del fallimento: /pups/lib/pups/exec_command.rb:112:in `spawn'
Esecuzione fallita con i parametri {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
3e7af3d49be0616ae52ee03d6ee0867d25e5db96de40d92c7ec7abeded5d3262
** FALLITO L'AVVIO ** scorri verso l'alto e cerca i messaggi di errore precedenti, potrebbero essercene più di uno.
./discourse-doctor può aiutare a diagnosticare il problema.

Non ci capisco più niente, mi arrendo… ;/

Cosa significa “fatal: non è un repository git (o nessuna delle directory genitore): .git” ??

Inoltre ricevo il seguente messaggio:

sudo ./discourse-setup
Il file di configurazione containers/app.yml esiste già!

. . . riconfigurazione . . .


Salvataggio del vecchio file come app.yml.2020-07-13-153931.bak
Arresto del contenitore esistente tra 5 secondi o Control-C per annullare.
+ /usr/bin/docker stop -t 10 app
app

Rilevati 4GB di memoria e 2 core fisici della CPU
impostazione db_shared_buffers = 1024MB
impostazione UNICORN_WORKERS = 4
parametri di memoria di containers/app.yml aggiornati.

Nome host per il tuo Discourse? [cp2077.eu]:

Controllo del nome di dominio . . .
AVVISO: La porta 443 del computer non sembra essere accessibile utilizzando il nome host:    cp2077.eu.
AVVISO: La connessione a http://cp2077.eu (porta 80) fallisce anch'essa.

Questo suggerisce che cp2077.eu risolve a un indirizzo IP che non raggiunge la macchina su cui stai installando Discourse.

La prima cosa da fare è verificare che cp2077.eu risolvesse correttamente all'indirizzo IP di questo server.
Di solito si fa questo nello stesso luogo in cui è stato acquistato il dominio.

Se sei sicuro che l'indirizzo IP risolva correttamente, potrebbe essere un problema del firewall.
Una ricerca sul web per "apri le porte IL TUO SERVIZIO CLOUD" potrebbe aiutare.

Questo strumento è progettato solo per le installazioni più standard. Se non riesci a risolvere il problema sopra, dovrai modificare manualmente containers/app.yml e poi digitare

./launcher rebuild app

Il sito web è attivo e funzionante, protetto con la porta 443 (SSL), non capisco perché dica che non riesce a raggiungere il sito. Non so più cosa fare. Per favore aiutami

Hai un reverse proxy, quindi non puoi utilizzare discourse-setup. Inoltre, probabilmente devi rimuovere il modello di Let’s Encrypt dal tuo file di configurazione.

Non so quale possa essere il tuo problema con PostgreSQL.

Intendi quelle righe sul proxy nel mio file nginx?

Non stai cercando di reinstallare Discourse ‘sopra’ un’installazione precedente (quella di febbraio), quindi l’app.yml esistente dallo screenshot del primo post, e la necessità di aggiornare PostgreSQL da 10 a 12 (cosa che non credo tu abbia fatto, considerando il messaggio di errore; forse l’hai fatto sul tuo host ma non nel tuo contenitore dati, che potrebbe non esistere più; non conosco lo stato della tua installazione precedente)?
Hai un backup? Vuoi una nuova installazione?

Credo che @pfaffman intenda che, dato che stai usando un reverse proxy (nginx), lo script discourse-setup potrebbe non funzionare (non ho mai eseguito Discourse con un reverse proxy, quindi non so se sia questo il caso). Se definisci correttamente il file app.yml, dovrebbe andare bene anche senza eseguire discourse-setup.

Sembra che stia tentando di eseguire questo codice in un contenitore che non ha PostgreSQL 10 (probabilmente stai usando la versione 12). Se è questo che desideri e il tuo template è templates/postgres.template.yml come indicato nel tuo primo messaggio, forse il repository discourse_docker sulla tua macchina (in /var/discourse) è obsoleto.

La tua installazione di Discourse è recente o vecchia? Potrebbe risolvere il problema aggiornando il repository:

cd /var/discourse
git pull

e poi eseguendo il passaggio di rebuild.

Assicurati anche che il contenitore di Discourse venga distrutto e ricreato (e non solo fermato e riavviato), per evitare di usare un contenitore vecchio (credo che il rebuild di Discourse dovrebbe già farlo, ma tanto per essere sicuri…).

Se non funziona e hai un backup, è consigliabile provare a installare su una nuova istanza fresca, come ha suggerito @Benjamin_D.

@Benjamin_D,

Sto cercando di installare Discourse per un altro dominio “sopra” la mia installazione precedente. Per essere precisi, due domini sullo stesso server. Perdonate la mia ignoranza: in quale parte di app.yml posso trovare PostgreSQL? Perché ho guardato il mio app.yml e non vedo nulla di correlato.

Ho dei backup dei vecchi file che avevo; ho copiato alcune informazioni dalla mia installazione precedente al nuovo app.yml per il nuovo server.

@lucasbasquerotto

Anche qui, perdonate la mia ignoranza: quando dite “proxy” nginx, vi riferite a questa riga?

location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;

Prima usavo PostgreSQL 10, ma ieri l’ho aggiornato alla versione 12.

Vorrei molto avviare una nuova istanza in questo caso; come posso rimuovere quelle vecchie per assicurarmi che tutto venga installato da zero? Grazie mille.

Due istanze di Discourse sullo stesso server, quella sarebbe la configurazione multisito, un’altra storia :smile:
Per ora penso che sia meglio assicurarsi di avere un backup del primo sito, averlo attivo e funzionante con pg12 aggiornato, e poi provare l’avventura multisito per la quale non sono assolutamente qualificato :sweat_smile:

Grazie Benjamin,

Comincerei da capo. Ho il backup del primo sito, ma era una prova e non è più necessario. Vorrei ricominciare da zero.

Come posso rimuovere il vecchio container e tutto il resto per ripartire con una nuova base?

Hai provato prima ad aggiornare il repository discourse_docker localmente (in /var/discourse)? Non ha funzionato?

Per quanto riguarda il reverse proxy, è perché nginx si trova a metà strada tra le richieste e le instrada ai servizi corretti (invece di esporre direttamente il servizio, in questo caso Discourse, a Internet), quindi nginx agisce come reverse proxy e le porte (80 e 443) esposte a Internet appartengono al servizio nginx.

Stranamente, la configurazione di Discourse ha funzionato a febbraio su uno dei miei domini, come hai notato, Benjamin, ricordi? Perché ho anche pubblicato qualcosa al riguardo tempo fa. Quindi sono sorpreso che nessuno abbia mai eseguito Discourse con nginx. A dire il vero, ha funzionato perfettamente fino a ieri, quando ho provato a installare Discourse su un altro dominio usando lo stesso server.

Cosa dovrei cercare esattamente in discourse_docker? Ecco il contenuto di quella cartella:

discourse_docker$ ls
bin   containers        discourse-setup  launcher  README.md  scripts  templates
cids  discourse-doctor  image            LICENSE   samples    shared

Esegui semplicemente git pull per aggiornare il repository (la directory /var/discourse stessa è il repository locale), come ho già detto in uno dei post sopra:

e successivamente esegui il comando di rebuild.

Ci sono altre persone che utilizzano nginx come proxy inverso, ma sono sicuramente casi molto meno frequenti rispetto all’installazione standard su una macchina dedicata esclusivamente a Discourse. Non so nemmeno se questo comprometta discourse-setup; sto solo facendo un’ipotesi basata sui tuoi risultati, considerando che l’errore si è verificato durante il controllo di DNS e porte aperte (e tenendo presente che non è il tuo container Discourse a utilizzare le porte 80 e 443 sull’host).

Ok, quindi sono andato nella cartella discourse_docker come hai detto, Lucas, e ho copiato il mio file app.yml nei container di quella cartella, eseguendo il comando ./launcher rebuild app

È successo qualcosa senza errori e penso che stia funzionando

Non voglio dare i jinx ancora, ora proverò a configurare il nuovo account :smiley: