windows一键部署java项目
创始人
2024-01-19 02:08:48

前言

  前段时间老大看我很闲...然后给我下达了一项很重要的任务:windows一键部署,需要把服务(jdk、tomcat、mysql、jar包、前端压缩包)打成一个exe应用程序,点击安装会启动所有服务,打开浏览器http://localhost:8080/xxx就可以访问系统了,运维人员一键安装即可省去了环境搭建和部署的时间。听后感觉很神奇,网上找了找确实有这种案例,于是我就开始了学习和实践,一周之后不辱使命,完美地完成任务可以去交差了

准备工作

  jdk用的1.8免安装版,只需要将安装好的jdk拷贝一份即可。下载地址

  tomcat用的8版本,下载后缀windows-x64.zip的免安装版。下载地址

  mysql用的5.7.24免安装版,高版本有很多问题(如不需要mysql,删除其相关代码即可)。下载地址

  Inno Setup6,一款为Windows程序提供的免费安装程序,通过它可以将需要的文件压缩打包成exe安装程序,然后像安装程序一样解压到另外一个环境中。下载地址

  

编辑脚本

  编辑脚本前先来简单学习一些cmd命令

  cd:进入  "%cd%":当前目录  echo:打印输出  exit:退出  pause:按下任意键继续。。。

init-path.bat

echo 配置jdk环境变量开始
cd ..\jdk
echo "%cd%"
set jdkpath=%cd%
echo %jdkpath%
setx JAVA_HOME  "%jdkpath%"  -m
setx CLASSPATH  ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m
echo %Path%
echo %Path%|find /i "%JAVA_HOME%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%Path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f
setx Path "%Path%;%%JAVA_HOME%%\bin"
)
echo 配置jdk环境变量完毕echo 配置mysql环境变量开始
cd ..\mysql
echo "%cd%"
set mysqlpath=%cd%
echo %mysqlpath%
setx MYSQL_HOME  "%mysqlpath%"  -m
echo %Path%
echo %Path%|find /i "%MYSQL_HOME%" && set IsNull=true || set IsNull=false
echo %IsNull%
if not %IsNull%==true (
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%Path%;%%MYSQL_HOME%%\bin" /f
)
echo 配置mysql环境变量完毕
exit

  设置mysql的环境变量是因为可以使用mysql命令,以防sql脚本没初始化成功方便查找原因。例如:在mysql安装路径的bin目录下使用管理员打开cmd窗口

运行mysql -uroot -proot即可进入数据库  show databases; 查看所有数据库  use 数据库名称; 使用数据库  show tables; 查看所有表

init-mysql.bat

echo 安装mysql开始
cd ..\mysql
set inipath=%cd%\my.ini
cd bin
"%cd%\mysqld.exe" -install mysql --defaults-file="%inipath%"
"%cd%\mysqld.exe" --initialize-insecure --user=mysql --console
echo 启动mysql并设置为自启动
net start mysql
sc config mysql start=auto
"%cd%\mysqladmin.exe" -u root password root
echo 修改密码完毕
cd ..
"%cd%\bin\mysql.exe" -uroot -proot < "%cd%\SqlFile\test.sql" 
echo 数据库初始化完成
exit

my.ini

[client]port=3306default-character-set=utf8[mysqld]wait_timeout=2880000interactive_timeout = 2880000max_allowed_packet = 100Msql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

start.bat

