El servidor Rails funciona en modo dev pero no en modo de producción

He estado construyendo una aplicación durante unos meses, lo tenía hospedado en heroku, y empecé a hacer cambios en ella por un tiempo sin empujar a heroku, sólo trabajando en localhost. Fui a empujarlo a heroína y me encontré con un problema con el gasoducto de activos que no me gusta una variable en una etiqueta erb. Lo saqué para presionar el código, y me encontré con un problema más grande. Sin embargo, un error de 500, pero los registros ahora dijeron:

ActionView::Template::Error (FATAL:  Peer authentication failed for user "fullstack".

Ahora, en mi investigación sobre este tema, intenté varias cosas, y aquí están algunas de mis conclusiones.

No he cambiado el almacenamiento. Yml o base de datos. Yml en absoluto. El servidor de producción es cubos AWS s3, y están conectados a config.active_storage. servicio tanto para la producción como para el desarrollo en los archivos config/environments.

El usuario de producción en la base de datos.yml se llama fullstack. El usuario de desarrollo no tiene un nombre de usuario o contraseña. Fui capaz de restablecer el servidor con el nombre de usuario original y contraseña, pero cuando cambio el nombre de usuario de producción y reajuste el servidor dice

PG::ConnectionBad: fe_sendauth: no password supplied

Así que voy a la terminal y comprobé al dueño de la base de datos de Fullstack, algunas cosas con eso. Primero comprobé psql -l para ver todas las bases de datos, y tengo un fullstack_test y un fullstack_desarrollo, pero no fullstack_producción, y creo que eso es normal ya que los carriles sólo generan el dev y prueba en la creación. Esos dos son propiedad de mi usuario Ubuntu, Sethb. Traté de crear una base de datos fullstack_producción para ver qué pasaría, y me pongo este error

PG::ConnectionBad: FATAL:  Peer authentication failed for user "fullstack"

Cuando estaba investigando esto, la gente decía que cambiara un escenario en mi pg_hba. Miré a la mía y ya había decidido: acoger toda la confianza. He estado en esto durante unas 20 horas en este momento y me encantaría escuchar si alguien tiene una idea sobre cómo arreglar esto, ni siquiera sé cómo proceder con esta honestidad. Cualquier ayuda sería muy apreciada. También puedo proporcionar más información sobre cualquier registro que haya tenido si ayudaría

Pregunta hecha hace 3 años, 4 meses, 28 días - Por pixelprodigy


3 Respuestas:

  • Así que una actualización de la historia, una solución de medio camino. Estaba clonando el proyecto completo y las vacas, y cuando fui a empujar a heroína, alguien me ayudó a notar que no tenía un node.js buildpack instalado. Tan pronto como lo hice y empujé la nueva versión, funcionó. Traté de producción de raíles s -e, pero eso todavía arroja un error de 500. Esta vez dice que la aplicación.css no está presente. Pero ese es un problema creo que alguien tiene una solución para más adelante. De cualquier manera, compruebe la configuración de Heroku! Gracias.

    Seth B.

    Respondida el Dec 17, 2020 a las 05:37 - por compilerczar

    Votos positivos: 0 | Votos negativos: 0

  • El error PG::ConnectionBad: fe_sendauth: no password supplied indica que hay un problema con la autenticación del usuario "fullstack" en la base de datos PostgreSQL.

    Aquí hay algunas sugerencias para solucionar el problema:

    • Verifica la configuración de base de datos.yml en tu aplicación Rails para asegurarte de que los datos de autenticación del usuario "fullstack" estén correctamente configurados, incluyendo el nombre de usuario y la contraseña.
    • Revisa que la contraseña del usuario "fullstack" en la base de datos PostgreSQL sea la correcta. Puedes intentar restablecer la contraseña y actualizar la configuración en base de datos.yml.
    • Asegúrate de que la configuración de la base de datos en tu entorno de producción esté correctamente alineada con la configuración de la base de datos en tu entorno de desarrollo.
    • Verifica que la configuración de `pg_hba.conf` en tu servidor PostgreSQL esté configurada correctamente para permitir la autenticación del usuario "fullstack". Puedes necesitar ajustar las reglas de autenticación para que coincidan con la configuración de tu aplicación.
    • Reinicia el servidor PostgreSQL después de realizar cualquier cambio en la configuración para asegurarte de que los cambios surtan efecto.

    Si después de realizar estos pasos el problema persiste, considera revisar los registros de errores o logs de PostgreSQL para obtener más información específica sobre el error de autenticación.

    Espero que estas sugerencias te ayuden a resolver el problema con la autenticación en tu base de datos PostgreSQL y tu servidor Rails en modo de producción. ¡Buena suerte!

    Respondida el Dec 18, 2020 a las 05:37 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Pasos para solucionar problemas:

    1. Verificar la configuración de la base de datos:

    Asegúrate de que el archivo config/database.yml esté configurado correctamente para el entorno de producción. Verifica que el usuario fullstack tenga acceso a la base de datos de producción.

    2. Comprobar la configuración de Active Storage:

    Verifica que la configuración config.active_storage.service en config/environments/production.rb esté configurada correctamente para los cubos AWS S3.

    3. Reiniciar el servidor de la base de datos:

    Detén y reinicia el servidor de la base de datos (por ejemplo, PostgreSQL).

    4. Restablecer el usuario de la base de datos:

    Si es posible, restablece el usuario fullstack con una nueva contraseña. Asegúrate de que la contraseña esté configurada correctamente en config/database.yml.

    5. Verificar los permisos de PostgreSQL:

    Asegúrate de que el usuario fullstack tenga los permisos necesarios para acceder a la base de datos de producción. Verifica el archivo pg_hba.conf y asegúrate de que la configuración permita el acceso desde la dirección IP o el host desde el que se ejecuta la aplicación de Rails.

    6. Comprobar los registros:

    Examina los archivos de registro de Rails (log/production.log) y PostgreSQL (/var/log/postgresql/postgresql-<version>-main.log) para obtener más información sobre el error.

    7. Deshabilitar el almacenamiento en caché:

    Deshabilita cualquier mecanismo de almacenamiento en caché que pueda estar causando problemas, como memcached o Redis.

    8. Reiniciar la aplicación Rails:

    Detén y reinicia la aplicación Rails para que recoja los cambios de configuración y se conecte correctamente a la base de datos.

    Consejos adicionales:

    Utiliza una herramienta como rails dbconsole para conectarte directamente a la base de datos de producción y ejecutar consultas para verificar la configuración. Considera usar una gema como pg_audit para monitorear el acceso a la base de datos y detectar cualquier actividad sospechosa. Si todo lo demás falla, intenta reinstalar los carriles y las gemas relacionadas, y vuelve a implementar la aplicación desde cero.

    Respondida el Dec 18, 2020 a las 05:44 - por Gemini

    Votos positivos: 0 | Votos negativos: 0