Dificultad para instalar en VM que incluye CPanel y Apache

¡Hola a todos!

**Esta es mi primera publicación. **

Soy un nuevo usuario de Discourse y vengo de phpBB.
Hace dos semanas, instalé Discourse en un contenedor Docker usando Nginx, ya que Apache usa los puertos 80 y 443 por defecto. Seguí cuidadosamente los pasos descritos en las guías de instalación y la configuración multisitio de Nginx.

Pude ejecutar y usar el foro durante una semana, solo iniciando sesión ocasionalmente para familiarizarme con la plataforma. Cuando le pedí a uno de los usuarios que se registrara y lo probara, el foro se bloqueó al día siguiente. El navegador mostró el mensaje: “El software que impulsa este foro de discusión encontró un problema inesperado”. No pude solucionarlo, así que reinstalé todo el foro desde cero y luego restauré los hilos de la última copia de seguridad disponible. Esto fue el jueves pasado. Después de todo esto, el foro volvió a estar en funcionamiento. Ahora, ha vuelto a fallar con un error 502 Bad Gateway de Nginx. Fui directamente a reconstruir la aplicación y se bloqueó de nuevo con el error:

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 580 exit 1>.

Esto mismo sucedió una y otra vez la semana pasada y me llevó a reinstalar todo desde cero. El foro está prácticamente inactivo porque aún no lo he hecho público. Me asusta la idea de que si sigue fallando sin actividad, ¿qué podría suceder con un grupo de usuarios más grande? Ejecuta estos comandos: ./launcher enter app

**cd /var/www/discourse**
**su discourse -c 'bundle exec rake db:migrate'**

Y en la respuesta, veo esto que me llamó la atención:

connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: the database system is starting up

Intenté reiniciar PostgreSQL manualmente y ejecutar la reconstrucción nuevamente, pero el proceso se interrumpió nuevamente con este mensaje de error:

**FAILED**
**--------------------**
**Pups::ExecError: if [ -f /root/install_postgres ]; then**
**/root/install_postgres && rm -f /root/install_postgres**
**elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then**
**socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1**
**fi**
** failed with return #<Process::Status: pid 18 exit 1>**
**Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'**
**exec failed with the params {"tag"=>"db", "cmd"=>"if [ -f /root/install_postgres ]; then\\n /root/install_postgres && rm -f /root/install_postgres\\nelif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then\\n socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container exit ; 1\\nfi\\n"}**
**bootstrap failed with exit code 1**

Realmente no soy un usuario experimentado para identificar el error, pero sospecho que Postgres fallará en algún momento. Esto me llevó a reiniciar todo y empezar de nuevo la semana pasada, pero no creo que esta sea una práctica común o saludable para nadie.

Discourse se está ejecutando en un servidor con 4 núcleos, 6 GB de RAM y 180 GB de espacio en disco. Actualmente solo estoy ejecutando esta instalación de Discourse, por lo que, según entiendo, no estoy limitado por el hardware.

¡Bienvenido, @Gustavo_Rip! Lamentamos que estés teniendo problemas.

¿Hiciste una instalación estándar? Con una instalación estándar, no necesitas ni Nginx ni Apache (y ambos usan los puertos 80 y 443 por defecto). Si tienes alguno de ellos instalado, deberías eliminarlos antes de empezar.

¿Necesitas multisitio? Incluso si lo haces, te recomendaría primero hacer una instalación estándar y luego seguir esta guía: Configuración de multisitio con Let’s Encrypt y sin proxy inverso. Ayudé a alguien con ello ayer, y parece que si usas los nombres de host correctos y no usas Cloudflare con la nube naranja, funciona perfectamente.

2 Me gusta

¡Gracias pfaffmann!

Afortunadamente, no soy de esas personas que se rinden fácilmente, aunque estos problemas posteriores me preocupan, sobre todo porque no estoy 100% familiarizado con esta plataforma.

Por defecto, mi CloudServer tiene Apache instalado, y si lo elimino, causa problemas con CPanel y otras funciones. Lo intenté durante la primera instalación porque leí que nginx era mucho mejor y más rápido, pero tuve los problemas que mencioné. Por lo tanto, reinstalé el sistema operativo en el servidor y comencé de nuevo, siguiendo esta recomendación:

No es como si tuviera varios sitios, al menos no todavía, porque mi CloudServer permite hasta 5 cuentas.

En cuanto a la instalación estándar, seguí todos los pasos para instalar Docker, Discourse, Certbot y descargar los certificados de Let’s Encrypt, pero cuando ejecuté discourse-setup, tuve que realizar la configuración manual siguiendo el enlace anterior y configurando manualmente el archivo app.yml para realizar la reconstrucción.

Realmente no quieres CPanel. No aporta nada y hace que sea mucho más difícil instalar Discourse. Y si lo tienes, no puedes seguir las instrucciones de NGinx ya que Apache ya está interfiriendo.

Si puedes eliminar Apache y CPanel, hazlo. Si no puedes, te recomiendo un servicio de alojamiento diferente.

En realidad, lo que tienes podría no funcionar en absoluto, ¿puedes ejecutar

docker run hello-world
1 me gusta

¿Qué servicio de alojamiento recomiendas? ¿o cuál es el más utilizado para instalaciones de Discourse?

¡Sí! este es el mensaje:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Cualquiera que no instale CPanel. Hay varios temas sobre los recomendados. Digital Ocean es fácil.

Ah. Entonces, si pudieras deshacerte de Apache y CPanel, estarías en buena forma. Esta parece ser la forma más fácil de avanzar desde donde estás.

La otra opción es mantener CPanel y tratar de que tu Apache existente sea un proxy inverso. Sin embargo, estarás solo, ya que hay demasiados agujeros específicos de la instalación en los que caer para que la gente pueda ser de mucha ayuda aquí.

Muchas sugerencias aquí:

¡Gracias @pfaffman por tu tiempo y tus respuestas!

No creo que sea probable que elimine Apache y CPanel. Quizás mi proveedor de servidores en la nube pueda modificar los puertos de Apache para que no utilice los mismos que Discourse, eliminando así nginx, o modificar CPanel para Ferozo u otro servicio. No lo sé, pero preguntaré.

¡Saludos!

1 me gusta