无人值守安装 node.js 和 npm,但无需从源代码构建

发布于 2024-11-15 20:37:18 字数 202 浏览 0 评论 0 原文

有没有一种方法可以以无人值守的方式(使用 shell 脚本)安装 node.js 和 npm,而无需从源代码构建它?我有一组服务器,可以根据服务器负载自动扩展,但是下载 Node.js 源代码并使用 make 构建它大约需要 10 分钟。

谢谢!

编辑:我尝试复制二进制文件,但这导致了二进制文件已损坏的错误。是的,它们都是 EC2 m1.small 实例。

Is there a way to install node.js and npm in an unattended way (with a shell script) without building it from source? I have an array of servers that scales automatically based on server load, but downloading the Node.js source and building it using make takes like 10 minutes.

Thanks!

edit: I tried copying over the binaries, but that resulted in an error that the binary was corrupted. And yes, they are all EC2 m1.small instances.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

翻了热茶 2024-11-22 20:37:18

由于您使用的是 EC2,因此创建您自己的 AMI 可能会有所帮助。我发现的最方便的方法是:

  1. 启动一台功能强大的大型机器
  2. 编译最新稳定的 Node.js
  3. 安装 NPM,然后 Nave
  4. 使用 Nave 安装多个版本的 Node.js - 每个版本都有自己的 NPM。
  5. 将其另存为 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:

  1. Spin up a large, powerful machine
  2. Compile the latest stable Node.js
  3. Install NPM, then Nave
  4. Install multiple versions of Node.js using Nave - each with their own NPM.
  5. Save this as an AMI

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.

沧桑㈠ 2024-11-22 20:37:18

也许我迟到了,但既然现在有适用于 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.

木有鱼丸 2024-11-22 20:37:18

假设您的脚本类似于:

git clone https://github.com/joyent/node.git
cd node
./configure
make

您能不能只在每个新实例上使用此处的结果,然后继续:

sudo make install
curl http://npmjs.org/install.sh | sudo sh

Assuming your script is something like:

git clone https://github.com/joyent/node.git
cd node
./configure
make

Can you not just use the results from here on each new instance, and continue with:

sudo make install
curl http://npmjs.org/install.sh | sudo sh
開玄 2024-11-22 20:37:18

我假设服务器都是相同的平台/内核,从 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.

擦肩而过的背影 2024-11-22 20:37:18

如果您使用 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

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

sudo add-apt-repository ppa:jerome-etienne/neoip && 
     sudo apt-get update && 
     sudo apt-get install nodejs

..

$ node -v
v0.2.6

For npm:

curl http://npmjs.org/install.sh | sudo sh
夏日浅笑〃 2024-11-22 20:37:18

我同意 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文