最近做项目使用前后端完全分离的方式,前端使用html5、vue2、axios等技术,部署到nginx中。后端使用spring boot等开放restful的微服务。使用spring boot开发项目很方便,但时一直有一个问题困扰着我。后端打好的jar包部署,前端使用nginx在linux下都可以使用服务或伪服务的时候部署,开机自动启动。但是在window下部署时自动启动不是很方便,最后采用winws封装服务才完美解决。(nginx性能在window下不能完全发挥,用户表示linux不能维护)。
准备工作
1、下载nginx、winsw;
nginx建议到官网下载:
http://nginx.org/
winsw建议到官网下载:
https://github.com/kohsuke/winsw/releases
2、把项目前后端分别打包;
3、规划部署目录;
nginx解压到了D:\nginx,前端项目放到了D:\wwwroot中,可以放多个项目。
后端项目jar和jre规划到D:\apps中,可以放的个jre和多个后端项目。
4、安装nginx服务;
nginx的安装和配置这里不做详细说明,可以参考其它文档。
winsw有两个版本分别为WinSW.NET2和WinSW.NET4,本人使用的是WinSW.NET4,将WinSW.NET4.exe和WinSW.NET4.xml文件复制到nginx文件夹下,并分别重新命名为server.exe和server.xml,当然也可以不重新命名,两个文件的名字必须要一致,然后修改server.xml
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx service</description>
<executable>D:\nginx\nginx.exe</executable>
<logpath>D:\nginx\logs\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-c</startargument>
<startargument>D:\nginx\conf\nginx.conf</startargument>
<stopexecutable>D:\nginx\nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
</service>
之后在命令行中运行安装服务:
d:\nginx>server.exe install
然后在window服务中就可以看到
卸载服务:
d:\nginx>server.exe uninstall
5、安装后端jar项目服务;
同样使用winsw,
修改server.xml如下
<service>
<id>tjpl-server</id>
<name>tjpl-server</name>
<description>tjpl server service</description>
<executable>D:\apps\jre1.8.0_112\bin\java</executable>
<onfailure action="restart" delay="60 sec"/>
<logpath>D:\apps\tjpl\logs\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-jar</startargument>
<startargument>D:\apps\tjpl\tjpl-server.jar</startargument>
<stopexecutable></stopexecutable>
<stopargument></stopargument>
<stopargument></stopargument>
</service>
安装服务同上。
引用