在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
应用。
不会嗝屁的服务管理器
这里使用的chocolatey
安装,如果您还没有安装请参考【Tool】Windows软件包管理器——chocolatey
choco install nssm
nssm install
便会弹出NSSM service installer
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
:Arguments
:参数Service name
:windows
下由nssm
守护进程,本质就是把exe
打包成服务,然后由nssm
管理服务:监控服务中程序的运行状态,程序异常中断后,便自动启动,实现守护进程的功能。服务已经安装好了,还需要我们去启动.
服务管理主要有启动、停止和重启,其命令如下:
nssm pause <servicename>nssm continue <servicename>
nssm status <servicename>
当然,也可以使用系统自带的服务管理器操作和使用系统的命令。
服务删除可以使用如下命令之一:
nssm remove <servicename>
nssm remove <servicename> confirm
功能没有大的区别,后面的命令是自动确认的,没有交互界面。
博主用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上,博主就不再做重复示例,留给朋友们去探索吧。
通过nssm,我们就能在windows
的环境下运行并守护任何我们使用python、node、dotnet、go等不同语言编写的程序,为windows环境下提供部署解决方案。
See Also: