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

时间:2016-12-24 10:58:40

标签: node.js

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

nohup:忽略输入并将输出附加到“nohup.out”

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

上安装节点js

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

首先需要以正确的方式安装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/nodenode
  • 的路径
  • /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

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

有关详情,请参阅以下有关的答案:

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