0

我正在开发一个NodeJSAPI,一切正常。

对于特定问题,我使用本地 CLI 依赖项来处理一些输入文件并输出其他内容,以防从 API 返回。

我想知道(也许可以敞开心扉)在生产环境中我可以使用什么样的服务来为这个 API 提供服务。

这个想法是有一个Node环境(就像我的本地环境),它可以在同一台机器上安装一个外部依赖项,不一定写在Node.

我的具体依赖是fontforge和其他一些小东西。

提前致谢。

4

1 回答 1

1

如果您需要安装不易使用 npm 安装的自定义软件,那么很难击败一个好的 VPS。我最喜欢的 VPS 提供商是 Digital Ocean。您可以通过此链接免费获得两个月的基本服务器,这样您就可以在支付任何费用之前查看它是否适合您。第二个最喜欢的 VPS 提供商是 Vultr,因为您可以在他们的服务器上安装自定义 ISO。您可以通过此链接免费试用. 但这将意味着您自己照顾服务器。使用 Heroku 之类的服务,所有这些都可以为您解决 - 但您无法在其中安装任何您想要的东西。使用 VPS,您可以获得具有 root 访问权限的自己的服务器。通常是 Linux,但 Digital Ocean 也支持 FreeBSD,有些人安装了 OpenBSD,虽然它没有得到官方支持。使用 VPS,您可以安装任何您想要的东西,但您必须自己安装。总是有一个权衡。

更多信息

安装节点

要在 VPS 上安装 Node,我的建议是/opt使用版本化目录和符号链接进行安装 - 这是我为不同答案编写的示例过程:

# change dir to your home:
cd ~
# download the source:
curl -O https://nodejs.org/dist/v6.1.0/node-v6.1.0.tar.gz
# extract the archive:
tar xzvf node-v6.1.0.tar.gz
# go into the extracted dir:
cd node-v6.1.0
# configure for installation:
./configure --prefix=/opt/node-v6.1.0
# build and test:
make && make test
# install:
sudo make install
# make a symlink to that version:
sudo ln -svf /opt/node-v6.1.0 /opt/node

有关更多信息,请参阅此答案

您的启动脚本

为了让您自己的应用程序在服务器启动时很好地启动 - 这是一个基于我正在使用的脚本的示例 Upstart 脚本 - 它应该在 Ubuntu 14.04 上工作,而不是在新版本上测试 - 将其保存在/etc/init/YOURAPP.conf

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [06]

# If the process quits unexpectadly trigger a respawn
respawn

# Start the process
exec start-stop-daemon --start --chuid node --make-pidfile --pidfile /www/YOURAPP/run/node-upstart.pid --exec /opt/node/bin/node -- /www/YOURAPP/app/app.js >> /www/YOURAPP/log/node-upstart.log 2>&1

只是改变:

  • YOURAPP以您自己的应用程序的名称
  • /opt/node/bin/node通往你的道路node
  • /www/YOURAPP/app/app.js到您的 Node 应用程序的路径
  • /www/YOURAPP/run到你想要你的PID文件的地方
  • /www/YOURAPP/log到你想要你的日志的地方
  • --chuid node如果您希望它以--chuid OTHERUSER不同的用户身份运行node

(确保添加具有--chuid上述名称的用户)

/etc/init/YOURAPP.conf就位后,您可以安全地重新启动服务器并让您的应用程序仍在运行,您可以运行:

start YOURAPP
restart YOURAPP
stop YOURAPP

启动、重新启动和停止您的应用程序 - 这也会在系统启动或关闭期间自动发生。

于 2016-09-22T10:24:09.723 回答