Я пытаюсь развернуть веб-приложение, созданное с помощью Django / Redux / React / Webpack, на капле Digital Ocean.Я использую Phusion Passenger и Nginx на сервере развертывания.
Я использовал create-Reaction-app для создания приложения Django с внешним интерфейсом, использующим React / Redux, и API-интерфейсом сервера, использующим django-rest.-фреймворк.Я построил веб-интерфейс, используя npm run build
.
Приложение Django настроено на поиск файлов в папке frontend / build, и все работает, как ожидалось, включая аутентификацию.Он основан на этом руководстве: http://v1k45.com/blog/modern-django-part-1-setting-up-django-and-react/
In settings.py:
ALLOWED_HOSTS = ['*']
TEMPLATES = [
...
'DIRS': [
os.path.join(BASE_DIR, 'frontend/build'),
],
...
]
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'frontend/build/static'),
]
На своей машине для разработки я активирую виртуальную среду Python 3.6 и запускаю ./manage.py runserver
, а приложениеотображается на локальном хосте: 3000.
На сервере развертывания я клонировал файлы в папку в var / www / и создал внешний интерфейс.
Я настроил Passenger согласнов документы с файлом passenger_wsgi.py:
import myapp.wsgi
application = myapp.wsgi.application
И файл wsgi.py находится в папке djangoapp ниже:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
application = get_wsgi_application()
Документы Passenger охватывают только одну частьapp:
https://www.phusionpassenger.com/library/walkthroughs/start/python.html https://www.phusionpassenger.com/library/walkthroughs/deploy/python/digital_ocean/nginx/oss/xenial/deploy_app.html https://www.phusionpassenger.com/library/deploy/wsgi_spec.html
Я пытался клонировать код учебной части 1 непосредственно на мой сервер и следовал инструкциям по его запуску,Я получил это для работы на сервере, добавив "proxy": "http://localhost:8000"
в frontend / package.json.Если я запускаю сервер Django с ./manage.py runserver --settings=ponynote.production_settings xxx.x.x.x:8000
, то приложение корректно обслуживается на myserver: 8000.Однако Пассажир по-прежнему не отображает нужные файлы.
Я изменил wsgi.py, чтобы сказать следующее:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.production_settings")
application = get_wsgi_application()
Страница, обслуживаемая Пассажиром в корневом каталоге URL, теперь, кажется, имеет правоссылки на файлы js, такие как "text / javascript" src = "/ static / bundles / js / main.a416835a.js, но ссылки не работают: ожидаемый js отсутствует. Пассажир не может обслуживать jsфайлы из static / bundles / js, хотя сервер Django может их найти.
Очень благодарен за любую помощь или идеи.