Какова команда для запуска сервера WSGI для Django?
Я разработал приложение на Django, которое я обычно запускаю в режиме разработки:
python manage.py runserver
Я делаю то же самое для своих развернутых экземпляров - очевидно, это проблема безопасности, которую я теперь хочу решить.
Из документации Django мне не ясно, как:
- Для простоты я выбрал wsgi (а не asgi): https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/ . Из этой страницы мне не ясно, как изменить команду 'runserver', чтобы запустить сервер wsgi на сервере разработки. Должен ли я запустить файл wsgi.py? Похоже, это ничего не дает.
- Из приведенной выше страницы неясно, является ли wsgi действительно сервером, или это скорее платформа/тип серверов. Нужно ли мне использовать uwsgi/uvicorn/etc. вместо этого? .
- Я тестирую на windows - uvicorn только для unix, поэтому я попробовал uwsgi, но он выдает следующее сообщение об ошибке: AttributeError: module 'os' has no attribute 'uname' - я предполагаю, что он тоже только для Unix .
- Итак, я использую образ docker, который я уже собирал для развертывания - uwsgi снова дает мне проблемы, потому что мой образ docker не имеет компилятора, так что я пробую теперь с gunicorn.
- это должно быть просто: gunicorn project.wsgi, что дает мне:
ModuleNotFoundError: Нет модуля с именем 'project/wsgi'
моя структура папок выглядит так:
корневая папка
- проект
- wsgi.py
- settings.py
- django_app_1
- django_app_2 manage.py
- проект
Как говорится в руководстве, команда gunicorn должна работать, если вы запускаете команду gunicorn из того же места, что и manage.py - что я и делаю.
Наверное, я упускаю что-то очень очевидное - кто знает что?
Файл wsgi.py просто дает вам приложение, совместимое с WSGI, которое может запустить HTTP-сервер WSGI (например, Gunicorn).
Полагаю, что вам нужно запустить gunicorn project.wsgi из корневой папки (той, что содержит модуль project).
Обычно каталог, содержащий manage.py, и модуль, в котором находится wsgi.py, являются одним и тем же. Но не в вашем случае.