朋友有个应用是前后端分离的应用,后端为springboot开发的,前端为vue开发的;spring boot开发的直接是个可运行的jar,前端的vue开发的是在nginx下开发的,其中应用还依赖于mysql,redis,这些应用全部要在windows下部署,问我会不会部署,就研究下,有了这篇文章。
在windows下如何封装运行的那,网上没有个综合的例子,参考网上的例子,来写下这种前后端分离的程序在windows下如何配置服务和自动运行。
一 redis在windows作为服务部署
reids 的做windows的服务器比较简单,就从简单的开始吧,redis是3.0.501版本,运行如下:
配置好redis.windows.conf ,一定要记得配置密码,无密码可能会受到攻击。一般我们需要配置自动启动,可以在windows下服务配置。
后运行:
./redis-server.exe --service-install redis.windows.conf
默认是没有启动的,可以用:
#启动服务
redis-server --service-start
停止服务:
redis-server --service-stop
卸载服务
redis-server --service-uninstall
二. Nginx作为windows服务运行
Nginx 要作为windows服务运行的时候,需要winSW这个开源工具,可以到:
winSW下载。
2.1 windows下常用nginx命令
#在nginx.exe 目录,下面命令会弹窗一闪而过,正常
#注意路径下不能用中文
start nginx
#检测
tasklist /fi "imagename eq nginx.exe"
#优雅停止
nginx -s quit
#停止
nginx.exe -s stop
#重新加载配置
nginx.exe -s reload
windows下常用命令:
#windows下查看开启端口
netstat -ano
#查找pid对应进程
tasklist | find "6128"
#查看服务名称
tasklist /svc |find "6128"
#通过服务名称查看显示名称,显示名称在服务里面查找
wmic service where name = "dosvc" get displayname
2.2 利用winsw来安装windows服务
这个前提条件要安装.NET框架,下载地址:https://www.microsoft.com/en-gb/download/details.aspx?id=49981
winsw: https://github.com/kohsuke/winsw/releases
选择:WinSW.NET4.exe或WinSW.NET2.exe
- 将WinSW.NET4.exe改名为nginx-service.exe
- 新建:nginx-service.xml 配置文件,如下:
<service>
<id>nginx</id>
<name>Nginx Service</name>
<description>High Performance Nginx Service</description>
<logpath>G:\LMS\lmswindows\nginx-1.17.7\nginx-1.17.7\logs</logpath>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
<executable>G:\LMS\lmswindows\nginx-1.17.7\nginx-1.17.7\nginx.exe</executable>
<startarguments>-p G:\LMS\lmswindows\nginx-1.17.7\nginx-1.17.7</startarguments>
<stopexecutable>G:\LMS\lmswindows\nginx-1.17.7\nginx-1.17.7\nginx.exe</stopexecutable>
<stoparguments>-p G:\LMS\lmswindows\nginx-1.17.7\nginx-1.17.7 -s stop</stoparguments>
<!-- 开机启动 -->
<startmode>Automatic</startmode>
</service>
- 安装服务,记得是要管理员身份运行cmd。
#安装
nginx-service.exe install
#启动
nginx-service.exe start
#状态
nginx-service.exe status
#停止
nginx-service.exe stop
- 网站内容复制到当前nginx目录下面的html中即可。
通过nginx配置自动启动,就解决了前端启动的问题。
三. SpringBoot的Jar 配置成服务
Spring Boot 的Jar,我们作为调试或运行的时候,可以通过Java - jar xxx.jar的方式运行,会显示命令行,关闭后不能运行,那么如何配置成服务那。
3.1 采用winsw安装服务
- 将WinSW.NET4.exe改名成你要安装的服务名字比如lms.exe
- 将jar的名字也改名成lms.jar
- 新建一个lms.xml的配置文件,配置如下:
<service>
<id>lms</id>
<name>lms</name>
<description>LMS service.</description>
<!-- java环境变量 -->
<env name="JAVA_HOME" value="%JAVA_HOME%"/>
<executable>java</executable>
<arguments>-jar "G:\LMS\lmswindows\lms\lms.jar"</arguments>
<!-- 开机启动 -->
<startmode>Automatic</startmode>
<!-- 日志配置 -->
<logpath>%BASE%\log</logpath>
<logmode>rotate</logmode>
</service>
- 安装服务
#安装服务
lms install
#运行服务
lms start
#停止服务
lms stop
#卸载服务
lms uninstall
#状态查看
lms status
亲测,成功运行,不过这个有个遗憾就是必须要有NET框架,在windows10 下我用WinSW.NET4.exe
通过配置spring boot的jar的启动就解决了后台的自动启动问题。