tomat+jdk+mysql在windows下的一键安装包
connygpt 2024-10-04 15:45 3 浏览
最近公司需要我把做完的项目打包,但公司没有相关经验的文档来作为指导参考,作为有科(zuo)学(shi)观(xingZhi)的我,就按项目流程来做这次任务.
需求
- Tomcat,MySQL,JDK’;/统统地打进包咯;
- 安装完后,能直接运行,实现真正的客户只要一安装完后就能运行.
需求转化
功能需求
- Tomcat的执行环境需要jdk,需要先安装jdk.
- 工程能够直接运行, 则工程需要的数据库数据能够正确存储到数据库开放用户给工程使用,并且容器tomcat能够正常运行.
- 开放端口:操作系统能够开放防火墙端口让外部访问数据库和容器.
- MySQL能正确稳定运行
- Tomcat能正确稳定运行
所需软件
软件名称软件版本下载地址Tomcat7.059(64位)http://tomcat.apache.org/download-70.cgiMySQL5.6.25-winx64http://dev.mysql.com/downloads/mysql/InnoSetup5.5.5http://jrsoftware.org/isdl.php
下载地址指到下载页面,需要读者打开自己选择下载.
设计
在需求转换中,包含一个隐形需求却MySQL,JAVA,和配置命令是有系统的局限限制的.所以不同的系统应该要有不同的安装包.在选择打包软件上综合各种的因素我最终选择了”Inno Setup Compiler”,这个不是把这篇博文的重点.
1. Tomcat准备
Tomcat的配置中,我设计成把JDK和Tomcat绑定在一起,因此把JAVA的JDK文件夹放在tomcat的bin目录下,然后在bin目录下创建setenv.bat文件.
1.setnv.bat 的内容为:
set "JAVA_HOME=%~dp0\Java\jdk1.6.0_45" set "JAVA_OPTS= -Dfile.encoding=UTF-8 -Duser.timezone=GMT+8" 1 2 3
这里的JAVA_HOME,在catalina.bat文件里要求必须使用JDK(Java Develpment Kit){1},且JAVA_OPTS是可选.
2.Service.bat内容
在tomcat的bin目录下的Service.bat文件内容下”:gotJdkHome” 节下添加下面内容:
:gotJdkHome set "%JAVA_HOME%=%~dp0\Java\jdk1.6.0_45" set "JRE_HOME="%JAVA_HOME%\jre" 1 2 3 4
变成
:gotJdkHome set "%JAVA_HOME%=%~dp0\Java\jdk1.6.0_45" set "JRE_HOME="%JAVA_HOME%\jre" if not exist "%JAVA_HOME%\jre\bin\java.exe" goto noJavaHome if not exist "%JAVA_HOME%\jre\bin\javaw.exe" goto noJavaHome if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome if not "%JRE_HOME%" == "" goto okJavaHome set "JRE_HOME=%JAVA_HOME%\jre" goto okJavaHome 1 2 3 4 5 6 7 8 9 10
在:gotJreHome节下添加下面的内容:
:gotJreHome set "JRE_HOME= %GCIEMS_JAVA%\jre" 1 2 3
变成
:gotJreHome set "JRE_HOME= %GCIEMS_JAVA%\jre" if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome 1 2 3 4 5
在:installed节下添加下面的内容:
sc config tomcat7w_Gciems start=auto net start tomcat7w_Gciems 1 2 3
变成
:installed echo The service '%SERVICE_NAME%' has been installed. sc config tomcat7w_Gciems start=auto net start tomcat7w_Gciems :installed echo The service '%SERVICE_NAME%' has been installed. sc config Tomcat7 start=auto net start Tomcat7 1 2 3 4 5 6 7 8 9 10 11
这段主要是启动Tomcat7的Service,和把Tomcat7设置成为自动启动
3.在bin创建启动服务.bat
“%~dp0%\service.bat” install
我个人不喜欢用 %cd%这个命令,会影响到目录的判断,产生误会.
4.在bin创建关闭服务.bat
在下面添加代码
netsh advfirewall firewall delete rule name=”Tomcat_Gciems端口” dir=in protocol=TCP localport=8080
echo 关闭端口…成功
net stop tomcat7
sc.exe delete tomcat7
这段代码主要是删除tomcat 服务.
5.放置项目包和缓冲清理
- 把项目的war包,或者部署包直接放置到Tomcat目录下的webapps目录下,
- 删除logs目录下的文件
- 删除work/Catalina/localhost目录下的文件
- 删除temp目录下的文件
2. MySQL准备
1.数据库SQL
我用 MySQLMigrationTool 对项目的数据库经行转换成SQLCreates.sql、和Inserts.sql,然后放在MySQL目录下的data 目录下.
2.用户SQL
我用 MySQLMigrationTool 对数据库下的MySQL数据库下的db表和 user表转换成SQL,命名为InitUserInformations.sql,然后放在MySQL目录下的data 目录下.
3.mysql配置文档
在tomcat目录下my-default.ini,修改mysqld章节成为:
[mysqld] basedir = datadir = port =3306 # server_id = ..... 1 2 3 4 5 6 7
basedir 是指向mysql的目录,datadir是指向数据库目录地址,port是指mysql 的服务端口
4.启动服务
在MySQL 的bin目录下创建启动服务.bat,加入下面的代码
cd /d %~dp0
“%cd%\mysqld.exe” –install MySQL_Gciems
net start MySQL_Gciems
sc config MySQL_Gciems start=auto
echo 安装完毕
“%cd%\mysqladmin” -u root password jiesaigciems
echo 修改密码完毕
cd ..
“%cd%\bin\mysql.exe” -uroot -pjiesaigciems < “%cd%\data\Creates.sql”
“%cd%\bin\mysql.exe” -uroot -pjiesaigciems < “%cd%\data\Inserts.sql”
echo 建表完毕
“%cd%\bin\mysql.exe” -uroot -pjiesaigciems < use mysql < “%cd%\data\InitUserInformations.sql”
echo 建立新用户完毕
3. 开放端口的设置
1.开放Tomcat防火墙端口
在Tomcat的bin下的启动服务.bat添加下面的代码,注意不能加在.. service.bat install 之后,因为在 service.bat 的 goto end; 这段代码,会直接让bat文件结束,所以要再Service.bat install之前.
netsh advfirewall firewall add rule name="Tomcat_Gciems端口" dir=in protocol=TCP localport=8080 action=allow "%~dp0%\service.bat" install 1 2 3
在
2.关闭Tomcat防火墙端口
在Tomcat 的bin目录下的关闭服务.bat加入下面的代码
netsh advfirewall firewall delete rule name="Tomcat_Gciems端口" dir=in protocol=TCP localport=8080 echo 关闭端口...成功 1 2 3
3.MySQL开放防火墙端口
在MySQL 的 bin目录下的打开服务.bat加入下面的代码:
netsh advfirewall firewall add rule name="MySQL_Gciems端口" dir=in protocol=TCP localport=3066 action=allow echo 增加防火墙端口成功 1 2 3
4.MySQL关闭防火墙端口
在MySQL的bin目录下的关闭服务.bat 加入下面的代码:
netsh advfirewall firewall delete rule name="MySQL_Gciems端口" dir=in protocol=TCP localport=3306 net stop MySQL_Gciems 1 2 3
4.Inno Setup 中的设置
1.初始化
打开Inno Setup软件,在File运行new,创建新的项目.
按照它的提示填写信息,直到第三步Application Files的时候
2.添加MySQL系统环境变量以及数据库配置
在Add folder 按钮中添加Tomcat 和MySQL的 目录.
[Code] procedure SetEnv(aEnvName, aEnvValue: string; aIsInstall, aIsInsForAllUser: Boolean); var sOrgValue: string; S1, sFileName: string; bRetValue, bInsForAllUser: Boolean; SL: TStringList; x: integer; begin bInsForAllUser := aIsInsForAllUser; if UsingWinNT then begin if bInsForAllUser then bRetValue := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', aEnvName, sOrgValue) else bRetValue := RegQueryStringValue(HKEY_CURRENT_USER, 'Environment', aEnvName, sOrgValue) sOrgValue := Trim(sOrgValue); begin S1 := aEnvValue; //环境变量地址 if pos(Uppercase(s1), Uppercase(sOrgValue)) = 0 then //还没有加入到系统环境时 begin if aIsInstall then begin x := Length(sOrgValue); if (x > 0) and (StringOfChar(sOrgValue[x], 1) <> ';') then sOrgValue := sOrgValue + ';'; sOrgValue := sOrgValue + S1; end; end else begin if not aIsInstall then begin StringChangeEx(sOrgValue, S1 + ';', '', True); StringChangeEx(sOrgValue, S1, '', True); end; end; if bInsForAllUser then //系统环境变量 RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', aEnvName, sOrgValue) else begin if (not aIsInstall) and (Trim(sOrgValue) = '') then RegDeleteValue(HKEY_CURRENT_USER, 'Environment', aEnvName) else RegWriteStringValue(HKEY_CURRENT_USER, 'Environment', aEnvName, sOrgValue); end; end; end else //非NT 系统,如Win98 begin SL := TStringList.Create; try sFileName := ExpandConstant('{sd}\autoexec.bat'); LoadStringFromFile(sFileName, S1); SL.Text := s1; s1 := '"' + aEnvValue + '"'; s1 := 'set '+aEnvName +'=%path%;' + s1 ; bRetValue := False; x := SL.IndexOf(s1); if x = -1 then begin if aIsInstall then begin SL.Add(s1); bRetValue := True; end; end else //还没添加 if not aIsInstall then begin SL.Delete(x); bRetValue := True; end; if bRetValue then SL.SaveToFile(sFileName); finally SL.free; end; end; end; procedure CurStepChanged(CurStep: TSetupStep);//添加环境变量 begin if CurStep = ssPostInstall then begin SetEnv('path',ExpandConstant('{app}/mysql-5.6.25-winx64/bin;'),true,true); //在这儿重写成你的MySQL 目录{app}是指你安装的父目录,一定在这儿调用,安装完无须重启,立即生效, end; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);//删除环境变量 begin SetEnv('path',ExpandConstant('{app}/mysql-5.6.25-winx64/bin;'),false,true);//同上 //SetEnv('path','{app}/bin',false,true); end; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
[INI]
Filename:”{app}\mysql-5.6.25-winx64\my-default.ini”;Section:”mysqld”;Key:”basedir”; String:”{app}\mysql-5.6.25-winx64”
Filename:”{app}\mysql-5.6.25-winx64\my-default.ini”;Section:”mysqld”;Key:”datadir”; String:”{app}\mysql-5.6.25-winx64\data”
3.安装后启动应用
[Run]
Filename: “{app}\apache-tomcat-7.0.59-windows-x64\apache-tomcat-7.0.59\bin\启动服务.bat”;
Filename: “{app}\mysql-5.6.25-winx64\bin\启动服务.bat”;
4.卸载前启动的应用
[UninstallRun]
Filename: “{app}\apache-tomcat-7.0.59-windows-x64\apache-tomcat-7.0.59\bin\卸载服务.bat”;
Filename: “{app}\mysql-5.6.25-winx64\bin\卸载服务.bat”;
5.启动每次安装或者卸载时请求系统管理员权限
这步骤很重要,如果安装的时候没有该权限,则会发生tomcat注册不到服务,MySQL 运行不了等错误.
“请求系统管理员权限”,需要在安装脚本,的tools->Options勾上”Always Launch Setup/Uninstall as administrator”就可以了.
6.验证64位支持
我用的Tomcat,MySQL 都是64位的,32位的不支持.为了减少错误,需要在[Setup]章节中添加
ArchitecturesAllowed=x64; "ArchitecturesInstallIn64BitMode=x64" requests that the install be ; done in "64-bit mode" on x64, meaning it should use the native ; 64-bit Program Files directory and the 64-bit view of the registry. ; On all other architectures it will install in "32-bit mode". ArchitecturesInstallIn64BitMode=x64; 1 2 3 4 5 6 7
7.编译
按菜单的Build-> Compile ,或按 “Ctrl+F9” 经行编译,编译的文件默认跟脚本同一目录下的output 目录下.
THE END
Refer
[1]Catalina.bat,tomcat的bin目录45行
相关推荐
- 3分钟让你的项目支持AI问答模块,完全开源!
-
hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...
- 干货|程序员的副业挂,12个平台分享
-
1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...
- Github标星超200K,这10个可视化面板你知道几个
-
在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...
- 开箱即用的炫酷中后台前端开源框架第二篇
-
#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...
- 搭建React+AntDeign的开发环境和框架
-
搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...
- 基于.NET 5实现的开源通用权限管理平台
-
??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...
- StreamPark - 大数据流计算引擎
-
使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...
- 教你使用UmiJS框架开发React
-
1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...
- 简单在线流程图工具在用例设计中的运用
-
敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...
- 【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单
-
这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...
- 聊聊规则引擎的调研及实现全过程
-
摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...
- 【开源推荐】Diboot 2.0.5 发布,自动化开发助理
-
一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...
- 微软推出Copilot Actions,使用人工智能自动执行重复性任务
-
IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...
- Electron 使用Selenium和WebDriver
-
本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...
- Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具
-
一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)