es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Jenkins con PM2 – problema con la posibilidad de acceder al servidor en ejecución.

Tengo un problema relacionado con pm2. En este momento tengo un Jenkins que debería construir una aplicación durante cada confirmación. Todo funciona correctamente. En el pipeline, Jenkins debería iniciar un servidor con PM2.

Actualmente, Jenkins tiene acceso a pm2 y todo funciona sin problemas. Desafortunadamente, el problema ocurre cuando estoy en el usuario “test” y escribo pm2 ls – veo una lista vacía de procesos.

Esto está causando algunos problemas porque mi nginx no puede detectar aplicaciones en funcionamiento, por lo que recibo un error “502”.

En Jenkins, cuando escribo pm2 ls, veo que el proceso funciona correctamente. También lo intenté con sudo pm2 start y luego en la consola sudo pm2 ls – en tal caso, veo el proceso, pero en Jenkins, el estado es “success” pero en la terminal – muestra un error y nginx tampoco ve ese servidor.

También es importante señalar que cuando escribo el comando:
pm2 start "npm run start-prod" --name myAppName – el proceso se ve en el usuario “test” y nginx también funciona correctamente.

¿Sabes cómo puedo configurar PM2 con Jenkins y hacer que el proceso sea “global” y visible para el usuario “test”?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema que estás enfrentando está relacionado con PM2 no siendo capaz de detectar los procesos iniciados por Jenkins cuando cambias al usuario “test”. Esto podría deberse a que los procesos se inician como un usuario diferente y, por lo tanto, no son visibles para el usuario “test”.

    Para resolver este problema, puedes intentar iniciar los procesos de PM2 con el usuario “test” utilizando el siguiente comando:

    sudo -u test pm2 start "npm run start-prod" --name myAppName --user test

    Esto iniciará el proceso de PM2 como el usuario “test” y lo hará visible para el usuario “test” cuando ejecutes pm2 ls.

    Si esto no funciona, puedes intentar cambiar la configuración de PM2 para que se ejecute como un usuario global. Para hacer esto, puedes agregar la siguiente configuración a tu archivo de ecosistema de PM2:

    module.exports = {
      apps: [{
        name: 'myAppName',
        script: 'npm run start-prod',
        // Agrega esta línea para ejecutar como usuario global
        run_as_user: 'test'
      }]
    }
    

    Esto configurará PM2 para que ejecute los procesos como un usuario global, lo que debería hacerlo visible para todos los usuarios en el sistema.

    Una vez que hayas realizado estos cambios, deberías ser capaz de iniciar el proceso de PM2 desde Jenkins y hacerlo visible para el usuario “test”.

Comments are closed.