摘要:本文記錄了自己工作中所用到的自動(dòng)化部署偷懶歷程,有需要的程序汪自行收藏。結(jié)論本文僅適合在自己負(fù)責(zé)的項(xiàng)目中簡(jiǎn)單進(jìn)行自動(dòng)化的部署偷懶,基于本文,可以擴(kuò)展發(fā)揮做一個(gè)自動(dòng)化部署系統(tǒng)。
簡(jiǎn)述
作為一只后臺(tái)狗,在使用Java為技術(shù)棧來(lái)開(kāi)發(fā)后端服務(wù)應(yīng)用的時(shí)候,或多或少的都需要自己手動(dòng)部署。一開(kāi)始,覺(jué)得寫(xiě)完一次自己手動(dòng)部署到服務(wù)器上,還覺(jué)得新鮮感還不錯(cuò),畢竟看著黑黑的terminal有種莫名的興奮。后來(lái)服務(wù)端寫(xiě)完,需要改動(dòng)web應(yīng)用的時(shí)候,而且一次需要部署三到四個(gè)應(yīng)用的時(shí)候,一股惡心感從內(nèi)而外噴涌而出。
本文記錄了自己工作中所用到的自動(dòng)化部署(偷懶)歷程,有需要的程序汪自行收藏。
辛酸之路
由于工作中使用的IDE是eclipse,使用Maven進(jìn)行包管理,所以,以下所涉及的都是基于Java 1.8,Maven 3.3.9,Elicpse Luna 4.4.2。
項(xiàng)目中如果有使用Maven的話,則可以很方便的以tomcat7為例,在pom文件中配置一個(gè)插件即可輕松實(shí)現(xiàn),代碼如下:
org.apache.tomcat.maven tomcat7-maven-plugin 2.2 http://server:port/manager/text admin admin true /wepapp
此處注意url節(jié)點(diǎn)。另外需要在tomcat服務(wù)器的conf/tomcat-users.xml配置一個(gè)admin的用戶權(quán)限。
大功告成,運(yùn)行mvn tomcat7:deploy,你就會(huì)驚奇的發(fā)現(xiàn)war文件就到了對(duì)應(yīng)的tomcat下的webapps目錄之中了。
tomcat雖然部署麻煩,但是就穩(wěn)定性來(lái)說(shuō),比起其它的web容器還是稍微好一丟丟。略過(guò)tomcat的坑不說(shuō),服務(wù)器中往往會(huì)有多個(gè)tomcat存在,特別是在測(cè)試的服務(wù)器上,我司放了有10多個(gè)tomcat,這樣,作為一個(gè) 沒(méi)有專(zhuān)門(mén)部署人員的小團(tuán)隊(duì)來(lái)說(shuō),簡(jiǎn)直是個(gè)噩夢(mèng),部署幾個(gè)應(yīng)用需要執(zhí)行一大丟命令。
會(huì)偷懶的人往往就會(huì)寫(xiě)好一些常用的部署腳步,避免重復(fù)性的工作,在這里,我只簡(jiǎn)單介紹自己所使用的一種腳本,就是根據(jù)tomcat容器所在路徑找到所在進(jìn)程,殺死進(jìn)程,然后進(jìn)行重啟。
#!/bin/bash tomcat_path1=/home/tomcat/tomcat_r3 cd $tomcat_path1 echo xxx的tomact路徑是$tomcat_path1 # 找到tomcat1的進(jìn)程id tomcat1_pid=$(ps -ef|grep $tomcat_path1|gawk "$0 !~/grep/ {print $2}" |tr -s " " " ") if [ "$tomcat1_pid" ];then echo xxx的tomact進(jìn)程 id是 $tomcat1_pid # 殺掉tomcat1進(jìn)程 if kill -9 $tomcat1_pid then echo 成功殺死xxx的進(jìn)程 else echo xxx進(jìn)程沒(méi)殺死,尷尬 fi else echo XXX進(jìn)程已經(jīng)掛掉了 fi # 啟動(dòng)tomcat2并重定向到日志輸出 sh $tomcat_path2/bin/startup.sh echo 重啟xxx
由于是在windows中進(jìn)行開(kāi)發(fā)工作,服務(wù)器使用的是cent os,所以又會(huì)多出許多重復(fù)性的工作。所以我選擇使用putty,在windows與Linux之間架一個(gè)橋,從而能夠方便的上傳文件以及對(duì)遠(yuǎn)程服務(wù)器進(jìn)行操作。
整體思路是,本地打包maven項(xiàng)目,打包完成之后上傳到服務(wù)器WEB容器對(duì)應(yīng)目錄,然后調(diào)用我們上一步的服務(wù)器腳本,完成整體項(xiàng)目部署流程。批處理文件代碼示例如下:
@echo off set project_path=xxx set server_user_1=root set server_passwd_1=xxx set server_ip_1=serverip set local_file1=%project_path1% argetxxx.war set deploy-shell=test-web-deploy.sh echo 當(dāng)前使用的JDK 版本: java -version echo 開(kāi)始打包 E: cd %project_path% call mvn clean install echo 打包完畢 echo 開(kāi)始上傳xxx到服務(wù)器 call pscp -P port -l %server_user_1% -pw %server_passwd_1% -r %local_file1% %server_ip_1%:%server_path1% echo 上傳xxx完畢 echo 開(kāi)始運(yùn)行腳本 call plink -P port %server_user_1%@%server_ip_1% -pw %server_passwd_1% sh %deploy-shell%
終于鳥(niǎo)槍換炮了,感覺(jué)自己又多了好多時(shí)間可以做其他的(休息)事了。測(cè)試了一下,效果還是很令人滿意的,花在部署上的時(shí)間已經(jīng)幾近為零。
結(jié)論
本文僅適合在自己負(fù)責(zé)的項(xiàng)目中簡(jiǎn)單進(jìn)行自動(dòng)化的部署(偷懶),基于本文,可以擴(kuò)展發(fā)揮做一個(gè)自動(dòng)化部署系統(tǒng)。
Tips:關(guān)于CI的話,網(wǎng)絡(luò)上有許多持續(xù)集成項(xiàng)目的框架,在這里推薦三個(gè):
Travis CI 開(kāi)源持續(xù)集成框架,搭配github使用,干活不累,而且只需要配置yaml,方便快捷。
這里只是做一個(gè)學(xué)習(xí)和交流,如需要更深層次的交流,可以聯(lián)系作者:1049058427@qq.com
個(gè)人博客地址:小安安的自留地
知乎專(zhuān)欄地址:全干工程師
Github地址:wslongchen
或者掃碼回復(fù)“應(yīng)垂絲汀”加入作者的小圈子:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/67475.html
摘要:在頁(yè)面中執(zhí)行的表達(dá)式語(yǔ)法表達(dá)式注意表達(dá)式不以分號(hào)結(jié)束示例張學(xué)友聲明一個(gè)字符串變量聲明一個(gè)返回整型值的函數(shù)單行注釋多行注釋這里是腳本代碼測(cè)試哈哈你好四頁(yè)面生命周期問(wèn)答題當(dāng)用戶第一次請(qǐng)求一個(gè)頁(yè)面時(shí),首先被執(zhí)行的方法是構(gòu)造方法答案選。 java web開(kāi)發(fā)學(xué)習(xí)筆記。 一、jsp簡(jiǎn)介 JSP與 PHP、ASP、ASP.NET 等語(yǔ)言類(lèi)似,運(yùn)行在服務(wù)端的語(yǔ)言。 JSP(全稱(chēng)Java Server...
摘要:任何初始化任務(wù)應(yīng)該在文件中的事件的事件處理函數(shù)中。這個(gè)配置文件有幾個(gè)地方很關(guān)鍵,一開(kāi)始沒(méi)有認(rèn)真看,將插件導(dǎo)進(jìn)工程跑的時(shí)候各種問(wèn)題,十分頭痛,不得不重新認(rèn)真看看文檔。 前言 來(lái)新公司的第一個(gè)任務(wù),研究hybrid App中間層實(shí)現(xiàn)原理,做中間層插件開(kāi)發(fā)。這個(gè)任務(wù)挺有意思,也很有挑戰(zhàn)性,之前在DCloud雖然做過(guò)5+ App開(kāi)發(fā),但是中間層的東西確實(shí)涉及不多。本系列文章屬于系列開(kāi)篇cord...
摘要:前言基于端的業(yè)務(wù)需求,為了更好地服務(wù)于用戶。需要在售賣(mài)端加上全景預(yù)覽的功能,目前用的是開(kāi)發(fā)的產(chǎn)品,需要基于的全景預(yù)覽功能。關(guān)于初始化配置,對(duì)于多場(chǎng)景的全景來(lái)說(shuō)最好使用和屬性組成的配置項(xiàng)。 前言 基于C端的業(yè)務(wù)需求,為了更好地服務(wù)于用戶。需要在售賣(mài)端加上全景預(yù)覽的功能,目前用的是web開(kāi)發(fā)的產(chǎn)品,需要基于web的全景預(yù)覽功能。通過(guò)搜索查找比較,最終選擇使用pannellum。 Pann...
閱讀 2610·2021-09-24 10:29
閱讀 3894·2021-09-22 15:46
閱讀 2632·2021-09-04 16:41
閱讀 3039·2019-08-30 15:53
閱讀 1329·2019-08-30 14:24
閱讀 3117·2019-08-30 13:19
閱讀 2237·2019-08-29 14:17
閱讀 3584·2019-08-29 12:55