在EC2中部署Ember JS应用程序

时间:2018-11-01 09:24:48

标签: amazon-ec2 ember.js ember-cli

我想在EC2 ubuntu实例中部署ember应用程序。

  • 我已经在EC2 ubuntu实例中安装了tomcat。
  • 我已经运行了ember build并生成了 dist 文件

我不知道如何使tomcat运行在构建过程中生成的dist文件。 有人可以一步一步解释它,以便我清楚地理解吗?

1 个答案:

答案 0 :(得分:1)

我认为您不应该从Tomcat提供Ember应用程序。至少在我过去评估时,Tomcat的SSL速度比Apache / Nginx慢得多,静态内容的速度不如静态内容,如果更改静态内容,则需要重新部署WAR文件,并且缺少更常见的配置选项使用过的HTTP服务器。 更好的方法,反向代理到您的应用程序服务器(我假设您正在使用Java应用程序,因为您正在使用Tomcat)。通过反向代理服务Ember应用。如果您正在运行SSL,则可以通过反向代理而不是tomcat来处理所有SSL。这就是我从同一EC2实例为Ember应用程序和Spring Boot应用程序(为ember应用程序供电的api)提供服务的方式。

我将向您展示如何在Redhat上进行操作,但是您必须翻译ubuntu(例如,在我使用yum的地方有apt-get等)。

  1. 在VM上安装apache yum install httpd -y

  2. /etc/httpd/conf/httpd.conf

  3. 中将apache配置为反向proxy

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

这有两个非常重要的部分。首先,您在http://localhost:8080/(而不是80!)上运行tomcat服务,并在api或其他子路径下有一个servlet。您需要这种区分,以便您的余烬网址不会与您的API网址冲突。与之类似,如果您希望Ember应用程序在/下运行,并且在/users下有一个api端点,而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在redhat上。更改文件时,不必重新启动服务器。