基于 .NET CORE + VUE 前后端项目打包,实现批处理安装,一键部署
作者:互联网
.NET 项目的前后端部署,网上有不少,大部分基于NSSM来部署的
这个方法并没有问题,非常好用.但是很多都是需要 弹窗设置的.并没有详细的讲解批处理的命令方式.
在参考了相关博客后,写一个简单的教程案例,仅供参考
环境:
Ngnix(非必须,如果纯后端可以忽略)
NSSM
关于mssm的下载,传送门: http://www.nssm.cc/download
该前后端项目基于ZRAdmin.net,所有教程以ZRAdmin.NET为准
复制mssn 到nginx根目录,web项目放在了html目录下
相关批处理命令
WEB后端
ECHO ON CLS ECHO "******************************************************" ECHO "*******api项目安装, 请确认以管理员身份运行,按任意键继续*****" ECHO "******************************************************" cd /d %~dp0 :: nssm install rq_webapi "%PROGRAMFILES%\html\zradmin\api" nssm install rq_webapi "%PROGRAMFILES%\dotnet\dotnet.exe" nssm set rq_webapi AppDirectory "%cd%\html\zradmin\api" nssm set rq_webapi AppParameters "ZR.Admin.WebApi.dll" nssm set rq_webapi Description "XXXwebAPI服务..." nssm start rq_webapi echo 当前路径为 %cd% pause
前端
ECHO ON CLS ECHO "******************************************************" ECHO "****Nginx服务安装...请确认以管理员身份运行,按任意键继续*****" ECHO "******************************************************" echo "停止当前服务Nginx, 如果存在" net stop rq_nginx echo "删除当前Web服务器Nginx" sc delete rq_nginx echo "开始安装Nginx" cd /d %~dp0 echo 当前路径为 %cd% nssm install rq_nginx "%cd%\nginx.exe" nssm set rq_nginx Description "睿仟nginx Web服务器" echo "按任意键启动Nginx" pause echo nssm start rq_nginx echo "服务启动完毕" #pause ::nssm remove rq_nginx
批处理命令还有很多待完善的地方
仅供参考
nssm相关批处理指令
Application Tab
应用基础配置
nssm set <servicename> Application <fullpath> nssm set <servicename> AppDirectory <directory> nssm set <servicename> AppParameters [args...]
Details Tab
服务详情
nssm set <servicename> DisplayName <displayname> nssm set <servicename> Description <description> nssm set <servicename> Start SERVICE_AUTO_START
启动模式清单:
SERVICE_AUTO_START: Automatic 自动.
SERVICE_DELAYED_AUTO_START: Delayed 自动(延时启动).
SERVICE_DEMAND_START: Manual 手动.
SERVICE_DISABLED: 禁用.
Log On Tab
登录配置,用于配置当前服务以何种身份进行进程启动,默认为LocalSystem
nssm get <servicename> ObjectName nssm set <servicename> ObjectName <username> <password> nssm set <servicename> ObjectName <username> correct horse battery staple nssm set <servicename> ObjectName <username> ""
Dependencies Tab(服务依赖)
配置服务启动依赖项,通过配置依赖服务名称,实现服务依赖配置,配置多个依赖服务又空格分隔,既可以是写入服务的名称name
,又可以使服务的显示名称displayname
nssm set <servicename> DependOnService [servicname01] [servicename02] nssm set <servicename> DependOnService [service displayname01] [service displayname01]]
Process Tab
进程相关配置,用于设置应用程序的进程优先级和CPU
的执行选择,默认情况下应用程序以正常优先级运行,并允许在所有CPU
上运行,如希望进程限制为可用CPU
的子集,可取消选中"所有处理器"并依据实际情况选择特定CPU
nssm set <servicename> AppPriority NORMAL_PRIORITY_CLASS nssm set <servicename> AppNoConsole 0 nssm set <servicename> AppAffinity All
AppNoConsole设置进程是否新建控制台窗体,默认为0
从版本 2.22 开始,nssm将默认为应用程序创建一个新的控制台窗口,允许一些程序运行,否则会失败,例如那些希望能够读取用户输入的程序
若不需要,可以通过将 HKLM\System\CurrentControlSet\Services\servicename\Parameters 下的整数 (REG_DWORD) 值 AppNoConsole 设置为非零值来禁用控制台窗口
AppAffinity默认设置为进程可在所有CPU上运行,可以指定对应数值,用于特定CPU上运行,连续可用-起始到终止,,逗号用于分隔不同CPU
AppAffinity默认设置为进程可在所有CPU上运行,可以指定对应数值,用于特定CPU上运行,连续可用-起始到终止,,逗号用于分隔不同CPU
nssm set <servicename> AppAffinity 0-4,7
1
进程优先级配置
REALTIME_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
————————————————
ShutDown Tab
停止服务,配置服务停止时,相关停止操作
nssm set <servicename> AppStopMethodSkip 0 nssm set <servicename> AppStopMethodConsole 1500 nssm set <servicename> AppStopMethodWindow 1500 nssm set <servicename> AppStopMethodThreads 1500
AppStopMethodSkip对应属性设置是否选择,默认为0
配置值清单
1 - Don’t send Control-C to the console.
2 - Don’t send WM_CLOSE to windows.
4 - Don’t send WM_QUIT to threads.
8 - Don’t call TerminateProcess().
Exit actions Tab
退出操作配置,用于调整服务退出时的重启限制和默认操作,还可以指定应用程序自动重新启动之间的强制延迟
nssm set <servicename> AppThrottle 1500 nssm set <servicename> AppExit Default Restart nssm set <servicename> AppRestartDelay 0
AppThrottle意外退出,延时重启的时间间隔
为避免 CPU 资源紧张,若受监控的应用程序在启动后意外退出,nssm将限制服务的重新启动
默认情况下,使用1500毫秒的阈值,要指定不同的值,需创建一个整数 (REG_DWORD) 值 HKLM\System\CurrentControlSet\Services\servicename\Parameters\AppThrottle 并将其设置为所需的毫秒数
AppExit为要配置应用程序退出时nssm应采取的操作,需编辑键 HKLM\System\CurrentControlSet\Services\servicename\Parameters\AppExit 的默认值
若nssm运行时注册表中不存在该键,它将创建它并将值设置为重新启动。 将其更改为忽略或退出以指定所采取的操作
nssm只会在此密钥不存在时创建它, 用户的更改不会被覆盖,对应注册表内容如下
Default Restart(Restart application)
Ignore(No action)
Exit(Stop service)
Suicide(Fack crash)
I/O Tab
配置文件输出/输出路径,一般为系统异常和日志运行输出日志
nssm set <servicename> AppStdin [filepath] nssm set <servicename> AppStdout [filepath] nssm set <servicename> AppStderr [filepath]
>nssm set Frpc AppStderr C:\games\frpc\service.log
File rotation Tab
可与I/O
设置结合使用,用于配置服务重启时输出文件的轮换操作
nssm set <servicename> AppStdoutCreationDisposition 4 nssm set <servicename> AppStderrCreationDisposition 4 nssm set <servicename> AppRotateFiles 1 nssm set <servicename> AppRotateOnline 0 nssm set <servicename> AppRotateSeconds 86400 nssm set <servicename> AppRotateBytes 104856
AppStdoutCreationDisposition输出CreationDisposition的参数值
AppStderrCreationDisposition异常输出CreationDisposition的参数值
AppRotateFiles是否开启文件轮换操作,1标识启用,0表示取消
AppRotateOnline是否在服务运行时动态轮换日志文件
AppRotateSeconds轮换文件触发时间间隔数
AppRotateBytes轮换文件触发的单文件大小阀值
————————————————
Environment Tab
可用于指定要传递给应用程序的以换行符分隔的环境变量列表
nssm set <servicename> AppEnvironmentExtra JAVA_HOME=C:\java nssm set <servicename> AppEnvironmentExtra CLASSPATH=C:\Classes TEMP=C:\Temp
例如,获取环境变量
>nssm get <servicename> AppEnvironmentExtra CLASSPATH
C:\Classes
标签:CORE,VUE,rq,nssm,nginx,set,Tab,NET,CPU 来源: https://www.cnblogs.com/MarsPanda/p/16359916.html