Serezhka
@Serezhka

Как лучше деплоить Angular + NodeJS REST приложение?

Привет!
Сейчас у меня есть некое элементарное приложение, крутится у меня на компьютере.
Устроено так:
В одной папке лежит angular-cli приложение, которое запускается на localhost:3000
В другой папке лежит "сервер" на nodejs, который слушает localhost:3030
Все это одновременно запущено, и Аргуляр-клиент через REST запросы общается с сервером (по сути сервер просто обрабатывает запросы, и кладет их в базу (MySQL). И обратно.
Теперь я хочу это все как-то грамотно перенести на сервер (думаю про DigitalOcean)

Как правильно это все организовать? Чтобы это все работало, и деплоилось.
Как я это себе представляю:
у клиента и сервера есть свои репозитории (у меня на BitBucket).
Как только происходит мерж в master - на серверах запускается билд (я хз, можно ли это вообще как-то связать друг с другом). Проходят тесты.
Для сервера я не знаю, собирается ли там бандл, или нет. Но, наверное, лучше собирать. Для клиента создается папка, куда кладется статика, Ангуляра, которая потом будет отдаваться по основному урлу приложения.
То есть надо это все настроить так, чтобы по запросу site.com запускался сервак, который будет отдавать статику (которую соберет angular-cli), а эта статика уже будет делать запросы к серверному приложению, чтобы взять данные из БД. (но по какому адресу и порту?)

Таким образом я представляю себе файловую структуру
./
-- index.js - этот файлик слушает обращения на site.com и отдает в браузер собранный бандл из /client
-- /client - тут лежит собранная статика клиента
-- /server - тут идет вся обработка запросов от клиента + хранятся пользовательские файлы (например загруженные картинки)
И еще весьма важно, чтобы /server мог принимать запросы не только от этого клиента, но и внешние запросы, от, например, мобильных приложений.

В общем буду признателен за любую информацию по теме, за любые ссылки, или разъяснение принципов на пальцах.
Потому что для меня сейчас это весьма темный лес, я просто не очень понимаю в какую сторону копать.
Спасибо!
  • Вопрос задан
  • 1000 просмотров
Решения вопроса 1
mmmaaak
@mmmaaak
Чисто в теории:
1) Собираешь статику для фронта в бандлы
2) Запускаешь nodejs сервер как демон с помощью PM2
3) Ставишь nginx, гуглишь конфиги как правильно заставить его отдавать статику для фронта, и перенаправлять запросы через прокси на сервер ноды
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Ptolemy_master
@Ptolemy_master
У нас похожий стэк ангуляр + node, запускаем на heroku, там есть бесплатный план. После того, как вы создаете эккаунт, специальный "мастер" проводит через все этапы деплоя, получается довольно легко, он сам все автоматически подхватывает и запускает. Попробуйте.
Ответ написан
Комментировать
Rockbass
@Rockbass
this.skills.javascript = ["typescript", "nodejs"]
1) не сервить фронт с помощью angular-cli
2) не отдавать статику c помощью nodejs
3) берем nginx, натравливаем на результат билда фронтенда, отдельно запускаем ноду с апи
4) profit.
Ответ написан
Комментировать
Serezhka
@Serezhka Автор вопроса
Всем спасибо.
nginx - ключевой момент во всей истории, недостающее звено.
Буду пробовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект