如何在专用服务器上运行节点 js?

Posted

技术标签:

【中文标题】如何在专用服务器上运行节点 js?【英文标题】:how to run node js on dedicated server? 【发布时间】:2017-05-09 19:42:08 【问题描述】:

我正在做一个聊天应用程序并将其集成到一个网站上。当我在本地服务器上执行命令“node index.js”时,一切正常。但是当我尝试在专用服务器上安装节点 js 并尝试通过 ssh 执行命令“nohup node index.js &”时,它会给出以下消息。

nohup:忽略输入并将输出附加到 `nohup.out'

我已经按照本站提到的方法在服务器https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts上安装node js

有人可以帮帮我吗?

【问题讨论】:

尝试在生产环境中使用pm2 经理运行node 应用程序。 你能详细解释一下吗@Mukesh Sharma 这可以帮助你。 ***.com/documentation/node.js/2975/… 显然这是正常行为:***.com/questions/24646320/… 我试过了,终端上不会显示任何消息,我的聊天应用程序也不会工作@Radioreve 【参考方案1】:

您首先需要以正确的方式安装 Node。我写了一篇关于它的教程:How to get Node 6.7.0 on Linux(当然你可以使用更新的版本,只需在命令中更改版本即可)。

基本上是这样的 - 将版本更改为您喜欢的版本:

# 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

我建议从源代码构建 Node 并始终运行 make test,但您也可以安装更快的二进制包 - 如果这样做,请确保您了解路径和 hashbang 行的问题 - 更多信息和更多my tutorial 中描述了安装选项。

那么你需要确保每次服务器重启时你的应用程序都启动了。如果可以,我建议使用 Upstart。

使用 Upstart,在 /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

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

有关更多信息,请参阅以下答案:

Installing Node Running Node on servers

您也可以使用 systemd,但 there are some differences 因为系统是 much more complicated 并且通常会导致 some problems。

【讨论】:

以上是关于如何在专用服务器上运行节点 js?的主要内容,如果未能解决你的问题,请参考以下文章

尝试在专用服务器上实现 Node.js 和 Socket.io

如何使用服务器上的调度程序自动运行我的节点 js 脚本

为啥 node.js 不能在共享主机上运行? [关闭]

如何在 Azure 应用服务上运行使用 ts-node 开发的节点应用程序

将本地节点 JS HTTP 服务器端口(在电子中运行)传递给角度服务

在 aws 上部署使用 mongodb 的节点 js 应用程序