FALLO EN LA ACTUALIZACIÓN DE POSTGRES - Lo he intentado todo

Hola, el sitio se ha quedado de repente atascado en “Welcome to nginx!”, así que estoy depurando y encontrándome con estos errores.

Éxito. Ahora puede iniciar el servidor de base de datos usando:

    pg_ctlcluster 10 main start

Advertencia: El directorio stats_temp_directory seleccionado /var/run/postgresql/10-main.pg_stat_tmp
no es escribible para el propietario del clúster. No se agregará esta configuración en
postgresql.conf.
Ver Cluster Puerto Estado Propietario Directorio de datos Archivo de registro
10  main    5433 apagado postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: advertencia: forzando la reinstalación de la alternativa /usr/share/postgresql/12/man/man1/postmaster.1.gz porque el grupo de enlaces postmaster.1.gz está roto
invoke-rc.d: no se pudo determinar el nivel de ejecución actual
invoke-rc.d: policy-rc.d denegó la ejecución de start.
Procesando desencadenantes para postgresql-common (215.pgdg100+1) ...
Construyendo diccionarios de PostgreSQL a partir de los paquetes myspell/hunspell instalados...
Eliminando archivos de diccionario obsoletos:
Deteniendo el servidor de base de datos PostgreSQL 10: main.
Deteniendo el servidor de base de datos PostgreSQL 12: main.
Realizando comprobaciones de consistencia
-----------------------------
Verificando versiones del clúster                                   ok

El clúster de origen no se apagó correctamente.
Fallo, saliendo
-------------------------------------------------------------------------------------
ACTUALIZACIÓN DE POSTGRES FALLIDA

Por favor, visite https://meta.discourse.org/t/postgresql-12-update/151236 para obtener soporte

Mientras tanto, puede ejecutar ./launcher start app para reiniciar su aplicación




FALLÓ
--------------------
Pups::ExecError: /root/upgrade_postgres falló con el retorno #<Process::Status: pid 45 exit 1>
Ubicación del fallo: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec falló con los parámetros "/root/upgrade_postgres"
bfe8265213ad992fa3245d252d192977f05d902d7213b361f53d3bc2b0d16b3a
** FALLÓ EL INICIO ** por favor, haga scroll hacia arriba y busque mensajes de error anteriores, puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.
root@bitkcor:/var/discourse# df -h
Sistema de archivos  Tamaño Usado Disp Uso% Montado en
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: usuario inválido: 'postgres'
root@bitkcor:/var/discourse/shared# ./launcher start app
-bash: ./launcher: No existe el archivo o el directorio
root@bitkcor:/var/discourse/shared# cd ..
root@bitkcor:/var/discourse# ./launcher start app

iniciando el contenedor existente
+ /usr/bin/docker start app
Respuesta de error del daemon: el controlador falló al programar la conectividad externa en el endpoint app (10f3d3b7938496e743c73affc9ddb2d821e04419985bf8e3ebde2ec9ec704a0b): Error al iniciar el proxy de userland: listen tcp 0.0.0.0:80: bind: la dirección ya está en uso
Error: no se pudo iniciar los contenedores: 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
Ya está actualizado.
root@bitkcor:/var/discourse# ./launcher start app

iniciando el contenedor existente
+ /usr/bin/docker start app
Respuesta de error del daemon: el controlador falló al programar la conectividad externa en el endpoint app (f149fe57c125ae0c276c339a1367c83262f866227ab9317ff06bf026e8776f65): Error al iniciar el proxy de userland: listen tcp 0.0.0.0:80: bind: la dirección ya está en uso
Error: no se pudo iniciar los contenedores: app

He visitado https://meta.discourse.org/t/postgresql-12-update/151236 para obtener soporte y probé las sugerencias de @Falco aquí… y cualquier otra sugerencia en meta. No logro que nada funcione.

Por lo que puedo ver, tengo más que suficiente espacio para esto.

¿Alguien puede decirme qué me estoy perdiendo?

Hay una entrada de preguntas frecuentes solo para esto en Actualización de PostgreSQL 12.

5 Me gusta

¡Gracias por la respuesta rápida! Sí, también lo intenté.

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

iniciando el contenedor existente
+ /usr/bin/docker start app
Error de respuesta del daemon: el controlador falló al programar la conectividad externa en el endpoint app (49f1fdf896618efc824e50f782c1fba91bf81320e49ccadb5e5e80b342552e3e): Error al iniciar el proxy de usuario: listen tcp 0.0.0.0:80: bind: la dirección ya está en uso
Error: falló al iniciar los contenedores: 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: no se puede abrir 'shared/data/log/var-log/postgres/current' para lectura: No existe el archivo o el directorio
tail: no quedan archivos

De alguna manera, alguien instaló nginx en tu servidor. Deberías eliminar cualquier servidor web innecesario de tu VPS y luego seguir las instrucciones.

2 Me gusta

nginx está instalado porque este ha sido un foro funcional durante un par de años. Tuve un retraso con Digital Ocean y el Droplet se apagó. Tras volver a encenderlo, al acceder a la dirección obtengo un error 521. Cuando voy a la dirección IP, vuelvo a ver la pantalla de bienvenida.

La configuración de Cloudflare no ha cambiado.

Y los servidores de nombres en NameCheap son correctos.

No he modificado nada en varios meses, así que no sé por dónde empezar a buscar.

Así que tenías nginx instalado pero no en ejecución. Apagar el droplet y volverlo a encender reinició el servicio y ahora bloquea el puerto web.

Deberías desinstalarlo realmente para que esto no ocurra cada vez que el servidor se reinicie…

1 me gusta

¿Ha cambiado algo? Cuando lo construí, la pantalla de bienvenida de nginx era parte del proceso de instalación. Tenía la impresión de que nginx era necesario para ejecutar Discourse. ¿Cómo lo desinstalo?

Por favor, cambia la ruta a
tail -f shared/standalone/log/var-log/postgres/current

La ruta mencionada en la guía hace referencia al contenedor de datos de la instalación de dos contenedores, mientras que parece que tu instalación es la de un solo contenedor.

1 me gusta

Hecho. Esto es lo que me da.

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;

Parece que postgres se está ejecutando. ¿Apagaste el contenedor de Discourse antes de revisar los registros?

./launcher stop app

No logro detenerlo.

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 pantalla de bienvenida de nginx nunca fue parte del proceso. Estás recordando mal.

nginx también está instalado dentro del contenedor de Docker; nunca ha sido necesario fuera de él.

Tienes dos instancias de nginx escuchando en el mismo puerto. Si lo único que hay en este servidor es Discourse, se puede eliminar con total seguridad la instancia duplicada de nginx que está fuera del contenedor.

Vale, lo siento mucho.

¿Sabes dónde podría estar ubicado?

Asumiendo que el servidor es Ubuntu, ejecuta esto fuera del contenedor:

sudo apt-get remove nginx nginx-common

¡Uf! Ahora no se puede acceder al sitio. Restaurando una copia de seguridad y esperando lo mejor.

Eso es en realidad una buena noticia, significa que la instancia de nginx fuera del contenedor ya no está secuestrando el puerto.

Una vez que lo desinstales, deberías reiniciar el servidor para que todo pueda iniciarse correctamente.

3 Me gusta