java自动化部署到windows服务器服务器上
简述
作为一只后台狗,在使用Java为技术栈来开发后端服务应用的时候,或多或少的都需要自己手动部署。一开始,觉得写完一次自己手动部署到服务器上,还觉得新鲜感还不错,毕竟看着黑黑的terminal有种莫名的兴奋。后来服务端写完,需要改动web应用的时候,而且一次需要部署三到四个应用的时候,一股恶心感从内而外喷涌而出。
本文记录了自己工作中所用到的自动化部署(偷懒)历程,有需要的程序汪自行收藏。
辛酸之路
环境
由于工作中使用的IDE是eclipse,使用Maven进行包管理,所以,以下所涉及的都是基于Java 1.8,Maven 3.3.9,Elicpse Luna 4.4.2。
历程
- TOP1 Maven插件配置
项目中如果有使用Maven的话,则可以很方便的以tomcat7为例,在pom文件中配置一个插件即可轻松实现,代码如下:
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://server:port/manager/text</url> <username>admin</username> <password>admin</password> <update>true</update> <path>/wepapp</path> </configuration> </plugin>此处注意url节点。另外需要在tomcat服务器的conf/tomcat-users.xml配置一个admin的用户权限。
<role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="admin" password="admin" roles="manager-gui, manager-script"/>大功告成,运行mvn tomcat7:deploy,你就会惊奇的发现war文件就到了对应的tomcat下的webapps目录之中了。
- TOP2 Linux脚本部署
tomcat虽然部署麻烦,但是就稳定性来说,比起其它的web容器还是稍微好一丢丢。略过tomcat的坑不说,服务器中往往会有多个tomcat存在,特别是在测试的服务器上,我司放了有10多个tomcat,这样,作为一个 没有专门部署人员的小团队来说,简直是个噩梦,部署几个应用需要执行一大丢命令。
会偷懒的人往往就会写好一些常用的部署脚步,避免重复性的工作,在这里,我只简单介绍自己所使用的一种脚本,就是根据tomcat容器所在路径找到所在进程,杀死进程,然后进行重启。
- TOP3 Windows与Linux架桥互通
由于是在windows中进行开发工作,服务器使用的是cent os,所以又会多出许多重复性的工作。所以我选择使用putty,在windows与Linux之间架一个桥,从而能够方便的上传文件以及对远程服务器进行操作。
整体思路是,本地打包maven项目,打包完成之后上传到服务器WEB容器对应目录,然后调用我们上一步的服务器脚本,完成整体项目部署流程。批处理文件代码示例如下:
@echo off set project_path=xxx set server_user_1=root set server_passwd_1=xxx set server_ip_1=serverip set local_file1=%project_path1%\target\xxx.war set deploy-shell=test-web-deploy.sh echo 当前使用的JDK 版本: java -version echo 开始打包 E: cd %project_path% call mvn clean install echo 打包完毕 echo 开始上传xxx到服务器 call pscp -P port -l %server_user_1% -pw %server_passwd_1% -r %local_file1% %server_ip_1%:%server_path1% echo 上传xxx完毕 echo 开始运行脚本 call plink -P port %server_user_1%@%server_ip_1% -pw %server_passwd_1% sh %deploy-shell%效果
终于鸟枪换炮了,感觉自己又多了好多时间可以做其他的(休息)事了。测试了一下,效果还是很令人满意的,花在部署上的时间已经几近为零。
结论
本文仅适合在自己负责的项目中简单进行自动化的部署(偷懒),基于本文,可以扩展发挥做一个自动化部署系统。