部署java項目-創建私有倉庫
Jenkins大多數情況下都是用來部署Java項目,Java項目有一個特點是需要編譯和打包的,一般情況下編譯和打包都是用maven完成,所以系統環境中需要安裝maven。
本次實驗,我們采用git私有倉庫的形式,涉及到配置密鑰,以zrlog來作為本次實驗需要部署的java項目。
實驗環境:
- 192.168.77.128 作為項目的線上服務器,具有JDK1.8+Tomcat8.5環境
- 192.168.77.130 Jenkins服務器
准備工作:
- 自行在免費的代碼托管平台申請一個私有的git倉庫,我這里使用的是國內的一個免費托管平台:碼雲
- 生成密鑰對,把公鑰放到git服務端,也就是配置倉庫的密鑰認證,常規操作就不演示了
克隆創建好的私有倉庫:
[root@server ~]# cd /home/ [root@server /home]# git clone git@gitee.com:Zero-One/Test-Zrlog.git [root@server /home]# cd Test-Zrlog/ [root@server /home/Test-Zrlog]# ls README.md [root@server /home/Test-Zrlog]# vim README.md // 隨便更改一下內容 [root@server /home/Test-Zrlog]# git add . [root@server /home/Test-Zrlog]# git commit -m "first" [root@server /home/Test-Zrlog]# git push
push成功則代表沒問題。
部署java項目-下載zrlog源碼
下載zrlog的源碼,並解壓:
[root@server /home/Test-Zrlog]# cd ../ [root@server /home]# wget https://codeload.github.com/94fzb/zrlog/zip/master [root@server /home]# du -sh master 2.1M master [root@server /home]# unzip master
然后把解壓后的文件都移到git倉庫里,並提交到遠程倉庫上:
[root@server /home]# mv zrlog-master/* Test-Zrlog/ mv: overwrite ‘Test-Zrlog/README.md’? y [root@server /home]# cd Test-Zrlog/ [root@server /home/Test-Zrlog]# git add . [root@server /home/Test-Zrlog]# git commit -m "zrlog source" [root@server /home/Test-Zrlog]# git push
配置tomcat
在線上服務器上需要安裝好jdk + tomcat,其中jdk最好不要使用openjdk,使用openjdk容易出問題,我這里使用的jdk版本為1.8,tomcat版本則為8.23。
准備好JDK+Tomcat環境並且Tomcat能夠正常服務后,還需要配置Tomcat的用戶文件:
[root@client ~]# vim /usr/local/tomcat/conf/tomcat-users.xml # 在文件末尾加入以下內容 <role rolename="admin"/> # role配置角色 <role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user name="admin" password="your_password" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" /> # user配置用戶及用戶的角色 </tomcat-users> # 注意以上內容是寫在tomcat-users標簽內的
接着配置Tomcat的Context文件,只需要配置白名單ip即可,不然默認只允許本地ip訪問:
[root@client ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml <Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.77.*" /> # 這里可以根據你自己的機器ip進行配置 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
完成以上編輯后,重啟tomcat:
[root@client ~]# sh /usr/local/tomcat/bin/shutdown.sh [root@client ~]# sh /usr/local/tomcat/bin/startup.sh
打開瀏覽器進入到Tomcat的web頁面,然后點擊 “manager webapp” 進入到管理頁面:
然后會進入到管理頁面:
在這個頁面我們可以對發布的web項目進行管理,而且Jenkins也需要通過這個管理頁面的接口來發布我們的Java項目,所以才需要配置這個管理頁面的用戶及白名單ip。
部署java項目-安裝maven
因為我們需要通過maven來幫我們編譯並打包Java項目,所以這一步是安裝好maven,注意這一步是在Jenkins服務器上完成的,官網下載地址:
下載並解壓:
[root@client ~]# cd /usr/local/ [root@client /usr/local]# wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz [root@client /usr/local]# tar -zxvf apache-maven-3.5.2-bin.tar.gz [root@client /usr/local]# rm -rf apache-maven-3.5.2-bin.tar.gz [root@client /usr/local]# ls apache-maven-3.5.2/ bin boot conf lib LICENSE NOTICE README.txt [root@client /usr/local]# apache-maven-3.5.2/bin/mvn --version Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00) Maven home: /usr/local/apache-maven-3.5.2 Java version: 1.8.0_111, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix" [root@client /usr/local]#
安裝完成后,到Jenkins的web頁面上進行配置,jenkins頁面 -> 系統管理 -> 全局工具配置:
先配置maven的setting.xml文件的路徑:
然后往下拉,找到Maven那一欄,配置maven的安裝路徑:
點擊 “Saven” 之后,我們的maven也就配置完了
安裝插件
系統管理 -> 管理插件,檢查是否已經安裝 Maven Integration和 Deploy to container,若沒有安裝則需要安裝這兩個插件:
-
安裝Maven Integration:
- 安裝Deploy to container:
安裝完成:
Maven Integration是用於構建Maven項目的,而Deploy to container則是用於發布遠程war包的。
如果沒有安裝Maven Integration的話,構建任務時是沒有Maven項目的選項的:
重啟Jenkins服務:
systemctl restart jenkins
然后點擊 “新建任務” ,這時會發現多了一個Maven項目的選項,這就證明maven插件安裝成功了:
構建job
點擊 “新建任務” ,創建一個Maven項目:
填寫項目信息:
源碼管理,配置遠程的私有git倉庫:
構建觸發器、構建環境、Pre Steps這幾項保持默認節即可,
然后配置Build那一欄,Build的過程是在編譯源碼並打包:
接下來的Post Steps以及構建設置這兩項也保持默認。
構建后操作需要配置,這一步我這里目前只是配置一下郵件通知,目的是先進行測試能否成功構建Maven項目,測試成功后一會再配置發布war包:
配置完保存之后,就可以點擊立即構建來構建這個maven項目了,我這里是構建成功的:
而且郵箱也成功收到了郵件通知:
這時進入控制台輸出頁面,由於是第一次構建Maven的項目,所以會看到下載了很多Maven相關的東西:
而第二、第三次構建Maven的項目就不會再下載這么多東西了,如上我們的測試構建Maven項目就成功了,接下來就可以遠程發布war包了。
發布war包
回到項目的配置,在構建后操作那一欄點擊 “增加構建后操作步驟” 選擇 “Deploy war/ear to a container” :
Containers選擇Tomcat 8.x,Tomcat URL填寫要把war包發布到的那台機器的url:
Credentials這里需要點擊右側的Add,添加用戶名和密碼:
配置完之后點擊保存即可。
然后就可以構建任務了,我這里是構建成功的:
並且也收到了郵件通知:
這時候到目標機器上,看看war包是否已發布到tomcat上了:
[root@client ~]# ls /usr/local/tomcat/webapps/ docs examples host-manager manager ROOT zrlog-1.9.0 zrlog-1.9.0.war [root@client ~]#
如上,可以看到war已成功發布到tomcat上了。
瀏覽器上也成功登錄了zrlog:
到此為止,我們的Java項目就發布成功了。