echo 安装tomcat执行service.bat脚本
cd ..\tomcat\bin
echo "%cd%"
call "%cd%\"%service.bat install tomcat8
echo  -------tomcat install end------------------
echo 启动tomcat服务
sc start tomcat8
wmic service where name="tomcat8" startservicepause;echo 启动java服务
cd ..\..\tool
echo "%cd%"
set APP_NAME=java.jar
setlocal enabledelayedexpansion
set port=9091
echo find run port:  %port% process
for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%port%"') do (if "%%e%" == "" (set pid=%%decho The process pid '!pid!' has been released) else (set pid=%%eecho the process pid for the current port is '!pid!')echo !pid!taskkill /f /pid !pid!
)
echo 5 seconds close this bat
echo Starting program %APP_NAME%
java -Xms2048m -Xmx5120m -server -jar %APP_NAME%
echo run %APP_NAME% Success
pause

  没有将tomcat放在install文件安装时启动服务是因为第一次安装后tomcat服务总是起不来(打开任务管理器点击服务搜索tomcat8,卸载程序——>服务器重启再次安装就会出现这个问题),黑窗口也没看到错误信息,为了完美安装,无奈只好放在和jar包启动脚本一起了。

Inno Setup使用

Inno Setup在安装后的根目录下创建一个后缀.iss的文件,代码如下。

编辑完成后,点击上方Build——>Compile,等待完成打包,输出在同级目录下的Output文件

#define MyAppName "XXX管理系统"        
#define MyAppVersion "V1.0"           
#define MyAppPublisher "XXX科技有限公司"
#define MyAppURL "http://www.baidu.com/"; 基本配置
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
; 单独标识,可以通过innosetup-QSP-6.0.5.exe 工具自动生成
AppId={{0167D65D-549A-4BA3-B88A-4814EC5A1D35}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
; 默认安装路径
DefaultDirName=C:\Program Files (x86)\program\
DefaultGroupName={#MyAppName}
; 软件名称
OutputBaseFilename=deployment
; 软件图标
SetupIconFile=C:\Users\Administrator\Desktop\program\tool\download.ico 
; 压缩方式  
Compression=lzma
; yes 可以使文件更小
SolidCompression=yes
; 必需有管理员权限才能安装
PrivilegesRequired=admin
; 安装密码
;Password=password
; 开启加密,需要一个iscrypt.dll文件,网上有下载的
;Encryption=yes; 语言配置 
[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"; 安装文件
[Files]
; 安装部署的源文件路径
Source: "C:\Users\Administrator\Desktop\program\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files; 快捷键
[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\快捷HTTP地址"; Filename: http://localhost:8080/dist
Name: "{commondesktop}\运行XXX管理系统应用程序"; Filename: "{app}\tool\start.bat" 
Name: "{commondesktop}\安装须知"; Filename: "{app}\tool\安装须知.txt" ; 程序安装成功后执行脚本
[Run]     
Filename: "{app}\install\init-path.bat";
Filename: "{app}\install\init-mysql.bat";[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone; 程序卸载成功后执行脚本
[UninstallRun]
Filename:"{app}\uninstall\uninstall.bat";; 程序卸载成功后删除文件
[UninstallDelete]
Type:filesandordirs;Name:"{app}\mysql"
Type:filesandordirs;Name:"{app}\tomcat"
Type:filesandordirs;Name:"{app}\install"
Type:filesandordirs;Name:"{app}\uninstall"

FAQ:

如出现此错误,是因为安装mysql缺少文件,低版本 点击下载 Visual Studio 2013,高版本 点击下载 Visual Studio 2015

 如出现此错误,是因为安装mysql缺少文件,点击下载 解压安装后将vcruntime140_1.dll复制到C:\Windows\System32,卸载mysql服务重新安装即可

 运行jar包如出现此错误,是因为高版本的mysql需要SSL身份验证(低版本不需要),当然也可以不需要验证

 解决方法:连接数据库的url后面加上参数即可,例如:jdbk:mysql://localhost:3306/testdb?characterEncoding=UTF-8&useSSL=false

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
苁蓉的食用方法 鲜苁蓉的吃法有... 肉苁蓉号称“温而不热,补而不峻,暖而不燥,滑而不泄,故有从容之名。”历来也是传统药食同源的滋补佳品。...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
阳澄湖在哪里哪个省的 阳澄湖是... 点击题目下方苏州生活指南有用 有趣 有态度近期的阳澄湖度很高,3月24日,央视二套《第一时间》直播连...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...