摘要:一的函數,在代碼塊中,可以自定義很多功能來實現自定義的開發,具體可以參考在線的文檔二需要用腳本配置環境變量,安裝部署,安裝部署。
windows一鍵部署java項目
因為公司需求,要在windows的環境上做一鍵部署啟動java項目,同時還要支持從安裝界面動態修改配置文件的IP地址。就像安裝軟件一樣將jdk,tomcat,mysql,influxdb,nginx安裝并配置到系統上,順便還要初始化一下數據?;艘恢艿臅r間,這里記錄我的踩坑日志。
準備工作磨刀不誤砍柴工,選擇好工具可以事半功倍。
一)、Inno Setup,一款為Windows程序提供的免費安裝程序,通過它可以將需要的文件壓縮打包成exe安裝程序,然后像安裝程序一樣解壓到另外一個環境中。官網地址
二)、虛擬機,兩個作用:第一可以避免玩壞自己的電腦,第二可以保證每次測試安裝的環境都是干凈的系統,減少一些不必要的麻煩。
三)、JDK1.8,MySQL5.7,Tomcat8,Nginx,InfluxDB等,這是需要壓縮的文件資源。
四)、Windows Server 2012 R2,你值得擁有,用2008安裝MySQL會很不順。
Inno Setup的模版幾乎一樣,如果需要自定義界面,可以在[Code]中添加代碼。比如我需要在安裝的過程中添加一個有輸入框的自定義界面,將輸入的值替換配置文件中的指定內容,安裝成功后在桌面生成快捷鍵。
對于bat腳本語言很薄弱的我來說這里有兩個難點,但依葫蘆畫瓢還是可以做出來的。
一)、Inno Setup的函數,在[Code]代碼塊中,可以自定義很多功能來實現自定義的開發,具體可以參考在線的文檔
二)、需要用bat腳本配置jdk環境變量,安裝部署Tomcat,安裝部署MySQL。
#define MyAppName "自定義程序名稱" #define MyAppVersion "V1.0" #define MyAppPublisher "自定義程序出版商" #define MyAppURL "http://www.xxxx.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-5.6.1.exe 工具自動生成 AppId={{0167D65D-549A-4BA3-B88A-4814EC5A1D35} AppName={#MyAppName} AppVersion={#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} ; 默認安裝路徑 DefaultDirName=C:Program FilesITDragon DefaultGroupName={#MyAppName} ; 軟件名稱 OutputBaseFilename=ITDragon ; 軟件圖標 SetupIconFile=C:UsersLongDesktopokITDragonitdragon.ico ; 壓縮方式 Compression=lzma ; yes 可以使文件更小 SolidCompression=yes ; 必需有管理員權限才能安裝 PrivilegesRequired=admin ; 安裝密碼 ;Password=itdragon ; 開啟加密,可能還需要一個dll文件 ;Encryption=yes ; 語言配置 [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" ; 安裝文件 [Files] ; 安裝部署的源文件路徑 Source: "C:UsersLongDesktopITDragon*"; 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 Name: "{commondesktop}Mysql數據初始化腳本"; Filename: "{app}mysqlinit-data.bat" Name: "{commondesktop}安裝須知"; Filename: "{app}安裝須知.doc" ; 程序安裝成功后執行腳本 [Run] Filename: "{app} omcatinit-jdk.bat"; Filename: "{app} omcatininit-tomcat.bat"; Filename: "{app}mysqlininit-mysql.bat"; ; 在安裝的時候輸入IP地址,動態將localhost修改為輸入值 [Code] var myPage:TwizardPage;//自定義窗口 ed1:TEdit;//自定義輸入框 Lbl1: TNewStaticText;//自定義標題 //初始化引導窗口 procedure InitializeWizard(); begin myPage:=CreateCustomPage(wpWelcome, "配置服務IP地址", "請輸入正確的IP地址,已確保服務的正常使用"); Lbl1 := TNewStaticText.Create(myPage); Lbl1.Left := ScaleX(5); Lbl1.Top := ScaleY(5); Lbl1.Width := ScaleX(250); Lbl1.Height := ScaleY(50); Lbl1.Caption := "IP地址輸入框標題"; Lbl1.Parent := myPage.Surface; ed1:=TEdit.Create(myPage); ed1.Width:=ScaleX(410); ed1.Top := ScaleY(25); ed1.Text :="127.0.0.1"; ed1.Parent:=myPage.Surface; end; procedure CurStepChanged(CurStep: TSetupStep); var fileName:String; svArray: TArrayOfString; nLines,i:Integer; begin //復制文件后執行 if CurStep = ssPostinstall then begin fileName := ExpandConstant("{app} ginxhtmlmain.bundle.js"); LoadStringsFromFile(fileName, svArray);//讀取文件 nLines := GetArrayLength(svArray); for i := 0 to nLines - 1 do if (0 < Pos("localhost", svArray[i])) then//查找目標 StringChange(svArray[i], "localhost", ed1.Text); SaveStringsToUTF8File(fileName, svArray, false); end; end;
注意:
一)、如果你不需要自定義函數,[Code]代碼塊都可以刪掉
二)、點擊Inno Setup上的compile按鈕開始編譯,編譯成功后會在一個Output目錄夾生成exe文件,這個Output目錄一般和iss文件在同一層。
在做這個需求的時候,看了幾篇文章,發現他們都把jdk放在Tomcat目錄中,第一次做的時候也傻乎乎的放在Tomcat目錄中,其實沒必要。而且目前主流的springboot項目都是內嵌tomcat。新建一個bat腳本用來運行java程序java -jar xxx.jar 安裝成功后在桌面生成一個快捷鍵,讓用戶雙擊啟動服務。如果你有跟合理的方法,可以告訴我?。?!
init-jdk.bat,內容來源網絡,修改時需要目錄層級關系:
@echo off echo cd .. echo "%~dp0" echo "%cd%" set jdkpath=%cd% omcatinjavajdk echo %jdkpath% setx JAVA_HOME "%jdkpath%" -m setx CLASSPATH ".;%%JAVA_HOME%%lib ools.jar;%%JAVA_HOME%%libdt.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_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment" /v Path /t REG_SZ /d "%Path%;%%JAVA_HOME%%in;%%JAVA_HOME%%jrein" /f setx Path "%%JAVA_HOME%%in;%Path%" ) exitTomcat安裝部署
需要將init-tomcat.bat文件放在tomcat/bin目錄下,有博客說要修改service.bat文件,我沒有修改依然可以正常啟動。在看別人的博客的時候,遇到不明白的地方可以先試著跳過去。我就傻乎乎的下了一個tomcat6,對比兩者有什么區別......
echo -------tomcat begin-------- call "%~dp0%service.bat" install tomcat8 echo -------tomcat install end------------------ sc config tomcat8 start= auto net start tomcat8 exitMySQL安裝部署
MySQL安裝需要注意兩點:第一設置數據庫初始密碼,第二設置數據庫編碼格式,
一)、初始化數據庫的時候不要生成密碼,方便后期修改,命令mysqld.exe --initialize-insecure --user=mysql --console
二)、數據庫的編碼格式要統一為utf8,網上很多方法都是在my.ini文件中配置編碼格式,可MySQL5.7沒有該文件,沒有就創建一個。MySQL5.6如果手動創建my.ini文件可能在啟動服務時有問題。
init-mysql.bat,內容來源網絡,稍作修改。
cd /d %~dp0 cd .. set inipath=%cd%my.ini cd bin "%cd%mysqld.exe" -install mysql --defaults-file="%inipath%" "%cd%mysqld.exe" --initialize-insecure --user=mysql --console net start mysql sc config mysql start=auto net stop mysql net start mysql echo 安裝完畢 "%cd%mysqladmin.exe" -u root password root echo 修改密碼完畢 cd .. "%cd%inmysql.exe" -uroot -proot < "%cd%sqlfileinitMysql.sql" echo 數據庫初始化完成 pause;
initMysql.sql
create database IF NOT EXISTS itdragon_data character set utf8; set global character_set_database=utf8; set global character_set_server=utf8;遇到的坑
用了Inno Setup工具,一鍵部署配置web項目變的很簡單,只需要將部署的資源壓縮成exe文件,然后點擊exe文件待安裝成功后執行自動運行bat文件初始化配置即可??晌乙廊辉捔撕荛L的時間。原因有幾點:
一)、開始安裝的環境是Windows Server 2008,安裝MySQL5.7失敗,原因是不支持MySQL5.7提供的高級讀寫鎖。后來換成了MySQL5.6安裝成功
二)、MySQL5.6啟動服務失敗1067,網上也有很多解決方法,沒有一個成功。無奈換了WIndows Server 2012 r2,結果一次成功。
三)、對Inno Setup函數使用不熟,資源文件太大,每次編譯調試要等待半小時。
文章到這里就結束了,InfluxDB和Nginx就更簡單了,一樣的邏輯。希望大家把時間用到正確的地方。如果覺得不錯可以點個"推薦"
參考文章:
https://blog.csdn.net/liuhaom...
https://blog.csdn.net/dj0721/...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71530.html
摘要:第一步如何以最低價格快速買到阿里云服務器如果我是學生,我如何通過買到價值的服務答用購買云服務器是阿里云學生專屬活動。除阿里云外,大多數云服務器公司例如西部等同配置云服務器的價格都在左右。例如云服務器地址等。第一步:如何以最低價格快速買到阿里云服務器?1.1 如果我是學生,我如何通過¥9.9買到價值¥117的服務?答:用¥9.9購買云服務器ECS是阿里云學生專屬活動。首先,你需要在阿里云官網注...
摘要:首先,你需要在阿里云官網注冊賬號。然后在阿里云官網首頁點擊校園扶持,經學生認證后便可購買每月的特價云服務器。圖幕布拍照如果對備案還有疑問,請參考阿里云官方文檔首次備案圖文引導。具體操作方式請看阿里云官方介紹鏡像部署或一鍵安裝包部署。第一步:如何以最低價格快速買到阿里云服務器?1.1 如果我是學生,我如何通過¥9.9買到價值¥117的服務? 答:用¥9.9購買云服務器ECS是阿里云學生專屬活動...
摘要:首先,你需要在阿里云官網注冊賬號。然后在阿里云官網首頁點擊校園扶持,經學生認證后便可購買每月的特價云服務器。圖幕布拍照如果對備案還有疑問,請參考阿里云官方文檔首次備案圖文引導。具體操作方式請看阿里云官方介紹鏡像部署或一鍵安裝包部署。第一步:如何以最低價格快速買到阿里云服務器? 1.1 如果我是學生,我如何通過¥9.9買到價值¥117的服務? 答:用¥9.9購買云服務器ECS是阿里云學生專屬活...
摘要:首先,你需要在阿里云官網注冊賬號。然后在阿里云官網首頁點擊校園扶持,經學生認證后便可購買每月的特價云服務器。圖幕布拍照如果對備案還有疑問,請參考阿里云官方文檔首次備案圖文引導。具體操作方式請看阿里云官方介紹鏡像部署或一鍵安裝包部署。第一步:如何以最低價格快速買到阿里云服務器?1.1 如果我是學生,我如何通過¥9.9買到價值¥117的服務? 答:用¥9.9購買云服務器ECS是阿里云學生專屬活動...
摘要:最近的一個項目,由三個工程以及一個工程組成。為了使用下的各種工具提升效率,本文探討子系統的使用及在該系統下,等工具的配置。參考鏈接內置子系統初體驗設置環境變量并立即生效設置環境變量的方法和區別官網工具的使用簡明安裝教程 最近的一個項目,由三個 Gradle「Java」工程以及一個 Node「Vue.js」工程組成。為了使用 Linux 下的各種工具提升效率,本文探討 Linux 子系統...
閱讀 1176·2021-10-11 10:59
閱讀 1962·2021-09-29 09:44
閱讀 852·2021-09-01 10:32
閱讀 1423·2019-08-30 14:21
閱讀 1869·2019-08-29 15:39
閱讀 2972·2019-08-29 13:45
閱讀 3531·2019-08-29 13:27
閱讀 2005·2019-08-29 12:27