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. coredump 瘦身风云

    ​简介: minicoredump神也! ​ 继上一篇非典型程序员青囊搞定内存泄露问题后,美美地睡了一觉.睡梦中,突然金光闪闪,万道光芒照进时光隧道,恍惚来到大唐神龙年间.青囊此时化身狄仁杰高级助理, ...

  2. [GPT] 用dogecoin接受付款,如何实现收款回调,不借助中心化的第三方

      要在不借助中心化的第三方的情况下实现Dogecoin的收款回调,您可以按照以下步骤进行操作: 1. 设置一个用于接收收款回调的URL:您需要在您的网站或应用程序中设置一个用于接收收款回调的URL. ...

  3. [FE] Quasar BEX 所有位置类型 types

    科普:[FE] Quasar BEX 预览版指南 New Tab Quasar BEX 的默认类型是 New Tab,在新 tab 栏里打开内容. Dev Tools 也就是在开发者栏里面的内容. O ...

  4. [FAQ] Cordova 模拟器中不能访问域名, 未联网 ?

    首先保证电脑已联网,然后打开模拟器的浏览器输入常用网址,看看是否能够联网. 如果访问失败,在本机中在 cmd 中 ping www.baidu.com 获得百度的ip地址,然后在浏览器中输入 http ...

  5. IIncrementalGenerator 解析 ValueTuple 的定义

    本文将告诉大家如何在分析器里面解析代码里面对于 ValueTuple 的定义,包括如何获取 ValueTuple 里面的 Item 的类型和命名 开始之前先创建一个用来被分析的项目,在这个项目里面定义 ...

  6. WPF 给类库设置设计时使用的资源字典

    在开发 WPF 类库时,由于类库里面没有存在 App.xaml.cs 文件,而在对单个 XAML 进行开发时,设计器将会因为找不到资源文件的存在,而拿不到资源.本文告诉大家简单的方法,给设计器设置仅在 ...

  7. 10.Sidecar代理:日志架构

    官方文档:https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/ 题目:Sidecar代理 设置配置环境ku ...

  8. 游戏陪玩公众号H5软件开发方案图文详解

    用户需求 无论开发怎样的产品,都需要事先对整个市场行情和用户需求进行简单的了解.前面的一组数据已经简明扼要的摆明了现在陪玩市场的行情.而现如今,大多数游戏都需要组队进行,如英雄联盟.王者荣耀.绝地求生 ...

  9. Oracle【ORA-00600 internal error code arguments [2662]】恢复一例

    背景 1.数据库版本:11.2.0.4 2.未开启归档 3.没有备份:无RMAN备份.无DUMP备份 4.数据库redo log全部删除. 解决思路: Oracle 的隐含参数: _allow_res ...

  10. 纯JS制作选项卡--JavaScript实例集锦(初学)

    最近重新从最基础学习JavaScript,如同盖房,先要打好基础,一砖一瓦都很重要. 下面我来嘚吧几句,附上从书上学到的实例与效果. JS可以用面向过程去写,也可以使用面向对象.面向对象会使一段JS代 ...