Am dezvoltat o aplicație web cu Django și încerc să o public într-o mașină virtuală creată cu Azure. Pentru a face asta, folosesc următoarea stivă de software:
- Ubuntu (20.04)
- Django (3.0.7)
- Virtualenv (20.0.17)
- Gunicorn (20.1.0)
- Nginx (1.18.0)
Pentru a implementa aplicația, am urmat acel ghid: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04
Dosarele mele de proiect django sunt organizate după cum urmează:
Acasă/
ââ useradmin/
â ââ proiectul meu/
â â ââ proiect/
â â â ââ settings.py
â â â ââ urls.py
â â â ââ wsgi.py
â â â ââ ...
â â ââ static/
â â ââ şabloane/
â â ââ venv/
â â ââ manage.py
â â ââ ...
Acesta este al meu /etc/systemd/system/gunicorn.service
:
[Unitate]
Descriere=demon gunicorn
După=rețea.țintă
[Serviciu]
User=useradmin
Grup=www-date
WorkingDirectory=/home/useradmin/myproject
ExecStart=/home/useradmin/myproject/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/useradmin/myproject/myproject.sock proj.wsgi:application
[Instalare]
WantedBy=multi-user.target
Acesta este al meu /etc/nginx/sites-available/myproject
:
Server {
asculta 80;
nume_server domeniul meu.com;
locație = /favicon.ico { access_log off; log_not_found off; }
locație /static/ {
root /home/useradmin/myproject;
}
Locație / {
include proxy_params;
proxy_pass http://unix:/home/useradmin/myproject/myproject.sock;
}
}
Când navighez la mydomain.com, primesc o eroare 502 Bad Gateway. Dacă verific jurnalele Nginx rulând „sudo tail -F /var/log/nginx/error.log” văd următoarea eroare:
2022/03/16 08:27:33 [crit] 64480#64480: *3 connect() to unix:/home/useradmin/myproject/myproject.sock a eșuat (2: Nu există un astfel de fișier sau director) în timpul conectării la amonte, client: XX.XX.XX.XX, server: mydomain.com, cerere: „GET / HTTP/1.1”, în amonte: „http://unix:/home/useradmin/myproject/myproject.sock:/”, gazdă : „domeniul meu.com”
Pentru a crea fișierul sock, rulez următoarele instrucțiuni, dar nimic nu se schimbă:
systemctl daemon-reload
systemctl reporniți gunicorn.service
ACTUALIZARE 1:
Încercarea de a executa instrucțiunea ls -la /home/useradmin/myproject/myproject.sock
Primesc eroarea ls: nu poate accesa „/home/useradmin/myproject/myproject.sock”: nu există un astfel de fișier sau director