前言:由于目前Asp.Net Core服务、GeoServer、Nginx的启动都要依赖人工的去点每一个bat文件,所以每次云服务器重启都要去手动启动这几个程序,非常的麻烦,所以我们就想用NSSM来守护一下这些进程,说白了就是把他们封装成服务,随着windows的启动而启动,这样我们就不用那么麻烦了。
本片博文中,我们会介绍如果用NSSM守护以下这些服务:
1、Asp.Net Core后台服务
2、GeoServer
3、Nginx
一、问题
1.1 Asp.Net Core后台服务
由于目前Asp.Net Core的部署不依赖IIS了,直接用dotnet运行那个生成的dll文件就行,就会出来一个黑框,表示服务启动了。但是电脑重启以后又要重新运行它,或者有人不小心关掉这个黑框了,也要重新启动,这样就会显的非常麻烦。
1.2 GeoServer
从GeoServer 2.15开始,官网不提供windows版的exe安装程序了,也就意味着无法安装为windows服务了,所以每次GeoServer的启动也是要手动点击启动。
1.3 Nginx
我们目前在用Nginx做反向代理,我们全部项目都走81端口,根据后缀名的不同,跳转到我们不同的项目服务地址。方便是很方便,但同样的,Nginx也无法随着开机启动。
二、解决方案
NSSM 可以完美的解决我们的问题。因为他本来的作用就是将一切可运行程序封装为windows服务,从而随着开机自启动。这些可运行程序包括exe、bat、msi等等。
三、守护Asp.Net Core
这里要吐槽一下,百度能搜到的这方面的教程,好多都是错的,根本不管用。但是人家的思路可以学习,不然就成了死读书了,要学会举一反三。回到正题,开始守护我们的Asp.Net Core服务。
3.1 写一个启动Asp.Net Core的start.bat脚本
脚本内容格式为:dotnet xx.dll urls=http://localhost:port
上图中的SmartForest.Api.dll就是我们程序发布之后生成的dll文件,程序发布之后的界面我们也放一张图
注意:如果dotnet命令后面没有跟urls=http://XXX,则读取的是配置文件launchSetting.json中的applicationUrl这个配置项。
3.2 在程序发布的地方启动cmd
输入命令 nssm install xxx,意思是封装名称为xxx的服务
3.3 选择我们之前创建start.bat文件即可
3.4 点击按钮安装
如果出现了 install success,就说明安装成功了。
3.5 测试,访问一下swagger
3.6 重启服务器
如果访问swagger依然能够正常访问,说明进程守护成功了。
四、守护GeoServer
守护GeoServer的操作方式与上面类似,选择文件的时候只需要找到GeoServer安装目录下的bin文件夹中的start.bat文件即可,详细过程我们就略过。
五、守护Nginx
同样的,守护Nginx的操作也是一样的,选择文件的时候找到Nginx安装目录下的nginx.exe文件就行。
结语:nssm进程守护的操作不难,只要大家多思考,相信总能解决的,其他事情想必也是一样的。好了,这次的教程我们就讲解到这里,回见~。