G
N
I
D
A
O
L

使用NSSM部署.net API自动化BAT脚本

出处:https://zhuanlan.zhihu.com/p/518208198

在实际实施部署过程中,.net core 或 .net5/6开发的后端,需发布服务,可采用下述BAT脚本,进行一键部署完成。

此次内容介绍 NSSM 自动化部署的方式,亦可使用NSSM进行手动部署,相关操作请参见NSSM官网

主要步骤为:
1. 服务器下载安装 代码所对应的 .net版本, 并进行安装。

2. 下载NSSM,并解压复制至当前发布的DLL程序版本目录下。

3. 执行下述BAT脚本文件,整体自动化思路如下:

3.1 复制NSSM至系统目录下,即 c:\windows\system32目录

3.2 使用NSSM命令进行服务创建,服务创建时,会先将已存在的范服务 停止,移除,再创建,并启动。

3.3 脚本需使用系统管理员身份执行。

REM 创建安装API、WEB、KBN的服务
echo off
echo 即将开始采用nssm安装应用程序为windows服务,请确认以系统管理员身份运行
set servicename=API_Service
REM %~dp0 为BAT脚本取当前系统目录命令,API_HOST.EXE为需要包装为服务的应用程序
set app_path="%~dp0API_Host.exe"
set nssm_path="%~dp0nssm.exe"
REM 将NSSM复制至系统盘目录,或者 添加 windows 环境变量亦可达到目的
set targetFolder="C:\windows\System32\nssm.exe"
REM 检查NSSM.exe文件是否存在
echo 检查当前目录nssm.exe文件是否存在
if not exist %nssm_path% (
	echo %nssm_path% 不存在,请确认
	pause 
	goto exitCode
 )
) 
echo %nssm_path% 存在,即将检查文件并复制
REM 复制nssm
if not exist %targetFolder% (
	copy /y %nssm_path% %targetFolder%
	echo 复制nssm至windows系统目录完成
)
echo 即将创建服务 %servicename%
echo  ****************************************

REM 判断service 是否存在,若存在,先停止,至删除
echo 检查服务是否存在,存在则停止服务后删除,再安装
sc query|find /i "%servicename%" >nul 2>nul
if not errorlevel 1 (
	echo 服务已存在,停止运行服务
	echo stop %servicename%
	REM NSSM停止服务命令:nssm stop <ServiceName>
	nssm stop %servicename%	
	echo 开始移除服务 %servicename%
	echo remove service %servicename%
	REM NSSM删除服务命令:nssm remove <ServiceName> confirm
	REM 移除命令最后的 confirm 即表示无限弹窗确认,直接移除。
	nssm remove %servicename% confirm
	echo 移除服务完成
)

echo *********************************
echo 开始创建服务 %servicename%
REM NSSM命令:nssm install <服务名> <服务需要执行的程序>
nssm install %servicename% %app_path%
echo 开始设置服务信息
echo set service property
echo 设置服务显示名称
REM nssm set <ServiceName> DisplayName <ServiceName>
nssm set %servicename% DisplayName %servicename%
echo 设置服务描述
REM nssm set <ServiceName> Description <ServiceName>
nssm set %servicename% Description 后端API、看板、网页等功能服务 
echo 设置服务启动方式为:自动
nssm set %servicename% Start SERVICE_AUTO_START
echo *********************************
echo 启动服务 %servicename%
echo start service %servicename%
nssm start %servicename%
echo 服务创建并启动完成

:exitCode
pause

 

发布于 2022-05-22 15:50
posted @ 2025-04-19 23:02  firespeed  阅读(25)  评论(0)    收藏  举报