服务环境:springboot+maven+tomcat+centos7,开发环境为windows
发布思路:由于本地有pom依赖库,而且电脑配置比较好,编译成war包比较快,所以在本地进行编译。然后通过bat发布到远端服务器。
发布方式:本地通过package把代码编译成war包,再通过cmd和sftp将编译好的包上传到服务器的/root文件夹内。再通过cmd的git提供的sh.exe执行服务器的shell脚本,把上传的war包发布到tomcat里面。以下为详细步骤:
第一步:通过maven的package打包本地springboot项目成war包。
第二步:把war包上传到远端服务器。
sftp -oIdentityFile=C:\Users\admin\Desktop\3.pem root@api.domain.com < c:\Users\admin\Desktop\put.bat
这是我的指定。本地安装了sftp,这里也可以选用ftp。但是由于远程服务器没有开启ftp服务,开启了ssh,所以就用sftp了。效率低一点,但是安全性ok。因为上传的文件也不大,所以将就着用。
-oIdentityFile=C:\Users\soulwolf\Desktop\3.pem 是私钥存放地址。因为用的ssh,所以采用了密钥登陆,不需要账号密码。这个流程主要有两步:(1)生成公钥密钥对(2)服务器上传公钥并开启密钥登陆服务。网上有很多相关资料,这里就不细说了。
root@api.domain.com 服务器的登陆账号和ip地址(或者域名)
< c:\Users\soulwolf\Desktop\put.bat 后面是sftp的指令文件地址。内容为:
put C:/project/target/dazhi_api.war #后面的地址就是war包地址。
这样就能够把本地的war包上传到服务器的root目录了。
第三步:本地调用远端服务器的shell脚本进行远端服务器发布。
C:\work\Git\bin\sh.exe --login -i -c 'ssh -T -i C:/Users/admin/Desktop/3.pem root@api.domain.com "sh /root/start.sh"'
这个的原理就是利用本地的git来执行shell指令来登陆远端服务器。同样需要密钥登陆。
C:\work\Git\bin\sh.exe 本地git的路径。
ssh -T -i C:/Users/admin/Desktop/3.pem root@api.domain.com "sh /root/start.sh" shell指令,后面分别是私钥路径和登陆用户名和ip地址。 "sh /root/start.sh"是要执行的远端shell指令。