mysql一键安装包

发布时间: 2023-11-21 12:34 阅读: 文章来源:1MUMB3921PS

最近公司需要我把做完的项目打包,但公司没有相关经验的文档来作为指导参考,作为有科(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"123

这里的JAVA_HOME,在catalina.bat文件里要求必须使用JDK(Java Develpment Kit){1},且JAVA_OPTS是可选.

2.Service.bat内容

在tomcat的bin目录下的Service.bat文件内容下”:gotJdkHome” 节下添加下面内容:

:gotJdkHomeset "%JAVA_HOME%=%~dp0\Java\jdk1.6.0_45"set "JRE_HOME="%JAVA_HOME%\jre"1234

变成

:gotJdkHomeset "%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 noJavaHomeif not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHomeif not "%JRE_HOME%" == "" goto okJavaHomeset "JRE_HOME=%JAVA_HOME%\jre"goto okJavaHome12345678910

在:gotJreHome节下添加下面的内容:

:gotJreHomeset "JRE_HOME= %GCIEMS_JAVA%\jre"123

变成

:gotJreHomeset "JRE_HOME= %GCIEMS_JAVA%\jre"if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHomeif not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome12345

在:installed节下添加下面的内容:

sc config tomcat7w_Gciems start=autonet start tomcat7w_Gciems123

变成

:installedecho The service ‘%SERVICE_NAME%‘ has been installed.sc config tomcat7w_Gciems start=autonet start tomcat7w_Gciems:installedecho The service ‘%SERVICE_NAME%‘ has been installed.sc config Tomcat7 start=autonet start Tomcat71234567891011

这段主要是启动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 = .....1234567

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" install123

2.关闭Tomcat防火墙端口

在Tomcat 的bin目录下的关闭服务.bat加入下面的代码

netsh advfirewall firewall delete rule name="Tomcat_Gciems端口" dir=in protocol=TCP localport=8080 echo 关闭端口...成功1233.MySQL开放防火墙端口

在MySQL 的 bin目录下的打开服务.bat加入下面的代码:

netsh advfirewall firewall add rule name="MySQL_Gciems端口" dir=in protocol=TCP localport=3066 action=allowecho 增加防火墙端口成功1234.MySQL关闭防火墙端口

在MySQL的bin目录下的关闭服务.bat 加入下面的代码:

netsh advfirewall firewall delete rule name="MySQL_Gciems端口" dir=in protocol=TCP localport=3306 net stop MySQL_Gciems1234.Inno Setup 中的设置1.初始化

打开Inno Setup软件,在File运行new,创建新的项目.

按照它的提示填写信息,直到第三步Application Files的时候

2.添加MySQL系统环境变量以及数据库配置

在Add folder 按钮中添加Tomcat 和MySQL的 目录.

[Code]procedure SetEnv(aEnvName, aEnvValue: string; aIsInstall, aIsInsForAllUser: Boolean);varsOrgValue: string;S1, sFileName: string;bRetValue, bInsForAllUser: Boolean;SL: TStringList;x: integer;beginbInsForAllUser := aIsInsForAllUser;if UsingWinNT thenbegin 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 系统,如Win98begin 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);//添加环境变量beginif CurStep = ssPostInstall thenbegin SetEnv(‘path‘,ExpandConstant(‘{app}/mysql-5.6.25-winx64/bin;‘),true,true); //在这儿重写成你的MySQL 目录{app}是指你安装的父目录,一定在这儿调用,安装完无须重启,立即生效,end;end;procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);//删除环境变量beginSetEnv(‘path‘,ExpandConstant(‘{app}/mysql-5.6.25-winx64/bin;‘),false,true);//同上//SetEnv(‘path‘,‘{app}/bin‘,false,true);end;12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697

[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;12345677.编译

按菜单的Build-> Compile ,或按 “Ctrl+F9” 经行编译,编译的文件默认跟脚本同一目录下的output 目录下.

THE END

Refer

[1]Catalina.bat,tomcat的bin目录45行

•••展开全文