我们在本地开发web应用的时候,直接在IDE里面就可以完成jdk、容器、数据库的配置和集成。
但是如果当我们把应用程序交付给用户使用的时候,不可能把在客户端配置eclipse。
而且我遇到的这个情况是,十几个客户在不同的地方,客户可以接受BS模式的应用(因为本人不做CS应用多年,硬是说服客户接受BS)。
每个客户都是存在利益竞争关系的,所以不可能统一部署。最后我只能把JDK、Mysql、Tomcat、应用程序打包在一起,提供一个一键安装的功能,交付给各个客户。
那本篇就来介绍在widnows环境下,不使用任何第三方的打包工具的前提下,如何将JDK、Mysql、Tomcat、应用程序打包,并提供bat批处理文件来安装、卸载、启动、停止服务 的做法。
一、找到绿色免安装的JDK、mysql、tomcat,放到一个统一的目录下,比如D:/coss
这里有必要说说怎么找到绿色免安装的jdk、tomcat、mysql
1、什么是绿色的免安装的JDK?做这件事之前, 我一直不知道它是什么概念,更别说如何获取它。其实很简单,就是你已经安装好的JDK,比如:C:/program files/java/jdk1.6.8,你直接把这个文件夹C:/program files/java复制出来,那么你就得到了绿色的JDK。哈哈,简单不,把你取到的绿色jdk放到D:/coss,如上图
2、获取绿色的mysql,你可以到http://download.mysql.cn站点,获取一个noinstall版本的zip文件,解压缩到D:/coss,并将文件夹名称更改为mysql。这里需要特别说明一下的是,绿色的mysql在根目录下没有my.ini,这是它和安装版的一个重要区别,而且我们在后面的操作中需要手动构建这个文件,否则mysql不能运行。
3、绿色tomcat很容易获取,你可以到网上搜索,一片一片的,找到以后解压缩到D:/coss下,文件夹命名为tomcat
二、注册mysql、tomcat服务
1、我编辑了一个install.bat文件来完成java环境变量配置、注册mysql、tomcat为windows服务,详细参见附件的install.bat文件。还是说明一下吧,如下:
语句:reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t REG_EXPAND_SZ /d "%cd%\Java\jdk1.6.0_18" /f 的作用是完成JAVA_HOME环境变量的设置
语句:call ./tomcat/bin/service.bat install tomcat 的作用是将tomcat注册为tomcat服务,这样的好处是以后启动tomcat就再也不用看那个黑色的命令行窗口了
语句:call %cd%\mysql\bin\mysqld-nt -install mysql 的作用是将mysql注册为mysql服务
语句:call dbsetting.bat 的作用是给绿色的mysql添加my.ini文件
2、同样,我们也需要提供一个卸载服务的批处理文件,详细参见附件的uninstall.bat文件
3、另外,很重要的一点,就是绿色版的mysql没有my.ini,我们在install.bat里面调用了dbsetting.bat,dbsetting.bat将当前目录下的db.ini进行修改,然后剪切到了mysql路径下并重新命名为my.ini,这样就保证了mysql能正常启动
4、此外,还提供了启动.bat、重启.bat、停止.bat,这些都是针对服务启停用的,因为当使用install安装完成之后,服务都还没有启动,需要这几个批处理文件来操作服务的启停。
5、应用程序可以放到webapps下或者D:/coss目录下,后者的话需要你配置一下tomcat/conf下的server.xml,在<Host>节点下添加配置,比如:
<Context docBase="D:\eclipse workspace\dsd workspace\coss\WebContent" path="/coss" reloadable="true"/>
三、一些注意事项:
操作过程中,大家可能遇到几个问题,我这里强调一下:
1、统一目录,我这里是D:/coss,大家可以随便定义路径,但一定要注意,路径中不要有中文,不要有空格
否则出现的错误词不达意,很难定位
2、mysql在启停过程中可能出现1067错误,这时请检查你的my.ini里面的参数、路径配置的对不对
3、配置了环境变量之后,有时可能不生效,需要重启一下电脑,或者电脑--右键属性--高级--环境变量,双击选中你的环境变量点确定才能生效
附件包含了全部的批处理文件,大家在实际操作中遇到问题请和我沟通。共勉之~~