Я пытаюсь развернуть приложение Django на сервере Ubuntu 18.04, используя Nginx и Gunicorn.Кажется, что каждый инструмент работает должным образом, по крайней мере, с точки зрения журналов и состояния.
Дело в том, что если я войду на свой сервер с использованием SSH и попытаюсь использовать curl, gunicorn сможет увидеть запрос исправиться.Однако, если я пишу напрямую свой IP, я получаю просто типичную Добро пожаловать на домашнюю страницу nginx , и запрос полностью невидим для gunicorn, поэтому кажется, что nginx не может найти и передать запрос сокету gunicorn.
Я использую nginx 1.14.0
, Django 2.2.1
, Python 3.6.7
, gunicorn 19.9.0
и PostgreSQL 10.8
.
Это моя конфигурация nginx
server {
listen 80;
server_name localhost;
location /favicon.ico { access_log off; log_not_found off; }
location /static/ {
alias /home/django/myproject/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
А это мой gunicorn.sock
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
и gunicorn.service
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=django
Group=www-data
WorkingDirectory=/home/django/myproject/myproject
ExecStart=/home/django/myproject/myproject/myproject/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
MyProject.wsgi:application
[Install]
WantedBy=multi-user.target
Я следовал этому руководству (https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04), гдебольше всего работало, как и ожидалось, но с той разницей, что мой проект не совсем новый, как в учебнике, а клонирован из моего репозитория git (однако, он протестирован и код работает правильно)
Iожидал, что администратор Django будет доступен из моего браузера уже с этим конфигом, но это не так. Я пытаюсь получить доступ к своему IP-адресу из моего браузера, и я получаю Welcome to nginx, но также 404, если я посещаю /admin
. Кроме того, gunicornлоги показывают, нет необходимостиsts.
С другой стороны, если я захожу через SSH на свой сервер и выполняю curl --unix-socket /run/gunicorn.sock localhost
, я вижу в журналах gunicorn запрос, выполненный curl.
Любая помощьдобро пожаловать .. Я был здесь часами и не смог получить ни одного запроса извне сервера.
PD: это также не связано с портами на сервере, так как при доступекорень моего IP, я получаю ответ nginx.Просто кажется, что у Nginx вообще нет настроек.