Как обслуживать React Frontend и Django Backend на IIS?
Фон
У нас есть приложение, использующее React.js для фронтенда и Django для бэкенда. Мы пытаемся развернуть это приложение на виртуальной машине Azure с IIS.
Встреченные проблемы
Доступность бэкенда:
- Мы не уверены, запущен ли наш сервер Django и как получить к нему доступ. Доступ к
localhost
обслуживает только фронтенд, что вызывает опасения по поводу связи между фронтендом и бэкендом.
- Мы не уверены, запущен ли наш сервер Django и как получить к нему доступ. Доступ к
404 Ошибка при обновлении страницы:
- При переходе на
authentication/sign-in
с фронтенда все работает нормально. Однако при обновлении этой страницы возникаетHTTP Error 404.0 - Not Found
ошибка. - Похоже, IIS ищет физический путь, которого не существует, поскольку папка сборки содержит только статические файлы (CSS, JS и т. д.).
- При переходе на
Предпринятые шаги
- Создали новый экземпляр на Azure: Установили Python и другие необходимые пакеты.
- Настроил IIS:
- Включил функции IIS и другие необходимые функции.
- Установите SSL-сертификат (.pfx) с помощью MMC для включения поддержки HTTPS.
- Переместил папку проекта в
C:\inetpub\wwwroot
. - Настроил путь к Python и путь к FastCGI в файле
web.config
, расположенном рядом с папкой проекта.
- Установите виртуальный каталог:
- Переместите папку сборки (статическая сборка из React) в виртуальную директорию.
- Завершили все настройки для маппинга, FastCGI и обработки статических файлов.
- Запуск приложения:
- Фронтенд успешно обслуживается при доступе через
localhost
.
- Фронтенд успешно обслуживается при доступе через
Resources Referenced
- YouTube Видео по развертыванию IIS
- Точное руководство по установке Django на IIS
- Блог Nonstopio о развертывании Django на IIS
Просьба о помощи
- Как подтвердить, что бэкенд Django запущен, и определить правильный URL для доступа к нему?
- Как настроить IIS для корректной работы с маршрутами фронтенда (например,
authentication/sign-in
), не приводя к 404 ошибке при обновлении? (оба вопроса связаны - это не разные вопросы)
Любые соображения или решения будут высоко оценены. Спасибо!