Развертывание приложения Ember JS в EC2 - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел бы развернуть приложение ember в экземпляре Ubuntu EC2.

  • Я установил Tomcat в EC2 Ubuntu.
  • Я запустил ember build и сгенерировал dist files

Я не знаю, как заставить tomcat запускать файлы dist, которые генерируются во время сборки. Может кто-нибудь объяснить это шаг за шагом, чтобы я мог ясно понять?

1 Ответ

0 голосов
/ 01 ноября 2018

Не думаю, что вам следует обслуживать приложение Ember от Tomcat. По крайней мере, в прошлом, когда я оценивал, Tomcat намного медленнее в SSL, чем Apache / Nginx, не так быстро со статическим содержимым, требует повторного развертывания файла WAR, если вы меняете статическое содержимое, и не имеет параметров конфигурации более распространенного используемые HTTP-серверы. Лучший подход - обратный прокси-сервер к вашему серверу приложений (я предполагаю, что вы используете приложение Java, так как вы используете Tomcat). Подайте приложение Ember с обратного прокси. Если вы используете SSL, вы бы справились со всем с обратного прокси, а не с tomcat. Вот так я обслуживаю свое приложение Ember и приложение Spring Boot (API, который запускает мое приложение ember) из одного и того же экземпляра EC2.

Я покажу вам, как я это делаю на Redhat, но вам придется переводить для Ubuntu (как у вас есть apt-get, где я использую yum и т. Д.).

  1. Установите apache на свою виртуальную машину yum install httpd -y

  2. Настройка Apache в качестве обратного прокси в /etc/httpd/conf/httpd.conf

<VirtualHost *:80> ProxyRequests Off ProxyPass /api http://localhost:8080/api ProxyPassReverse /api http://localhost:8080/api </VirtualHost> FallbackResource /index.html

Это имеет две очень важные части. Во-первых, вы запускаете свою подачу кота на http://localhost:8080/ (не на 80!) И имеете сервлет под api или какой-то другой подпуть. Вам нужно такое различие, чтобы ваши угольные URL не конфликтовали с вашими api. Например, если вы хотите, чтобы ваше приложение Ember работало под /, а у вас конечная точка API под /users и маршрут Ember /users, как вы можете определить, какие из них следует обслуживать? Я утверждаю, что ваш API должен работать под /api/users, чтобы избежать столкновений.

Во-вторых, FallbackResource /index.html позволяет непревзойденным каталогам возвращать ваш index.html файл. Смотрите, когда ваш браузер отправляет запрос: yourapp.com/someRoute на ваш сервер, вам нужен ваш http-сервер, чтобы просто вернуть файл index.html. Затем Ember позаботится о маршрутизации на стороне клиента. Это означает, что независимо от того, по какому маршруту вы находитесь в Ember, когда браузер запрашивает этот URL, вы всегда должны возвращать index.html. Я даже не знаю, как бы вы настроили такое правило в tomcat (вам придется исследовать правила / директивы перезаписи, если вы не хотите использовать обратный прокси-сервер).

  1. Наконец, в пределах http.conf найдите корень документа: например. DocumentRoot "/var/www/html". Это путь к вашему серверу EC2, откуда поступают ваши статические файлы. Здесь находится содержимое вашей папки dist. Для меня типичное развертывание означает ember build, scp на сервер, sudo rm -rf /var/www/html/ и sudo cp -r dist/. /var/www/html, чтобы заменить старое приложение ember новым. Это работает для меня, потому что содержимое моего приложения ember - единственные статические файлы, которые мне нужны для обслуживания. Если у вас есть другие потребности, вы не можете просто удалить и заменить старый корень документа, как я.

Убедитесь, что httpd / apache запущен! service httpd start на редхате. Вам не нужно перезагружать сервер при замене файлов.

...