我做的是java服务器端项目,对整个项目部署的一些情况和方法记录在此,如果网友有好的推荐,还望发文与我参考学习。
前提:1.是maven项目。2.服务器端程序已经写好,可以打包成jar到服务器用dos窗口运行。
为了方便维护,做了进一步的改善:
最终达到的效果就是,发布代码简化成两个步骤:1.上传SVN提交最新代码,2.打开持续集成环境Jenkins,选择项目运行。
通过以上两步,最新版本程序自动更新到服务器端,并自动完成卸载旧版本服务,生成新版本服务,启动新服务。
分两大步进行改进:
1.做成windows服务,可随机器开机自启动
参考网友的方法,也经过自己亲自使用过,做了自己的一些总结。
利用打包工具wrapper,注意区分32和64位系统:
以下都是在java环境变量正常的情况下进行的
一、64位系统请在“wrapper-windows-x86-64-3.5.25-st”下进行打包
一定要注意这里:如果你64位系统的wrapper包不是64位破解版本,就只能用收费的了,用32位版本是不行的,wrapper目前只有32位免费版本,不知道64免费版本会不会出来。
需要打包的程序一般分5个目录,application, bin, conf, lib, logs,如我需要打包应用程序PlanManager-1.0.jar
首先在wrapper-windows-x86-64-3.5.25-st目录下新建文件夹PlanManager,再在PlanManager下新建以上5个目录。
wrapper64位系统没有免费版本,该版本是破解版,目前稳定性未知
1、application:放需要打包的程序
2、bin:从wrapper解压包中“..\src\bin”拷贝所有的.bat.in文件放到自建的PlanManager\bin下,并将.bat.in文件都改成.bat文件。再从wrapper解压包中“..\bin”拷贝wrapper.exe到PlanManager\application。该目录还放自己开发的应用程序本身所需要的配置文件,如日志配置文件等
3、conf:最重要的配置文件wrapper.conf,还有一个wrapper-license.conf(如果下载的是“wrapper-windows-x86-64-3.5.25-st”破解版本,该文件请不要做任何改动)
4、lib:除了wrapper自身的wrapper.dll和wrapper.jar,还可以存放应用程序需要的一些jar文件,配置wrapper.conf的时候记得加上,本文是maven项目,lib都是maven依赖的,所以没有配lib。
5、logs:wrapper自身的日志记录
二、32位系统请在“wrapper-windows-x86-32-3.5.27”下进行打包
http://wrapper.tanukisoftware.com/doc/english/download.jsp,官上很清楚,显示版本为Community的为免费版本,其他版本都收费。
用法和64位的一样,只是conf里不需要license文件,32位用免费版本。
三、wrapper.conf的配置说明
以下对一些主要的属性进行说明,也没有深入研究,
1、找到wrapper.java.classpath.1=../lib/wrapper.jar处,指定应用程序
添加:wrapper.java.classpath.2=../application/PlanManager-1.0.jar
2、找到Log file to use for wrapper output logging.
wrapper.logfile=../logs/wrapper.log
3、找到Initial Java Heap Size (in MB),指定最小内存和最大内存
添加:wrapper.java.initmemory=3
添加:wrapper.java.maxmemory=100
4、找到Application parameters,指定mian函数所在的类,要包括包名
添加:wrapper.app.parameter.1=com.PlanManager
5、其他就是一些命名了
wrapper.console.title=PlanManager
wrapper.name=PlanManager
wrapper.displayname=MosPlanManager Service
wrapper.description=MosPlanManager Service
从上面配置日志、应用程序存放位置来看,其实很容易知道目录都是可以自己配的。
运行PlanManager\bin下面的bat文件,你就会发现相应好多功能都有了,最常的有两个安装:InstallApp-NT.bat,卸载:UninstallApp-NT.bat,如果要检查你的jar包有没有问题,你还可以直接运行该目录下的App.bat,这个表示直接执行自己的jar程序,首先要保证这个执行没问题。如果出错去看日志../logs/wrapper.log
2.代码修改后,上传SVN,直接运行集成环境就可以发布新版本。持续集成环境Jenkins
在JenKins上新建一个maven项目,要保证最新代码提交SVN后,这里运行正常,并能够在Jenkins目录下自己的项目目录找到生成的应用程序jar包。
1.源码管理项:Subversion
2.构建环境项:Post Steps->Add post-build step->Execute Windows batch command,我一共建了4个
第一个框Execute Windows batch command功能先找到服务器端目录PlanManager\bin,然后执行卸载服务处理:
填入 cd D:\Server\run\PlanManager\bin
UninstallPlanManager.bat
注意,这里是卸载了程序服务,所以做一次更新时,要确保不影响正常运营。
第二个框Execute Windows batch command功能把用Jenkins运行生成的jar包拷贝到要做成windows服务的应用程序目录:
填入copy D:\CI\jenkins_home\jobs\PlanManager\workspace\target\PlanManager-1.0.jar D:\Server\run\PlanManager\application\ /y
第三个框Execute Windows batch command功能先找到服务器端目录PlanManager\bin,然后执行安装服务处理:
cd D:\Server\run\PlanManager\bin
InstallPlanManager.bat
第四个框Execute Windows batch command功能先找到服务器端目录PlanManager\bin,然后执行启动服务处理:
cd D:\Server\run\PlanManager\bin
StartPlanManager.bat
注意:
这里再记录下maven项目pom.xml的配置需要:
为了让Jenkins生成的是自己想要的名称和版本号PlanManager-1.0.jar:我的项目设置是
<artifactId>PlanManager</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
为了在Jenkins生成包时保证生成的jar是可直接运行的,要设置pom.xml
我程序主类是:com.PlanManager
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.PlanManager</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>