windows一鍵部署java項目

前言

  前段時間老大看我很閒...而後給我下達了一項很重要的任務:windows一鍵部署,須要把服務(jdk、tomcat、mysql、jar包、前端壓縮包)打成一個exe應用程序,點擊安裝會啓動全部服務,打開瀏覽器http://localhost:8080/xxx就能夠訪問系統了,運維人員一鍵安裝便可省去了環境搭建和部署的時間。聽後感受很神奇,網上找了找確實有這種案例,因而我就開始了學習和實踐,一週以後不辱使命,完美地完成任務能夠去交差了
php

準備工做

  jdk用的1.8免安裝版,只須要將安裝好的jdk拷貝一份便可。下載地址html

  tomcat用的8版本,下載後綴windows-x64.zip的免安裝版。下載地址前端

  mysql用的5.7.24免安裝版,高版本有不少問題(如不須要mysql,刪除其相關代碼便可)。下載地址java

  Inno Setup6,一款爲Windows程序提供的免費安裝程序,經過它能夠將須要的文件壓縮打包成exe安裝程序,而後像安裝程序同樣解壓到另一個環境中。下載地址mysql

  

編輯腳本

  編輯腳本前先來簡單學習一些cmd命令sql

  cd:進入  "%cd%":當前目錄  echo:打印輸出  exit:退出  pause:按下任意鍵繼續。。。數據庫

init-path.batapache

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窗口windows

運行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

本人原創,僅供參考。未經容許,禁止轉載!!!

相關文章
相關標籤/搜索