我希望这是提出这个问题的正确位置,如果不是,请移动或删除此帖子。
我正在尝试使用Angular 2和Amazon EC2创建一个可以处理基本POST和GET请求的简单网站。我在Angular 2中处理Web应用程序的前端方面有相当多的经验,但在将其连接到后端并且在Amazon EC2实例上这样做的经验很少。
我希望找到一个示例或一些资源来解释如何将HTTP服务与某种后端框架一起使用。我知道Angular提供了如何使用HTTP服务的示例,但很难描述后端设置需要处理这些请求的样子以及如何在EC2上正确配置此设置。任何帮助或资源将不胜感激!
答案 0 :(得分:6)
<强>前/客户端强>
正如@glavan所说,像angular 2应用程序这样的SPA可以部署在AWS S3中。这是SPA最具成本效益的方法。以下是部署SPA on S3的视频。 该视频将指导您逐步部署角度应用程序。
<强>后端强>
AWS EC2是一个不错的选择。但是还有更多的替代品可供选择。正如你所说,你是后来的新手,设置EC2,VPC和Elastic-ip是一个有点困难的过程。
如今,SPA涵盖了很多业务逻辑,路由等。我们只需将后端作为用于执行数据库CRUD操作的API。我想建议一种名为serverless的尖端技术。以下是tutorial,用于在5分钟内启动后端。 AWS lambda是一种称为作为服务的功能的服务。您可以使用 AWS lambda + API网关+ DynamoDB 构建后端。
例如:假设您要在后端注册一些详细信息,您将 POST 使用网址和正确路径从客户端到后端的所有数据。在AWS lambda中,您将 POST 的逻辑编写为函数,其中包含从请求解析数据并发送到dynamoDB的逻辑。现在,通过将此功能与API网关(AWS中的另一项服务)连接,可以将此功能公开给世界。最后我们得到一个API,可用于你的角度2 APP。因此,在调用POST时, angular 2 - &gt; API网关 - &gt; Lambda(提取请求并发送到DB) - &gt; dynamoDB 强>
与EC2相比,使用无服务器的好处。
说过,与传统的后端方法相比,尝试无服务器。对此有任何疑问都会受到欢迎。
答案 1 :(得分:3)
如果你指的是弹性beanstalk nodejs ec2,那么这个答案对你来说是最好的,因为我花了一些时间来解决这个问题,但事实证明它比我想象的要简单:
/usr/bin/env: node: No such file or directory
问题,我添加了以下脚本 <强> .ebextensions/angular2deployment.config
强>
files:
"/opt/elasticbeanstalk/env.vars" :
mode: "000775"
owner: root
group: users
content: |
export NPM_CONFIG_LOGLEVEL=error
export NODE_PATH=`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
"/opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh" :
mode: "000775"
owner: root
group: users
content: |
#!/bin/bash
. /opt/elasticbeanstalk/env.vars
function error_exit
{
eventHelper.py --msg "$1" --severity ERROR
exit $2
}
#install not-installed yet app node_modules
if [ ! -d "/var/node_modules" ]; then
mkdir /var/node_modules ;
fi
if [ -d /tmp/deployment/application ]; then
ln -s /var/node_modules /tmp/deployment/application/
fi
OUT=$([ -d "/tmp/deployment/application" ] && cd /tmp/deployment/application && $NODE_PATH/node $NODE_PATH/npm install 2>&1) || error_exit "Failed to run npm install. $OUT" $?
echo $OUT
"/opt/elasticbeanstalk/hooks/configdeploy/pre/50npm.sh" :
mode: "000666"
owner: root
group: users
content: |
#no need to run npm install during configdeploy
node_modules
&amp;如果你有dist
文件夹,则两者都不需要。npm install && npm start
(此步骤必须成功),请注意我使用的是angular2的默认package.json
See Angular.IO Deployment node_modules
.ebextensions
),然后压缩它们,不要压缩顶层文件夹(部署时你将有子目录,这将破坏部署)如果您正在使用MacOS,在压缩时,macos会添加macos文件夹,这将破坏部署,请确保使用不会添加此额外目录的工具,在我的情况下,我使用了YemuZip
附加说明:EC2弹性豆茎将运行npm install
&amp; npm start
,这就是我建议运行它们并确保它们在您的本地环境中正常的原因