• windows一键部署java项目


    前言

      前段时间老大看我很闲...然后给我下达了一项很重要的任务: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=3306
    
    default-character-set=utf8
    
    [mysqld]
    
    wait_timeout=2880000
    
    interactive_timeout = 2880000
    
    max_allowed_packet = 100M
    
    sql_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" startservice
    
    pause;
    
    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=%%d
            echo The process pid '!pid!' has been released
        ) else (
            set pid=%%e
            echo 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

     

  • 相关阅读:
    Sigma 规则如何帮助解决网络安全技能短缺问题
    盒式交换机堆叠配置
    安卓APT技术讲解(下)-实现安卓组件化的路由功能
    sip服务器 国标gb28181
    CloneNotSupportedException的解决方案 + Object的clone方法分析
    【回归预测-Lstm预测】基于长短期记忆网络LSTM实现电价时间序列单步预测附matlab代码
    sql注入(7), python 实现盲注爆破数据库名, 表名, 列名
    I2C3挂载wm8960音频芯片竟如此简单
    [开源]MIT协议,开源论坛程序,拥有友好的用户界面和操作体验
    Bootstrap前端开发框架(简介、版本、优点、使用、布局容器、栅格系统(栅格选项参数,列嵌套,列偏移,列排序,响应式工具))
  • 原文地址:https://blog.csdn.net/xsq123/article/details/127643194