【Deploy】Windows下的进程守护工具——NSSM
在linux
下部署程序,经常需要守护进程
比如:
node.js
应用,
node app.js
python
应用
python main.py
.Net Core
应用
dotnet webapi.dll
我们就需要守护服务为我们守护应用程序:
- 错误时,自动处理
- 自动重启
类似的Linux
守护进程工具有:
PM2
Supervisor
Windows
系统大多数时候并不需要这样的工具,大多数都是有GUI的工具,如IIS
,操作也更简单。但是有时候,就没办法了,比如node
,python
等一些脚本的部署,以及.net core
在一些低版本服务器上,还需要额外的安装IIS
模块才能部署dotnet core
应用。
NSSM - the Non-Sucking Service Manager
不会嗝屁的服务管理器
1.安装
这里使用的chocolatey
安装,如果你还没有安装请参考【Tool】Windows软件包管理器——chocolatey
choco install nssm
2.使用
2.1 执行命令
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 卸载服务
服务删除可以使用如下命令之一:
nssm remove <servicename>
nssm remove <servicename> confirm
功能没有大的区别,后面的命令是自动确认的,没有交互界面。
3.效果
nssm守护nginx
nssm守护node
我用koa写了一个简单的web服务
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环境下提供部署解决方案。
- 原文作者:Garfield
- 原文链接:http://www.randyfield.cn/post/2021-03-07-win-nssm/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。