Você verificou as permissões do diretório masterfolder
?
As permissões devem ser myuser:www-data
.
Também há um erro de ortografia no seu arquivo de configuração do nginx. Espero que seja um erro de digitação:)
Seguindo este tutorial , eu pude configurar Django, Gunicorn & nginx dentro de um virtualenv em uma instância do AWS EC2 (executando o Ubuntu 16.04) e, em seguida, continue a criar um arquivo Upstart para "daemonizar" a coisa toda.
Depois de ativar o virtualenv, verifiquei:
./manage.py runserver 0.0.0.0:8000
Ao visitar mydomain.com:8000
fui bem recebido pela página padrão do Django.
projectname
com o nome do meu projeto real): gunicorn --bind 0.0.0.0:8000 projectname.wsgi:application
Ao visitar mydomain.com:8000
dessa vez, fui recebido novamente pela página de boas-vindas e, ao anexar /admin
ao final da URL, consegui ver a tela de login menos o CSS ( porque o Gunicorn não está ciente dos arquivos CSS estáticos, o que está OK por enquanto, de acordo com o tutorial).
A partir daqui eu criei o seguinte arquivo systemd (quando masterfolder
é usado para mostrar a pasta na qual toda a ação ocorre, myuser
é o usuário do meu sistema ( ubuntu
, já que esta é uma instância do Ubuntu) ):
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=myuser
Group=www-data
WorkingDirectory=/home/myuser/masterfolder
ExecStart=/home/myuser/masterfolder/myvirtualenv/bin/gunicorn --workers 3 --bind unix:/home/myuser/masterfolder/projectname.sock$
[Install]
WantedBy=multi-user.target'
Eu encontrei dois problemas:
2017/01/17 15:12:43 [crit] 12403#12403: *3 connect() to unix:/home/myuser/masterfolder/projectname.sock failed (2: No such file or directory) while connecting to upstream
Agora, observe que masterfolder
é consistente com a hierarquia de pastas django-admin
cria quando eu executo um startproject
:
masterfolder/
├── manage.py
└── projectname
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
Ao olhar para dentro de masterfolder
, de fato, existe nenhum arquivo .sock em todos os , não importa qual seja o nome projectname.sock
.
É assim que meu arquivo etc/nginx/sites-availabe/projectname
se parece:
server {
listen 80;
server_name www.mydomain.com mydomain.com MYIPADDRESS;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/masterfolder/projectname;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/myuser/mastefolder/projectname.sock;
}
}
É um link simbólico correto, é claro, e depois de cada alteração que eu faço para tentar corrigi-lo eu corro:
sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
sudo systemctl restart nginx
Sinto que estou sentindo falta de algo básico aqui no entendimento de como toda essa infraestrutura funciona em conjunto. Sinta-se à vontade para apontar erros na minha compreensão do processo, é claro.