Synology Nas上运行的Node JS,正在访问ssh Windows Powershell,端口转发,永久运行app.js的Linux upstart(.conf)脚本

问题描述 投票:0回答:1

我在家中使用的Nas已从Synology的软件包中心安装了Node JS v12。因此,我认为创建Node JS http网络服务器并研究后端和前端开发会很酷。

创建volume1 / path_to_your_app / app.js,并让http服务器监听端口8080。接下来,使用Powershell,我可以从家里通过ip地址使用Synology(admin)帐户的[用户名]和[密码]登录到Nas。要在Synology的配置/终端中使用ssh访问,必须检查ssh服务。默认端口号是22,我将其更改为例如8822。接下来,从Powershell中,我现在可以运行命令:

  • ssh用户名@ 192.168.1.44 -p8822
  • 将提示下一个密码

现在可以从Synology的外壳中导航到该文件,运行该文件,然后在浏览器中的192.168.1.44:8080/上查看它。

  • cd / volume1 / path_to_your_app /
  • node app.js

接下来,我设置端口转发以在线托管Web服务器。在我的路由器中,设置/端口转发ipv4 /我的nas是在IP地址192.168.1.44下定义的。在Nas的应用程序配置中,我在端口8080的TCP协议下添加了一条新规则。该规则仅适用于端口8080(据我目前可以正常使用),因为这是一个实验端口。现在,我可以在路由器的WAN-IP:8080 /上访问Web服务器。退出Synology的外壳程序(ctrl + c)后,我的应用程序也停止运行。我无法从npm永久安装以保持服务器运行。但是从this page中我找到了解决方案。我必须从/ etc / init文件夹中的Synology外壳程序创建一个新贵文件。

  • cd /(回到根目录)
  • cd / etc / init /
  • sudo vi yourappname.conf

  • 我将这段代码复制/粘贴到(.conf)文件中,然后将参数编辑到我的环境中:

#!upstart
description "your app name"
start on started mountall
stop on shutdown

# Automatically Respawn:
respawn
respawn limit 99 5

env NODE_ENV=development
# Warning: this runs node as root user, which is a security risk
# in many scenarios, but upstart-ing a process as a non-root user
# is outside the scope of this question

chdir /volume1/path_to_your_app/
exec node /volume1/path_to_your_app/app.js >> /var/log/yourappname.log 2>&1

现在,我可以从Synology的外壳程序手动启动和停止upstart脚本,即使我退出Synology的外壳程序,它也可以继续运行。我还在“ exec”之前的脚本中插入了“ chdir / path_to_your_app /”,因为它会将Node JS运行所在的目录更改为您的应用程序所在的目录。我不知道脚本中的警告会带来什么安全风险。

  • sudo start yourappname
  • sudo stop yourappname

使用以下命令调试我的Node JS应用程序:

  • sudo tail -f /var/log/yourappname.log
node.js ssh portforwarding upstart synology
1个回答
0
投票

添加此内容以避免使用root?

setuid http

© www.soinside.com 2019 - 2024. All rights reserved.