Hola a todos: soy nuevo en Discourse (¡se ve increíble!) y, aunque tengo algunas habilidades técnicas generales, creo que me clasificaría como un novato relativo en el mundo de Docker/Linux VM.
Estoy recibiendo consistentemente el mensaje de error a continuación… intenté ejecutar discourse doctor pero sin éxito. Espero que alguien pueda indicarme el camino correcto sobre lo que podría estar ocurriendo aquí. ¡Muchas gracias de antemano! -Tim
[2021-06-11T04:09:29.733935 #1] INFO -- : > 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
I, [2021-06-11T04:09:29.735773 #1] INFO -- : > sleep 5
2021-06-11 04:09:30.320 GMT [54] LOG: 0 8kB está fuera del rango válido para el parámetro "shared_buffers" (16 .. 1073741823)
2021-06-11 04:09:30.322 UTC [54] FATAL: el archivo de configuración "/etc/postgresql/13/main/postgresql.conf" contiene errores
I, [2021-06-11T04:09:34.739847 #1] INFO -- :
I, [2021-06-11T04:09:34.740097 #1] INFO -- : > su postgres -c 'createdb discourse' || true
createdb: error: no se pudo conectar a la base de datos template1: no se pudo conectar al servidor: No existe tal archivo o directorio
¿Se está ejecutando el servidor localmente y aceptando
conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:34.860266 #1] INFO -- :
I, [2021-06-11T04:09:34.860745 #1] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: error: no se pudo conectar al servidor: No existe tal archivo o directorio
¿Se está ejecutando el servidor localmente y aceptando
conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.023423 #1] INFO -- :
I, [2021-06-11T04:09:35.023810 #1] INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql: error: no se pudo conectar al servidor: No existe tal archivo o directorio
¿Se está ejecutando el servidor localmente y aceptando
conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.137806 #1] INFO -- :
I, [2021-06-11T04:09:35.138325 #1] INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: error: no se pudo conectar al servidor: No existe tal archivo o directorio
¿Se está ejecutando el servidor localmente y aceptando
conexiones en el socket de dominio Unix "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.257190 #1] INFO -- :
I, [2021-06-11T04:09:35.257476 #1] INFO -- : Terminando procesos asíncronos
FALLÓ
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' falló con retorno #<Process::Status: pid 80 exit 2>
Ubicación del fallo: /pups/lib/pups/exec_command.rb:112:in `spawn'
ejecución fallida con los parámetros "su postgres -c 'psql $db_name -c \\\"alter schema public owner to $db_user;\\\"'"
14ef6216494c846091ea6ce48143e2f25018b9d2579b6d4d0021d605f7f5e145
** FALLO AL INICIALIZAR ** por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.
Hola @Meathead40,
estoy experimentando posiblemente el mismo problema.
Logré configurar Discourse en Oracle Free en junio. Ahora he vuelto a ejecutar el script de configuración para cambiar algunos parámetros relacionados con la configuración del correo electrónico.
El primer error que puedo rastrear en el registro es: FATAL: el archivo de configuración "/etc/postgresql/13/main/postgresql.conf" contiene errores,
pero en mi caso ese archivo no existe. Además, el servicio de PostgreSQL no se está ejecutando (ni siquiera está disponible como servicio).
¿Lograste resolver este problema? ¿Alguien más ha experimentado lo mismo?
gracias por las sugerencias. Logré recopilar más información.
Esto es del registro, alrededor del momento del error (los mensajes anteriores son de días antes):
2021-08-02 13:33:16.980 UTC [2419] LOG: received smart shutdown request
2021-08-02 13:33:28.273 UTC [2419] LOG: background worker "logical replication launcher" (PID 2442) exited with exit code 1
2021-08-02 13:33:28.344 UTC [2437] LOG: shutting down
2021-08-02 13:33:28.552 UTC [2419] LOG: database system is shut down
También obtuve la configuración del búfer compartido:
shared_buffers = 128MB # min 128kB
#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
Estoy ejecutando la configuración en una instalación existente con el propósito de cambiar algunos parámetros de configuración. La primera parte del script detecta lo siguiente:
sudo ./discourse-setup
which: no docker.io en (/sbin:/bin:/usr/sbin:/usr/bin)
which: no docker.io en (/sbin:/bin:/usr/sbin:/usr/bin)
¡El archivo de configuración containers/app.yml ya existe!
. . . reconfigurando . . .
Guardando el archivo antiguo como app.yml.2021-08-03-102829.bak
Deteniendo el contenedor existente en 5 segundos o Control-C para cancelar.
+ /bin/docker stop -t 30 app
app
Se encontraron 0GB de memoria y 1 núcleo de CPU físico
estableciendo db_shared_buffers = 0MB
estableciendo UNICORN_WORKERS = 0
Parámetros de memoria de containers/app.yml actualizados.
continuando, pasando todos los parámetros de configuración y finalmente construyendo… esto debería ser la pista que estás buscando
2021-08-03 10:30:37.709 GMT [55] LOG: 0 8kB está fuera del rango válido para el parámetro "shared_buffers" (16 .. 1073741823)
2021-08-03 10:30:37.713 UTC [55] FATAL: el archivo de configuración "/etc/postgresql/13/main/postgresql.conf" contiene errores
¡Eso no es una buena señal! Ese número debería provenir directamente de la salida de
free -g --si | awk ' /Mem:/ {print $2} '
Eso reporta 703 MB, lo cual es (oficialmente) demasiado pequeño para que Discourse funcione correctamente. Si quieres vivir peligrosamente (¡y sin soporte!), podrías editar el número mágico 990 en
Creo que necesitas una instancia más grande con más RAM.
El archivo de configuración sigue teniendo la verificación desactivada, pero supongo que se sobrescribe. Intentaré modificar el valor como indicaste y informaré lo que suceda.
He logrado completar la configuración y la reconstrucción. Los pasos han sido:
Comentar la verificación de memoria (#check_disk_and_memory) en /var/discourse/discourse-setup (no estoy seguro si esto es necesario)
Ejecutar el comando sudo ./discourse-setup desde la carpeta /var/discourse (esto generará el archivo /var/discourse/containers/app.yml e intentará continuar con la compilación, que fallará como se describió anteriormente)
Editar app.yml para establecer explícitamente db_shared_buffers: “128MB” y UNICORN_WORKERS: 1
Iniciar una reconstrucción con sudo ./launcher rebuild app (desde la carpeta /var/discourse)
Sé que esto está al límite de los requisitos, pero mantendré un ojo atento en el comportamiento de la instancia.
Me alegra que hayas resuelto el problema. En el hilo enlazado y en el hilo al que hace referencia, me parece mucho más preferible cambiar el número “mágico de perdón” de 990 por el valor que representa tu propio sistema. “Desactivar la verificación de memoria” en realidad está causando problemas.
Está claro para mí que el equipo de Discourse necesita establecer un límite inferior de algún valor, para trazar una línea entre configuraciones compatibles e incompatibles, y lo han establecido formalmente en 1 GB, con una relajación a 990. Pero 960 me parece bastante cercano a 990, y surge por razones similares. Por otro lado, 703 parece muy diferente.
Estoy de acuerdo, cambiaré el número. Me sorprende bastante que la memoria sea tan baja. Las especificaciones de la instancia de Oracle (nivel gratuito) indican 1 GB de memoria, pero el nivel gratuito ofrece solo alrededor del 60-70 % de esa cantidad. Estoy un poco confundido y no sé la razón de ello.
Quizás la instrucción más importante que falta es no usar la imagen predeterminada del servidor. Discourse requiere 1 GB de RAM (o algo así aquí) y, por alguna razón, la imagen de Oracle Linux no deja suficiente memoria. No sé si CentOS funcionará, pero la imagen de Ubuntu sí. Solo asegúrate de elegir la instalación completa2 en lugar de la instalación “Mínima”.
Sospecho que Oracle Linux por defecto incluye un montón de cosas que no son necesarias para instalar Discourse. Presumiblemente, su caso de uso principal es alojar servidores de bases de datos de Oracle. Afortunadamente, la imagen de Ubuntu funciona perfectamente. Mi sitio de pruebas/host de comentarios sigue en funcionamiento. (Aunque no hay mucha actividad.)