Развертывание веб-приложения с помощью Django, Nginx и Gunicorn в Ubuntu 20.04
Я разработал веб-приложение с помощью Django и пытаюсь опубликовать его на виртуальной машине, созданной в Azure. Поскольку это тестовый сервер, я еще не приобрел домен или SSL сертификат, и я хотел бы, чтобы приложение было доступно по адресу http://XX.XX.XX.XX (где XX.XX.XX.XX.XX - публичный IP сервера). Для этого я использую следующий программный стек:
- Ubuntu (20.04)
- Django (3.0.7)
- Virtualenv (20.0.17)
- Gunicorn (20.1.0)
- Nginx (1.18.0)
Для развертывания приложения я следовал этому руководству: https://arctype.com/blog/install-django-ubuntu/
Это мой /etc/systemd/system/gunicorn.socket:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
Это мой /etc/systemd/system/gunicorn.socket:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=myuser
Group=www-data
WorkingDirectory=/home/myuser/myapps/djangoapp/
ExecStart=/home/myuser/myapps/venv/bin/gunicorn --access-logfile - --workers 3 --bind
unix:/run/gunicorn.sock djangoapp.wsgi:application
[Install]
WantedBy=multi-user.target
Это мой /etc/nginx/conf.d/django.conf:
server {
listen 80;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/myuser/myapps/djangoapp/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Оператор systemctl status gunicorn.socket возвращает следующее:
● gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
Active: active (listening) since Thu 2022-03-10 08:57:02 UTC; 1h 21min ago
Triggers: ● gunicorn.service
Listen: /run/gunicorn.sock (Stream)
Tasks: 0 (limit: 9536)
Memory: 0B
CGroup: /system.slice/gunicorn.socket
Mar 10 08:57:02 EpStagingUbuntu systemd[1]: Listening on gunicorn socket.
Однако, если я пытаюсь получить доступ к http://XX.XX.XX.XX, я попадаю на страницу Nginx по умолчанию:
