有没有办法以无人值守的方式(使用 shell 脚本)安装 node.js 和 npm 而无需从源代码构建它?我有一组根据服务器负载自动扩展的服务器,但是下载 Node.js 源并使用 make 构建它需要大约 10 分钟。
谢谢!
编辑:我尝试复制二进制文件,但这导致二进制文件已损坏的错误。是的,它们都是 EC2 m1.small 实例。
由于您使用的是 EC2,因此制作自己的 AMI 可能会有所帮助。我发现最方便的方法是:
我通常根据项目[1] 安装 3-5 个不同的版本,每个版本都有自己独立的模块。Nave 将对不同的 Node 版本及其模块进行沙箱化处理。
然后,一旦您按照自己喜欢的方式设置它,您就可以轻松地从此主副本[2] 中生成更多服务器。如果您愿意,您可以在技术上编译每个Node.js 版本,但我认为这没有必要。
[1] 例如,Braintree 模块目前需要 Node.js@0.4.7,而主要代码库在 Node.js@0.4.1 上。
[2] 只要你与架构保持一致,如果你在一个 m1.xlarge 上编译所有这些,你就不能在 m1.small 上使用图像,因为 xl 是 64 位的,而 small 是 32 位的。
也许我迟到了,但是由于现在有适用于 Windows 的可安装 MSI 文件,您可以在以下位置下载与您的平台(32 位或 64 位)相对应的文件:
并使用 msiexec /qn 标志启动静默安装,检查这篇文章:
node.js msi 安装程序现在非常简单,他们无需额外步骤即可在 PATH 上安装 node 和 npm。
假设您的脚本类似于:
git clone https://github.com/joyent/node.git
cd node
./configure
make
您能否仅在每个新实例上使用此处的结果,并继续:
sudo make install
curl http://npmjs.org/install.sh | sudo sh
我假设服务器都是相同的平台/内核,从 redhat/centos 环境说...为什么不在一台服务器上构建它然后将二进制文件打包成 RPM?然后,您可以在其他服务器上使用它。如果你在 Debian 环境中,我假设 deb 包也是一样的。
如果您使用的是 Ubuntu,还有一个 deb 包(可能也适用于其他基于 Debian 或 Ubuntu 的发行版):
http://blog.jetienne.com/2010/08/nodejs-deb-package-on-ubuntu-repository.html
sudo add-apt-repository ppa:jerome-etienne/neoip &&
sudo apt-get update &&
sudo apt-get install nodejs
..
$ node -v
v0.2.6
对于 npm:
curl http://npmjs.org/install.sh | sudo sh
我赞同 James C 的建议,即构建适合您的操作系统分发的 RPM 或任何软件包系统,然后与您的服务器共享。