No se puede iniciar el servicio con nohup debido a ‘INFO spawnerr: error desconocido al hacer despachadores para’ app_name ‘: EACCES’

Estoy intentando iniciar un servicio con el supervisor, pero aparece un error que dice

INFO spawnerr: error desconocido al hacer despachadores para ‘app_name’: EACCES

Aquí está mi archivo supervisord.conf:

[supervisord] logfile=/tmp/supervisord.log logfile_maxbytes=50MB ; change these depending on how many logs logfile_backups=10 ; you want to keep loglevel=info pidfile=/tmp/supervisord.pid nodaemon=true minfds=1024 minprocs=200 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///tmp/supervisor.sock socket [program:myscript] command= python -u /home/ubuntu/appfolder/app_name.py autostart=true autorestart=unexpected redirect_stderr=true stdout_logfile=/var/log/app_name.log 

    Tuve el mismo problema: los registros del subprogtwig de apio se escribían en la subcarpeta de registros debajo de la carpeta de mi aplicación y resultó que había configurado al propietario para www-user mientras estaba depurando un problema con Nginx. Cambié el propietario de la carpeta de la aplicación a ubuntu ( >> whoami )

     sudo chown -R ubuntu:ubuntu /var/www/myapp/ 

    para que funcione.

    El problema es el permiso para el archivo de registro. Con el usuario que ejecuta el supervisor, puede crear una carpeta de “registros” en la misma ruta del archivo supervisord.conf y cambiar:

     logfile=/tmp/supervisord.log 

    a

     logfile=logs/supervisord.log 

    Recibo este error cuando ejecuto supervisord en un contenedor Docker sin privilegios, cuando bash que supervisord ejecute como un usuario no root, usando la directiva [supervisord] [user] .

    Esto se debe a la ventana acoplable n.º 31243, donde el contenedor se inicia como root luego se crea / cambia a otro usuario (según el cambio de supervisord a no root) y los permisos restrictivos en el stdin/stdout/stderr del contenedor a través de TTY.

    Mi solución es agregar el usuario no root al grupo tty , por ejemplo, useradd -G tty supervisord , asegurándose de que se ejecute con un tty, por ejemplo, un docker run ... -t Docker Compose tty: true .

    Tuve el mismo problema, recomiendo hacer lo siguiente

    1. Añadir usuario que ejecuta el servicio. usuario = su usuario

    2. mover su registro a un directorio supervisor

    desde:

     logfile=/tmp/supervisord.log 

    a:

     logfile=/var/log/supervisor/supervisord.log 

    Lo mismo va para tu archivo pid.

     pidfile=/tmp/supervisord.pid >> pidfile=/var/run/supervisor/supervisord.pid 

    Hacer ambas direcciones

     mkdir /var/run/supervisor/ mkdir /var/log/supervisor/ 

    luego cambia el de la dir con

     chown youuser:youuser -R /var/log/supervisor/ 

    Si esta dosificación no funciona, compruebe quién puede escribir en sus archivos de registro y archivos pid.

     ls -l /var/log/supervisor/supervisord.log 

    Si todavía no funciona, intente actualizar a su supervisor.

    la información de error indica que su aplicación “app_name” puede leer o escribir un archivo que no tiene privilegios.

    ¿ha iniciado supervisord con root y luego ha cambiado a un usuario específico? en este caso, puede crear un archivo en su “nombre_aplicación” con el propietario de la raíz, pero es posible que el usuario específico no tenga los privilegios adecuados.