Eu estou seguindoesseGuia Como configurar o Django com Postgres, Nginx e Gunicorn no Ubuntu 18.04.
Eu criei o seguinte arquivo .socket
sudo nano /etc/systemd/system/gunicorn.socket
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
Eu criei o seguinte arquivo .service
sudo nano /etc/systemd/system/gunicorn.service
RECOMENDED_FORMATTING-s originais noguia
[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
Como formatei minha própria versãoEu tinha meu ambiente virtual fora da pasta do projeto no 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
Eu também tentei deixá-los como recomendado originalmente
--bind unix:/run/gunicorn.sock \
Então tentei executar o seguinte código
sudo systemctl start gunicorn
mensagem de erro 1
Failed to start gunicorn.service: Unit gunicorn.service not found.
e eu também tentei com 2
sudo systemctl start gunicorn.socket
Mensagem de erro 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 resolver isso, eu tentei
- https://stackoverflow.com/questions/40711747/failed-to-start-gunicorn-service-unit-gunicorn-service-not-foundIsso aponta exatamente para o mesmo guia que estou fazendo, exceto com uma versão mais antiga do Linux.
- este não é o mesmo código e não foi respondidoFalha ao carregar a unidade gunicorn.service: arquivo ou diretório inexistente
- Executar:
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)
- Executar:
systemctl is-enabled gunicorn.socket
Resultado:enabled
- Executar:
systemctl is-enabled gunicorn.service
Resultado:Failed to get unit file state for gunicorn.service: No such file or directory
Responder1
Você tem a seção [Instalar] em seu serviço, o que significa que você precisa executar o comando sudo systemctl enable gunicorn.service
para iniciar o serviço na inicialização do sistema.
Depois de executar o comando, um link simbólico para este arquivo será criado no diretório /etc/systemd/system/multi-user.target.wants/
.
Observe que você também precisa criar o arquivo de soquete nomeado gunicorn.socket
e ativá-lo. Depois de habilitar, você pode ativar o soquete executando o comando sudo systemctl start gunicorn.socket
. Você não precisa executar o serviço, pois o systemd descobrirá a dependência.
Você pode verificar o status do serviço com systemctl status gunicorn.service
.
Responder2
no meu caso, o servidor não criou o gunicorn.socket
arquivo. então, tive que criar o arquivo sozinho e habilitá-lo.
vá para: /etc/systemd/system
e verifique todos os arquivos e diretórios disponíveis pelo comando ls
.
se o arquivo não estiver lá, tente recriá-lo desde o início: sudo nano ~/etc/systemd/system/gunicorn.socket
, ou sudo nano gunicorn.socket
.
e então habilite-o primeiro por: sudo systemctl enable gunicorn.socket
, após a habilitação faça: sudo systemctl start gunicorn.socket
.
se tudo funcionar bem, você verá que o status do arquivo gunicorn.socket
está ativo, após executar o comando sudo systemctl status gunicorn.socket
você verá:
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