2015-10-07 137 views
3

我试图在Elastic Beanstalk上部署我的节点服务器,但它不起作用,因为Elastic Beanstalk支持的最新版本是0.12.6(2015年7月)。使用io.js或最新的节点版本(4.1.2)都是可行的选项,但不清楚如何通过beanstalk获取ec2实例来完成此操作。Elastic Beanstalk和ES6

我已经尝试了一堆东西,包括:

  1. 加入4.1.2源到我的.ebextensions配置文件,然后在/tmp/deployment/config/#etc#init#nodejs.conf更新基准,但console.log(process.argv)还是0.12.6。更重要的是,第二次运行时,我得到一些text file busy错误,可能是因为它试图在节点仍在运行时更改节点包的源...(请参阅https://forums.aws.amazon.com/thread.jspa?threadID=169385
  2. 添加一个文件,该文件下载4.1.2源和ungzips它并更新像https://github.com/kopurando/better-faster-elastic-beanstalk参考,但这似乎并没有工作,要么(版本还是0.12.6)

为什么这么难只是运行节点和一些最新的稳定版本已经在AWS上获得了4个月的广泛支持?

回答

0

一种选择是创建一个自定义的AMI(Amazon机器映像),并用它来部署应用程序:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customenv.html

有自己的文档中的步骤负载,但简单来说,你需要:

  1. 自旋向上的服务器
  2. 定制但是你想
  3. 的设备创建的图像
  4. 创建一个使用新创建的AMI

另一种选择,如果你想运行节点与ES2015特点是使用babel cli弹性魔豆环境。

你需要一个start任务添加到您的package.json

{ 
    "scripts": { 
    "start": "babel-node index.js", 
    }, 
    "dependencies": { 
    "babel": "^5.8.23", 
    } 
} 

但是......

并不是为生产使用

你不应该使用生产中的节点。由于高速缓存存储在内存中导致内存使用率高,这是不必要的沉重。由于整个应用程序需要即时编译,因此您总是会遇到启动性能损失。

4

除了使用节点v4,您可以使用babel将es6代码编译为es5代码并将es5代码部署到beanstalk。

假设您的所有源代码都在lib目录中,其中index.js文件启动服务器。

lib/ 
    index.js 
    other 

然后你可以使用babel lib -d dist编译器ES6文件lib目录和dist目录中创建文件的ES5版本。

dist/ 
    index.js 
    other 

然后,你可以node dist/index.js运行服务器,只需要如下更改package.json为魔豆,因为豆茎使用npm start运行服务器

"scripts": { 
    "start": "node dist/index.js" 
} 

我喜欢用ES6巴贝尔,因为它对新功能有更多的报道。 你可以找到更多信息

Node.js的服务器例如:https://github.com/babel/example-node-server

通天主页:https://babeljs.io/