前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Deploy】Windows下永远不会嗝屁的服务管理器(守护进程)——NSSM

【Deploy】Windows下永远不会嗝屁的服务管理器(守护进程)——NSSM

作者头像
DDGarfield
发布2022-06-23 19:33:10
5.6K0
发布2022-06-23 19:33:10
举报
文章被收录于专栏:加菲的博客加菲的博客

linux下部署程序,经常需要守护进程

比如:

  • node.js应用,
代码语言:javascript
复制
node app.js
  • python应用
代码语言:javascript
复制
python main.py
  • .Net Core应用
代码语言:javascript
复制
dotnet webapi.dll

我们就需要守护服务为我们守护应用程序:

  • 错误时,自动处理
  • 自动重启

类似的Linux守护进程工具有:

  • PM2
  • Supervisor

Windows系统大多数时候并不需要这样的工具,大多数都是有GUI的工具,如IIS,操作也更简单。但是有时候,就没办法了,比如nodepython等一些脚本的部署,以及.net core在一些低版本服务器上,还需要额外的安装IIS模块才能部署dotnet core应用。

NSSM - the Non-Sucking Service Manager

不会嗝屁的服务管理器

1.安装

这里使用的chocolatey安装,如果您还没有安装请参考【Tool】Windows软件包管理器——chocolatey

代码语言:javascript
复制
choco install nssm

2.使用

2.1 执行命令

代码语言:javascript
复制
nssm install

便会弹出NSSM service installer

2.2 安装服务

  • Application Path:exe全路径
    • C:\tools\nginx-1.17.8\nginx.exe
    • C:\Program Files\dotnet\dotnet.exe
    • C:\Program Files\nodejs\node.exe
  • Startup directory:
    • 如果.net core,就是dll的路径
    • 如果是其他脚本python脚本,或者node.js,则是启动的脚本文件路径
    • 如果是exe,则是exe的路径
  • Arguments:参数
    • 如果是exe,可能没有参数
    • 如果是.net core,就是发布后的dll
    • 如果是python或node.js,就是main.py或者index.js
  • Service name:windows下由nssm守护进程,本质就是把exe打包成服务,然后由nssm管理服务:监控服务中程序的运行状态,程序异常中断后,便自动启动,实现守护进程的功能。
  • Install Service:安装服务

2.3 启动/停止/重启 服务

服务已经安装好了,还需要我们去启动.

服务管理主要有启动、停止和重启,其命令如下:

  • 启动服务:nssm start
  • 停止服务:nssm stop
  • 重启服务:nssm restart
  • 暂停/继续服务nssm pause <servicename>nssm continue <servicename>
  • 查看服务状态:nssm status <servicename>

当然,也可以使用系统自带的服务管理器操作和使用系统的命令。

2.3 卸载服务

服务删除可以使用如下命令之一:

代码语言:javascript
复制
nssm remove <servicename>
nssm remove <servicename> confirm

功能没有大的区别,后面的命令是自动确认的,没有交互界面。

3.效果

nssm守护nginx

nssm守护node

博主用koa写了一个简单的web服务

代码语言:javascript
复制
const Koa = require('koa');
const Router = require('koa-router')
const app = new Koa();
var router = new Router();


router.get('/', async (ctx, res) => {
    ctx.body = '首页';
    //get
    // ctx.query  //对象
ctx.request.query
}).get('/news', async (ctx, res) => {
    ctx.body = '新闻页面';
}).get('/newscontent/:aid/:cid',async(ctx)=>{
    // ctx.params
});

app.use(router.routes())    /**启动路由 */
    .use(router.allowedMethods());

app.listen(3000);
console.log("listening 3000...");

使用nssm进行部署:

访问测试

同样的测试可以用在python或者golang上,博主就不再做重复示例,留给朋友们去探索吧。

4.结论

通过nssm,我们就能在windows的环境下运行并守护任何我们使用python、node、dotnet、go等不同语言编写的程序,为windows环境下提供部署解决方案。

See Also:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NSSM - the Non-Sucking Service Manager
    • 1.安装
      • 2.使用
        • 2.1 执行命令
        • 2.2 安装服务
        • 2.3 启动/停止/重启 服务
        • 2.3 卸载服务
      • 3.效果
        • nssm守护nginx
        • nssm守护node
      • 4.结论
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档