2023年7月18日

目前基于已完成了基于WPF界面的全自动部署小工具

自动判断相关.net core环境和依赖,自动部署mysql数据库,自动部署前后端web服务的功能.

有疑问的可以直接评论.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

.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 xx_webapi AppDirectory "%cd%\html\zradmin\api"
nssm set xx_webapi AppParameters "ZR.Admin.WebApi.dll"
nssm set xx_webapi Description "XXXwebAPI服务..."
nssm start rq_webapi
echo 当前路径为 %cd%
pause

前端

ECHO ON
CLS
ECHO "******************************************************"
ECHO "****Nginx服务安装...请确认以管理员身份运行,按任意键继续*****"
ECHO "******************************************************"
echo "停止当前服务Nginx, 如果存在"
net stop xx_nginx
echo "删除当前Web服务器Nginx"
sc delete xx_nginx
echo "开始安装Nginx"
cd /d %~dp0
echo 当前路径为 %cd%
nssm install xx_nginx "%cd%\nginx.exe"
nssm set xx_nginx Description "XXXnginx Web服务器"
echo "按任意键启动Nginx"
pause
echo
nssm start xx_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

基于 .NET CORE + VUE 前后端项目打包,实现批处理安装,一键部署的更多相关文章

  1. spring boot+vue前后端项目的分离(我的第一个前后端分离项目)

    文章目录 1.前端vue的搭建 2.后端项目的构建 pom文件中引入的jar包 yml文件用来配置连接数据库和端口的设置 application.property进行一些整合 controller层( ...

  2. .net core webapi 前后端开发分离后的配置和部署

    背景:现在越来越多的企业都采用了在开发上前后端分离,前后端开发上的分离有很多种,那么今天,我来分享一下项目中得的前后端分离. B/S  Saas 项目:(这个项目可以理解成个人中心,当然不止这么点功能 ...

  3. springboot+vue前后端分离,nginx代理配置 tomcat 部署war包详细配置

    1.做一个小系统,使用了springboot+vue 基础框架参考这哥们的,直接拿过来用,链接https://github.com/smallsnail-wh/interest 前期的开发环境搭建就不 ...

  4. 从一张图开始,谈一谈.NET Core和前后端技术的演进之路

    从一张图开始,谈一谈.NET Core和前后端技术的演进之路 邹溪源,李文强,来自长沙.NET技术社区 一张图 2019年3月10日,在长沙.NET 技术社区组织的技术沙龙<.NET Core和 ...

  5. 如何创建一个基于 .NET Core 3 的 WPF 项目

    在 Connect(); 2018 大会上,微软发布了 .NET Core 3 Preview,以及基于 .NET Core 3 的 WPF:同时还发布了 Visual Studio 2019 预览版 ...

  6. 喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  7. 两个开源的 Spring Boot + Vue 前后端分离项目

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  8. 基于spring security 实现前后端分离项目权限控制

    前后端分离的项目,前端有菜单(menu),后端有API(backendApi),一个menu对应的页面有N个API接口来支持,本文介绍如何基于spring security实现前后端的同步权限控制. ...

  9. Springboot+vue前后端分离项目,poi导出excel提供用户下载的解决方案

    因为我们做的是前后端分离项目 无法采用response.write直接将文件流写出 我们采用阿里云oss 进行保存 再返回的结果对象里面保存我们的文件地址 废话不多说,上代码 Springboot 第 ...

  10. SpringBoot+Vue前后端分离项目,在过滤器取值为Null

    SpringBoot+Vue前后端分离项目,在过滤器取值为Null 是因为SessionID的问题,因为axios每次的请求都是一次新的sessionId,所以只需要在main.js下配置如下 axi ...

随机推荐

  1. dotnet 警惕 Assembly.Location 返回空

    在大部分情况下,获取当前所运行的应用程序的所在路径时,常用的就是 Assembly.Location 属性,按照之前的经验,使用 Assembly.Location 是最为稳定的做法,然而在 dotn ...

  2. 记因为 NVIDIA 显驱错误而让 WPF 应用启动闪退问题

    本文记录一个因为 NVIDIA 显卡驱动错误而让 WPF 应用启动闪退问题 表现是 WPF 应用程序,在启动时,立刻闪退.在事件管理器看到的异常代码是 0xC0000005(Access Violat ...

  3. SQL server 查看脚本

    原文出处:http://blog.csdn.net/xiaochunyong/article/details/7455051 --Siuon --查看存储过程源码 create procedure m ...

  4. k8s应用---持久化存储和StorageClass(10)

    一.简介: 在 k8s 中为什么要做持久化存储? 在 k8s 中部署的应用都是以 pod 容器的形式运行的,假如我们部署 MySQL.Redis 等数据库,需要 对这些数据库产生的数据做备份.因为 P ...

  5. fastreport .net打印普通报表

    fastreport .net打印普通报表 前言: .net代码层先不记录在这,后续会单独写一篇博客来记录. 直接在工具上进行功能点的实现 一.效果图 二.功能点 分页 分页小计 金额大写 三.功能点 ...

  6. 题解:ssy的队列

    题目链接 题目描述 SSY是班集体育委员,总喜欢把班级同学排成各种奇怪的队形,现在班级里有 \(N\) 个身高互不相同的同学,请你求出这 \(N\) 个人的所有排列中任意两个相邻同学的身高差均不为给定 ...

  7. docker安装Mysql挂载数据卷 实现容器配置本地化

    目录 一.安装docker 二.docker安装MySQL 安装5.7.31版本的mysql navicat 连接mysql 安装mysql:8 三.设置开机自动启动容器 Docker快速创建MySQ ...

  8. Critical Expression

    什么是Critical Expression 所谓Critical Expression就是一个表达式依赖的值,必须出现在这个表达式前面.比如: times (label-$) db 0 ;times ...

  9. Oracle中ALTER TABLE的五种用法(四、五)

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  10. cesium介绍和国内主要学习网站汇总

    Cesium官方网站 建议大家将Cesium官网的博客都读一遍,博客大概分为三类,主要是技术类,比如性能优化,调度算法等,一类是定期的新版本特性,能够了解Cesium新功能和新特性,还有一类是大事记, ...