#python #django #ubuntu #nginx #gunicorn
#питон #джанго #ubuntu #nginx #пушечный корн
Вопрос:
Я пытаюсь настроить рабочий сервер с помощью gunicorn и nginx для своего приложения Django.
В настоящее время у меня работает gunicorn, но когда я делаю завиток на своем локальном хосте, я не получаю выходных данных, поэтому я думаю, что проблема в моих URL-адресах/представлениях Django, но я не уверен, что нужно изменить, так как я нигде не ссылаюсь на локальный хост. У меня также работает nginx. Я не использую файл nginx.conf напрямую, так как я создал символическую ссылку и использую сайт с поддержкой. Вот конфигурация, доступная для моих сайтов:
# /etc/nginx/sites-availible/msc_project.conf # HTTP to HTTPS redirect: server { listen 0.0.0.0:80; server_name mscentral.mysite.com; # Certbot Letsencrypt verification location /.well-known/acme-challenge { alias /home/mscentral/mscentral_project/static/.well-known/acme-challenge/; # } return 301 https://mscentral.mysite.com$request_uri; } # Virtual host for mscentral server { listen 0.0.0.0:443 ssl; server_name mscentral.mysite.com; ssl_certificate /etc/letsencrypt/live/mscentral.mysite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mscentral.mysite.com/privkey.pem; #static file handling location /static/ { alias /home/mscentral/mscentral_project/static/; } location /media/ { alias /home/mscentral/mscentral_project/media/; } #WSGI server location / { proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:8000/; } access_log /var/log/nginx/mscentral_project-access.log; error_log /var/log/nginx/mscentral_project-error.log; }
вот мой служебный файл gunicorn:
[Unit] Description=My Central Service for Gunicron After=network.target [Service] Type=simple # Another Type: forking User=mscentral_internal WorkingDirectory=/home/mscentral/mscentral_project ExecStart=/home/mscentral/venv/bin/gunicorn -b localhost:8000 mscentral_project.wsgi Restart=on-failure # Other restart options: always, on-abort, etc # The install section is needed to use # `systemctl enable` to start on boot # For a user service that you want to enable # and start automatically, use `default.target` # For system level services, use `multi-user.target` [Install] WantedBy=multi-user.target
Это мой файл URL-адресов:
from django.conf.urls import url, include from django.urls import path from ms_app import views from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # path('oauth2/', include('django_auth_adfs.urls')), path('',views.index,name='index'), path('ms_app/',include('ms_app.urls', namespace='ms_app')), path('admin/', admin.site.urls), path('logout/',views.user_logout,name='logout'), path('special/',views.special,name='special'), # path('accounts/profile/', views.index), ] static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # if settings.DEBUG: # urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
и на данный момент у меня есть базовая индексная страница:
def index(request): return render(request, 'ms_app/index.html')
Вот мои РАЗРЕШЕННЫЕ ХОСТЫ в файле настроек:
ALLOWED_HOSTS = ["mscentral.mysite.com","localhost"]
Когда я удаляю localhost из своих разрешенных хостов, я получаю следующую ошибку Django:
И когда я сохраняю localhost в своих РАЗРЕШЕННЫХ хостах, затем полное доменное имя mysite, тогда я перенаправляюсь на localhost.
Это моя первая попытка такого рода развертывания. Пожалуйста, любые и все советы/советы/ресурсы будут оценены по достоинству.
Мое приложение Django находится в виртуальной среде, Используя Django: 3.2.5, Gunicorn: 20.1.0, Python: 3.8.10, Виртуализация: vmware, Операционная система: Ubuntu 20.04.3 LTS, Ядро: Linux 5.4.0-91-generic, Архитектура: x86-64, версия nginx: nginx/1.18.0
Спасибо.
Комментарии:
1. Я добавил эту строку в свой конфигурационный файл nginx:
proxy_set_header X-Forwarded-Proto $scheme;
и это, похоже, устранило проблему