启动时自动启动node.js服务器

Bac*_*alo 72 node.js

任何node.js专家都可以告诉我如何配置节点JS以在我的机器启动时自动启动服务器吗?我在Windows上

tal*_*les 150

这根本不是在node.js中配置的,这完全是OS职责(在你的情况下是Windows).实现这一目标的最可靠方法是通过Windows服务.

这个超级简单的模块将节点脚本安装为Windows服务,它被称为node-windows(npm,github,documentation).我以前用过,像魅力一样工作.

var Service = require('node-windows').Service;

// Create a new service object
var svc = new Service({
  name:'Hello World',
  description: 'The nodejs.org example web server.',
  script: 'C:\\path\\to\\helloworld.js'
});

// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
  svc.start();
});

svc.install();
Run Code Online (Sandbox Code Playgroud)

PS

我发现这个东西非常有用,我在它周围构建了一个更容易使用的包装器(npm,github).

安装它:

npm install -g qckwinsvc
Run Code Online (Sandbox Code Playgroud)

安装您的服务:

> qckwinsvc
prompt: Service name: [name for your service]
prompt: Service description: [description for it]
prompt: Node script path: [path of your node script]
Service installed
Run Code Online (Sandbox Code Playgroud)

卸载您的服务:

> qckwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
Run Code Online (Sandbox Code Playgroud)

  • +1喜欢qckwinsvc选项.它就像魔法一样! (8认同)
  • “qckwinsvc”很棒。谢谢你的提示。 (2认同)
  • 我尝试将node express应用程序安装为服务,并且它正在运行(我从*.out.log文件中获取console.log调用的输出),但是当我尝试通过我的Web浏览器从服务器获取响应时,我刚回到404. (2认同)

dur*_*rum 71

如果您使用Linux*pm2是您的朋友.它是一个处理集群的流程管理器.

你安装它:

npm install -g pm2
Run Code Online (Sandbox Code Playgroud)

启动一个群集,例如,3个流程:

 pm2 start app.js -i 3
Run Code Online (Sandbox Code Playgroud)

并让pm2在启动时启动它们:

 pm2 startup
Run Code Online (Sandbox Code Playgroud)

它有一个API,甚至是一个http接口:

真棒

转到github并阅读说明.它易于使用且非常方便.永远是最好的事情.

*开发人员在Ubuntu和CentOs中尝试过它,但我已经在Debian中使用过了没有问题.您可以通过以下方式检查它是否对您有效:

npm install -g pm2
Run Code Online (Sandbox Code Playgroud)

  • 主席先生,这个答案值得更多的赞成.谢谢.另外我想说`pm2 startup`需要这个平台参数之一:`<ubuntu | centos | gentoo | systemd>`,即: (3认同)
  • 不幸的是在Windows 8上 (2认同)
  • 不需要@Deerloper参数.从他们的官方页面:`$ pm2 startup#auto-detect platform`` $ pm2 startup [platform] #grave startup-script for a specific platform,[platform]可能是以下之一:#ubuntu | centos | redhat | gentoo | systemd | |达尔文amazon` (2认同)

Che*_*sin 30

如果我没错,您可以使用命令行启动应用程序,从而也可以使用批处理文件.在这种情况下,使用Windows登录启动它并不是一项非常艰巨的任务.

您只需使用以下内容创建批处理文件:

node C:\myapp.js
Run Code Online (Sandbox Code Playgroud)

并使用.bat扩展名保存.这里myapp.js是你的应用程序,在这个例子中位于C:驱动器(spcify路径).

现在您可以将批处理文件放在启动文件夹中,该文件位于C:\ Users \%username%\ AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

只需在运行dailog框中使用%appdata%打开它,然后找到>漫游> Microsoft> Windows>开始菜单>程序>启动

批处理文件将在登录时执行,并从cmd启动节点应用程序.

  • 我的应用程序需要在Linux和Windows上运行,因此这个解决方案对我来说效果更好,因为它不需要我在我的应用程序中需要Windows特定的包.仅仅因为解决方案很简单并不会使问题变得糟糕. (11认同)
  • @MindJuice我同意,虽然这只是一个简单的方法,所以我认为值得一提. (7认同)
  • 这有效,但这是穷人的方式.以下问题的答案更好.将其安装为服务. (2认同)

小智 6

这可以通过 Windows 任务计划程序轻松手动完成。

  • 首先,永久安装。
  • 然后,创建一个包含以下内容的批处理文件:

    cd C:\path\to\project\root
    call C:\Users\Username\AppData\Roaming\npm\forever.cmd start server.js
    exit 0
    
    Run Code Online (Sandbox Code Playgroud)
  • 最后,创建一个登录时运行的计划任务。此任务应调用批处理文件。


小智 5

我建议将 Node.js 应用程序安装为 Windows 服务,然后将该服务设置为在启动时运行。这将使使用 Windows 服务管理单元控制启动操作变得更加容易,而不必在启动文件夹中添加或删除批处理文件。

Stackoverflow 中另一个与服务相关的问题提供了几个(显然)非常好的选择。查看如何将 node.js 安装为 Windows 服务node-windows对我来说看起来非常有前途。顺便说一句,我对需要作为服务运行的 Java 应用程序使用了类似的工具。这让我的生活变得更加轻松。希望这可以帮助。