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

时间:2013-12-07 19:28:31

标签: node.js

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

11 个答案:

答案 0 :(得分:139)

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

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

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();

<强> P.S。

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

安装它:

npm install -g qckwinsvc

安装您的服务:

> 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

卸载您的服务:

> qckwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled

答案 1 :(得分:68)

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

你安装它:

npm install -g pm2

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

 pm2 start app.js -i 3

让pm2在启动时启动它们:

 pm2 startup

它有一个API,甚至是http interface

AWESOME

转到github并阅读instructions。它易于使用且非常方便。自forever以来最好的事情。

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

git clone https://github.com/Unitech/pm2.git
cd pm2
npm install  # Or do NODE_ENV=development npm install if some packages are missing
npm test

答案 2 :(得分:27)

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

您只需创建一个包含以下内容的批处理文件:

node C:\myapp.js

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

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

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

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

答案 3 :(得分:3)

你应该试试这个

永远的npm

https://www.npmjs.com/package/forever

答案 4 :(得分:2)

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

Stackoverflow中另一个与服务相关的问题提供了一些(显然)非常好的选择。查看How to install node.js as a Windows Servicenode-windows对我来说真的很有希望。另外,我使用类似的工具来处理需要作为服务运行的Java应用程序。它让我的生活变得更加轻松。希望这会有所帮助。

答案 5 :(得分:2)

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

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

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

答案 6 :(得分:1)

使用pm2在Windows上启动和运行nodejs进程。

请务必阅读此github讨论如何设置任务计划程序以启动pm2:https://github.com/Unitech/pm2/issues/1079

答案 7 :(得分:0)

Here is another solution我在C#中写过自动启动本机节点服务器或Windows上的pm2服务器。

答案 8 :(得分:0)

我知道根据上面分享的解决方案,有多种方法可以实现这一目标。我没有尝试过所有这些,但是一些第三方服务对于在后台运行的所有任务都缺乏清晰度。我通过类似于windows批处理文件中提到的PowerShell脚本实现了这一点。我已使用Windows任务计划程序安排它每分钟运行一次。到目前为止,这是非常有效和透明的。我在这里的优点是我在再次启动它之前明确地检查了该过程。这不会对服务器上的CPU造成太大的开销。此外,您不必将文件显式放入启动文件夹中。

function CheckNodeService ()
{

$node = Get-Process node -ErrorAction SilentlyContinue

if($node)
{
    echo 'Node Running'
}
else
{
    echo 'Node not Running'
    Start-Process "C:\Program Files\nodejs\node.exe" -ArgumentList "app.js" -WorkingDirectory "E:\MyApplication"
    echo 'Node started'

}
}

CheckNodeService

答案 9 :(得分:0)

只需使用这个,安装、运行并保存当前进程列表

https://www.npmjs.com/package/pm2-windows-startup

根据我的经验,重启服务器后,需要登录,才能触发自动启动。

答案 10 :(得分:-1)

直接从this answer

复制

您可以使用任何想要自动化的语言编写脚本(甚至使用nodejs),然后在用户的%appdata%\ Microsoft \ Windows \ Start Menu \ Programs \ Startup文件夹中安装该脚本的快捷方式

相关问题