![No se pudo iniciar gunicorn.service: no se encontró la unidad gunicorn.service. Ubuntu 18.04](https://rvso.com/image/922397/No%20se%20pudo%20iniciar%20gunicorn.service%3A%20no%20se%20encontr%C3%B3%20la%20unidad%20gunicorn.service.%20Ubuntu%2018.04.png)
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
- https://stackoverflow.com/questions/40711747/failed-to-start-gunicorn-service-unit-gunicorn-service-not-foundEsto apunta exactamente a la misma guía que estoy haciendo, excepto con una versión anterior de Linux.
- este no es el mismo código y no respondeLa unidad gunicorn.service no pudo cargarse: no existe tal archivo o directorio
- Ejecutar:
systemctl status gunicorn.socket
Resultado:Warning: The unit file, source configuration file or drop-ins of gunicorn.socket changed on disk ● gunicorn.socket - gunicorn daemon Loaded: error (Reason: Invalid argument) Active: inactive (dead)
- Ejecutar:
systemctl is-enabled gunicorn.socket
Resultado:enabled
- Ejecutar:
systemctl is-enabled gunicorn.service
Resultado:Failed to get unit file state for gunicorn.service: No such file or directory
Respuesta1
Tiene la sección [Instalar] en su servicio, lo que significa que debe ejecutar el comando sudo systemctl enable gunicorn.service
para 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.socket
y 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.socket
archivo. entonces tuve que crear el archivo yo mismo y habilitarlo.
vaya a: /etc/systemd/system
y 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.socket
o 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.socket
es activo, después de ejecutar el comando sudo systemctl status gunicorn.socket
verá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