无人值守安装 node.js 和 npm,但无需从源代码构建
有没有一种方法可以以无人值守的方式(使用 shell 脚本)安装 node.js 和 npm,而无需从源代码构建它?我有一组服务器,可以根据服务器负载自动扩展,但是下载 Node.js 源代码并使用 make 构建它大约需要 10 分钟。
谢谢!
编辑:我尝试复制二进制文件,但这导致了二进制文件已损坏的错误。是的,它们都是 EC2 m1.small 实例。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
由于您使用的是 EC2,因此创建您自己的 AMI 可能会有所帮助。我发现的最方便的方法是:
我通常根据项目安装 3-5 个不同版本[1],每个版本都有自己单独的模块。 Nave 将对不同的 Node 版本及其模块进行沙箱处理。
然后,一旦您按照您喜欢的方式设置了它,您就可以轻松地从此主副本生成更多服务器[2]。如果您愿意,您可以从技术上编译每个 Node.js 版本,但我认为没有必要。
[1] 例如,Braintree 模块目前需要 [email protected],而主要代码库位于 [电子邮件受保护]。
[2] 只要您与架构保持一致,如果您在 m1.xlarge 上编译所有这些,则无法在 m1.small 上使用该图像,因为 xl 是 64 位,而small 是 32 位。
Since you're using EC2, it may help to make your own AMI. The most convenient way I have found is to:
I usually install 3-5 different versions depending on the project[1] and each has its own separate modules. Nave will sandbox the different Node versions and their modules.
Then, once you have it set up the way you like it, you can easily spawn more servers from this master copy[2]. You could technically compile every Node.js version if you wanted to but I don't find this necessary.
[1] For example, the Braintree module currently requires [email protected] while the main codebase is on [email protected].
[2] As long as you stay consistent with architecture, if you compile all of this on a m1.xlarge, you can't use the image on m1.small's because xl is 64-bit and small is 32-bit.
也许我迟到了,但既然现在有适用于 Windows 的可安装 MSI 文件,您可以在以下位置下载与您的平台(32 或 64 位)相对应的文件:
http://nodejs.org/download/
并使用 msiexec /qn 标志启动静默安装,请查看此帖子:
MSIEXEC 静默模式安装
node.js msi 安装程序现在非常简单,他们将在无需额外步骤的 PATH。
Maybe I'm late, but since now there are installable MSI files for Windows you can download the one corresponding to your platform (32 or 64bit) at:
http://nodejs.org/download/
and launch a silent install using msiexec /qn flag, check this post:
MSIEXEC Silent Mode Installation
node.js msi installers are pretty straigthforward now, they'll install node and npm on the PATH without extra steps.
假设您的脚本类似于:
您能不能只在每个新实例上使用此处的结果,然后继续:
Assuming your script is something like:
Can you not just use the results from here on each new instance, and continue with:
我假设服务器都是相同的平台/内核,从 redhat/centos 环境来看...为什么不在一台服务器上构建它,然后将二进制文件打包到 RPM 中?然后您可以在其他服务器上使用它。如果您处于 Debian 环境中,我假设 deb 软件包也是如此。
I'm assuming the servers are all the same platform/kernel, speaking from a redhat/centos enviornment... why not build it on one server then package the binaries into an RPM? You can then use that across your other servers. I'm assuming it's the same for deb packages if you are in a Debian enviornment.
如果您使用 Ubuntu,还有一个 deb 软件包(也可能适用于其他 Debian 或基于 Ubuntu 的发行版):
http://blog.jetienne.com/2010/08/nodejs-deb-package-on-ubuntu-repository.html
..
对于npm:
There is also a deb package if you are using Ubuntu (might work for other Debian or Ubuntu based distros as well):
http://blog.jetienne.com/2010/08/nodejs-deb-package-on-ubuntu-repository.html
..
For npm:
我同意 James C 的建议,即构建一个 RPM 或任何适合您的操作系统发行版的软件包系统,然后与您的服务器共享。
I second James C's suggestion to build an RPM or whatever package system is appropriate for your OS distribution and then share it with your servers.