使用OpsWorks在AWS Linux上安装hiredis

我正在使用OpsWorks来部署我的自定义node.js应用程序。 我不是一个厨师专家,并认为这将是一个简单的过程,但我不断碰壁。 这个最近的问题真的让我反感。

基本上我使用一个名为“Kue”的包,这个包依赖于一个名为Hiredis的Node包。 Hiredis是在C级实现的(据我所知),并使用一些Python级别的编译工具。

看起来,OpsWorks使用的默认Chef脚本在安装Kue和Hiredis的时候依然失败。 以下是实例尝试部署应用程序时的日志: http : //codepad.org/RXxKXqBq

在谷歌search一些人指出了它与AWS的Python版本正在使用的问题。 请注意,我使用默认的Node.js应用程序厨师食谱可以在这里find: https : //github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_nodejs

我不熟悉节点包和版本compabylity,但是从共享的日志看来,它在您使用的一个节点包中称为amdefine :

npm ERR! Failed to parse json npm ERR! Unexpected end of input npm ERR! File: /home/deploy/.npm/amdefine/0.1.0/package/package.json npm ERR! Failed to parse package.json data. npm ERR! package.json must be actual JSON, not just JavaScript. npm ERR! npm ERR! This is not a bug in npm. npm ERR! Tell the package author to fix their package.json file. JSON.parse npm ERR! System Linux 3.14.26-24.46.amzn1.x86_64 npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--production" npm ERR! cwd /srv/www/my_api/releases/20141214002817 npm ERR! node -v v0.10.29 npm ERR! npm -v 1.4.14 npm ERR! file /home/deploy/.npm/amdefine/0.1.0/package/package.json 

可以通过npm cache clean或通过更改nodejs的版本来修复它,因为您发现的可能性很大。

要添加命令npm cache clean你必须创build新的食谱或添加到你的包装食谱 。 唯一需要满足的是这个命令应该在安装节点之后和安装包之前。

如果你想改变版本,你可以select默认的nodejs recepie,你可以看到已安装的nodejs的requred版本是在该cookbook的属性文件中定义的。

所以你可以使用default[:opsworks_nodejs][:version]属性覆盖默认值。