No se pudo iniciar gunicorn.service: no se encontró la unidad gunicorn.service. Ubuntu 18.04

No se pudo iniciar gunicorn.service: no se encontró la unidad gunicorn.service. Ubuntu 18.04

Estoy siguiendoesteGuía sobre cómo configurar Django con Postgres, Nginx y Gunicorn en Ubuntu 18.04.

He creado el siguiente archivo .socket

sudo nano /etc/systemd/system/gunicorn.socket

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

He creado el siguiente archivo .service

sudo nano /etc/systemd/system/gunicorn.service

RECOMENDED_FORMATTING-s originales en elguía

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target


[Service]
User=sammyRECOMENDED_FORMATTING
Group=www-data
WorkingDirectory=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING
ExecStart=/home/sammyRECOMENDED_FORMATTING/myprojectdirRECOMENDED_FORMATTING/myprojectenvRECOMENDED_FORMATTING/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          myprojectRECOMENDED_FORMATTING.wsgi:application

[Install]
WantedBy=multi-user.target

Cómo he formateado mi propia versiónTenía mi entorno virtual fuera de la carpeta del proyecto en el servidor.

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=SERVER_USER
Group=www-data
WorkingDirectory=/home/SERVER_USER/MAIN_PROJECT_FOLDER
ExecStart=/home/SERVER_USER/ven/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/home/SERVER_USER/MAIN_PROJECT_FOLDER/MAINAPPLICATION_FOLDER.sock \
          MAINAPPLICATION_FOLDER.wsgi:application

[Install]
WantedBy=multi-user.target

También intenté dejarlos como se recomendó originalmente.

--bind unix:/run/gunicorn.sock \

Luego intenté ejecutar el siguiente código.

sudo systemctl start gunicorn

mensaje de error 1

Failed to start gunicorn.service: Unit gunicorn.service not found.

y también he probado con 2

sudo systemctl start gunicorn.socket

Mensaje de error 2

Failed to start gunicorn.socket: Unit gunicorn.socket is not loaded properly: Invalid argument.
See system logs and 'systemctl status gunicorn.socket' for details.

Para solucionar esto he probado

Respuesta1

Tiene la sección [Instalar] en su servicio, lo que significa que debe ejecutar el comando sudo systemctl enable gunicorn.servicepara iniciar el servicio al iniciar el sistema.

Una vez que ejecute el comando, se creará un enlace simbólico a este archivo en el directorio /etc/systemd/system/multi-user.target.wants/.

Tenga en cuenta que también debe crear el archivo de socket denominado gunicorn.sockety habilitarlo. Una vez que lo habilite, puede activar el socket ejecutando el comando sudo systemctl start gunicorn.socket. No es necesario ejecutar el servicio ya que systemd descubrirá la dependencia.

Puedes consultar el estado del servicio con systemctl status gunicorn.service.

Respuesta2

en mi caso, el servidor no creó el gunicorn.socketarchivo. entonces tuve que crear el archivo yo mismo y habilitarlo.

vaya a: /etc/systemd/systemy verifique todos los archivos y directorios disponibles con el comando ls.

Si el archivo no está allí, intente volver a crear el archivo desde el primero mediante: sudo nano ~/etc/systemd/system/gunicorn.socketo sudo nano gunicorn.socket.

y luego habilítelo primero con: sudo systemctl enable gunicorn.socket, después de habilitarlo haga: sudo systemctl start gunicorn.socket.

Si todo funciona bien, verás que el estado del archivo gunicorn.socketes activo, después de ejecutar el comando sudo systemctl status gunicorn.socketverás:

     gunicorn.socket - gunicorn socket
     Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor prese>
     Active: active (listening) since Fri 2020-06-26 17:53:10 UTC; 14s ago
   Triggers: ● gunicorn.service
     Listen: /run/gunicorn.sock (Stream)
      Tasks: 0 (limit: 1137)
     Memory: 0B
     CGroup: /system.slice/gunicorn.socket

información relacionada