日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux项目自动部署

發(fā)布時間:2025/3/21 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux项目自动部署 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

場景:linux中自動部署項目在工作中經(jīng)常遇到,快速高效的部署項目能夠大幅提高工作效率。現(xiàn)在將項目部署的過程記錄下來,以供參考,其中用到的知識點現(xiàn)在還有很多不很清楚,后面要好好琢磨琢磨!

1 項目部署過程

1.1 項目結(jié)構(gòu)

?

典型的spring框架項目,只不過為了將應(yīng)用和服務(wù)相分離,做成了三個部分,service和web之間通過hessian方式進行通訊!

該項目的手工部署方式是:

  • 先對common項目執(zhí)行clean install 的maven命令
  • 對service和web分別執(zhí)行clean package命令
  • 將相關(guān)的jar包上傳到服務(wù)器的tomcat目錄下,解壓后啟動tomcat即可。至于配置tomcat的過程后面再總結(jié)!

1.2 windows本地配置

?本地建立bat腳本文件,實現(xiàn)運行腳本即可進行程序上傳。

自動部署.bat——命令如下

@echo off cd /d %~dp0 title 歡迎自動部署工具rem service工程路徑 set serviceProjectPath=G:\STSPro\rdp-lfcp-service rem web工程路徑 set webProjectPath=G:\STSPro\rdp-lfcp-web rem common工程路徑 set commonProjectPath=G:\STSPro\rdp-lfcp-commonrem service編譯目錄:target\編譯版本 set serviceMavenTargetPath=target\lfcpservice-0.0.1 rem web編譯目錄:target\編譯版本 set webMavenTargetPath=target\lfcpweb-0.0.1rem 工程名字 set projectName=opss rem 服務(wù)器地址 set serverIp=xxx.xxx.xxx.xxx rem 登陸用戶名 set serverLoginId=xxx rem 登陸密碼 set serverLoginPwd=xxx rem -----------------------------以上是配置區(qū)----------------------------------------set thisPath=%~dp0 set serviceBuildPath=%serviceProjectPath%\%serviceMavenTargetPath% set webBuildPath=%webProjectPath%\%webMavenTargetPath% echo. echo ------請輸入部署粒度:0-全部,1-只部署service,2-只部署web set /p toFlag= echo. rem 初始化FTP配置信息..... echo open %serverIp% > ftpinfo.szfesc echo %serverLoginId%>>ftpinfo.szfesc echo %serverLoginPwd%>>ftpinfo.szfesc echo 天王蓋地虎,寶塔鎮(zhèn)河妖。>>game.szfescecho common工程正在執(zhí)行maven install,請稍后... cd /d "%commonProjectPath%" call mvn clean install -B > "%thisPath%maven.log" if 1 EQU %ERRORLEVEL% (color ACecho common工程執(zhí)行maven install失敗,詳見maven編譯日志!goto end )if "0" == "%toFlag%" (rem 正在全部上傳...goto toAll ) if "1" == "%toFlag%" (rem 正在上傳service...goto toServicegoto toUploadFtp ) if "2" == "%toFlag%" (rem 正在上傳web...goto toWebgoto toUploadFtp ):toAll echo service工程正在執(zhí)行maven build,請稍后... cd /d "%serviceProjectPath%" call mvn clean package -B >> "%thisPath%maven.log" if 1 EQU %ERRORLEVEL% (color ACecho service工程執(zhí)行maven build失敗,詳見maven編譯日志!goto end ) echo web工程正在執(zhí)行maven build,請稍后... cd /d "%webProjectPath%" call mvn clean package -B >> "%thisPath%maven.log" if 1 EQU %ERRORLEVEL% (color ACecho web工程執(zhí)行maven build失敗,詳見maven編譯日志!goto end ) cd /d "%thisPath%" echo 正在打包service,請稍后... start /min /wait jar.exe cvf "%projectName%_service.jar" -C "%serviceBuildPath%" . echo put "%projectName%_service.jar" >> ftpinfo.szfesc echo 正在打包web,請稍后... start /min /wait jar.exe cvf "%projectName%_web.jar" -C "%webBuildPath%" . echo put "%projectName%_web.jar" >> ftpinfo.szfesc goto toUploadFtp:toService echo service工程正在執(zhí)行maven build,請稍后... cd /d "%serviceProjectPath%" call mvn clean package -B >> "%thisPath%maven.log" if 1 EQU %ERRORLEVEL% (color ACecho service工程執(zhí)行maven build失敗,詳見maven編譯日志!goto end ) cd /d "%thisPath%" echo 正在打包service,請稍后... start /min jar.exe cvf "%projectName%_service.jar" -C "%serviceBuildPath%" . echo put "%projectName%_service.jar" >> ftpinfo.szfesc goto toUploadFtp:toWeb echo web工程正在執(zhí)行maven build,請稍后... cd /d "%webProjectPath%" call mvn clean package -B >> "%thisPath%maven.log" if 1 EQU %ERRORLEVEL% (color ACecho web工程執(zhí)行maven build失敗,詳見maven編譯日志!goto end ) cd /d "%thisPath%" echo 正在打包web,請稍后... start /min /wait jar.exe cvf "%projectName%_web.jar" -C "%webBuildPath%" . echo put "%projectName%_web.jar" >> ftpinfo.szfesc goto toUploadFtp:toUploadFtp echo 正在上傳至應(yīng)用服務(wù)器,請稍后... echo put game.szfesc >> ftpinfo.szfesc echo bye >> ftpinfo.szfesc echo quit >> ftpinfo.szfesc ftp -s:ftpinfo.szfesc del ftpinfo.szfesc del game.szfesc echo 恭喜,上傳成功,請等待1-2分鐘等系統(tǒng)自動完成部署工作!! goto end:end echo. echo maven 編譯日志存放目錄:%thisPath%maven.log del "%projectName%_service.jar" del "%projectName%_web.jar" timeout /t 5 exit

?

對于同樣結(jié)構(gòu)的程序,只需修改配置區(qū)的相關(guān)參數(shù),即可實現(xiàn)本地程序的打包、上傳過程!效果圖

?上述過程執(zhí)行完之后,自己命名的jar包就自動上傳到配置的當(dāng)前用戶目錄下面了。

1.3 linux端配置

linux端的配置主要有兩點:

?1. 自動部署腳本autoDeploy.sh

#!/bin/sh source $HOME/.profile #JAVA_HOME=/home/lfcp/jdk1.7.0_67 if [ -f "$HOME/game.szfesc" ];thenrm $HOME/game.szfescthisTime=$(date +'%Y%m%d-%H%M%S')#--serviceif [ -f "$HOME/lfcp_service.jar" ];thencd $HOMEkill -s 9 `ps -ef | grep java | grep lfcp| grep service | awk '{print $2}'`sleep 15#mv service/logs/lfcpservice.log service/logs/lfcpservice_${thisTime}.logmv service/lfcpservice service/lfcpservice_${thisTime}mkdir service/lfcpservicemv lfcp_service.jar service/lfcpservice/cd service/lfcpserviceunzip lfcp_service.jarrm lfcp_service.jarcp -f $HOME/service/application.properties $HOME/service/lfcpservice/WEB-INF/classessh $HOME/serstart.shecho runing autoDeploy service over by time $(date +'%Y-%m-%d %H:%M:%S') >> $HOME/autoDeploy.logfi#--webif [ -f "$HOME/lfcp_web.jar" ];thencd $HOMEkill -s 9 `ps -ef | grep java | grep lfcp| grep web | awk '{print $2}'`sleep 15#mv web/logs/lfcpweb.log web/logs/lfcpweb_${thisTime}.logmv web/lfcpweb web/lfcpweb_${thisTime}mkdir web/lfcpwebmv lfcp_web.jar web/lfcpweb/cd web/lfcpwebunzip lfcp_web.jarrm lfcp_web.jarcp -f $HOME/web/application.properties $HOME/web/lfcpweb/WEB-INF/classes#cp -rf $HOME/web/crt $HOME/web/lfcpweb/WEB-INF/classes/crtsh $HOME/webstart.shecho runing autoDeploy web over by time $(date +'%Y-%m-%d %H:%M:%S') >> $HOME/autoDeploy.logfi fi

?

綠色部分本來使用

jar -xvf opss_web.jar

?

來解壓,但是后來發(fā)現(xiàn)環(huán)境變量配置有問題,執(zhí)行自動腳本后并沒有解壓文件的存在。后來改用unzip的方式解壓。這里的環(huán)境變量配置還需要改善

?

?上述命令的理解:

  • 判斷用戶目錄下是否有文件game.szfesc存在,是后續(xù)程序執(zhí)行的開始!
  • service和web的執(zhí)行過程一樣,這里以service為例說明:
  • 如果opss_service.jar文件存在,首先關(guān)閉service工程。然后休眠15s
  • 將之前的工程備份為service/opssservice_${thisTime},用于程序出錯時候的恢復(fù)
  • 創(chuàng)建程序的解壓目錄mkdir service/opssservice,然后將jar包移動到解壓目錄,進行jar文件的解壓
  • 解壓完成后刪除jar文件。用服務(wù)器上的配置文件application.properties,替換上傳時候程序中的配置文件!(這個在多環(huán)境的項目部署中很有用)
  • 啟動tomcat,并打印程序結(jié)束語。

2. 在linux上使用crontab配置定時任務(wù)。對于改命令的使用,可以在本博客中進行搜索。

這樣的話,每分鐘就會自動執(zhí)行一次自動部署命令,剩下的就是查看日志,運行程序了。

未完待續(xù)!

?

總結(jié)

以上是生活随笔為你收集整理的Linux项目自动部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: jizz处女| 东北熟女一区二区三区 | 国产成人亚洲精品无码h在线 | 在线观看黄色网页 | 狠狠操综合 | 欧美性天天影院 | 欧美综合一区二区 | 久久伊人免费 | 97人人澡人人爽人人模亚洲 | 日本高清视频在线播放 | 国产成人久久婷婷精品流白浆 | 女尊高h男高潮呻吟 | 久久久久成人精品无码 | 久操国产 | www成人免费视频 | 国产又黄又大又粗视频 | 亚洲精品高清视频 | 日韩欧美在线视频播放 | 精品一区二区久久久久久按摩 | www.成人网.com| 各种含道具高h调教1v1男男 | 自拍偷拍视频网站 | 亚洲无限av | 一级v片| 成人av一区二区在线观看 | 91视频 - 88av| 人妻精油按摩bd高清中文字幕 | 欧美顶级黄色大片免费 | xx在线视频 | 国产又粗又猛又爽又黄的视频在线观看动漫 | av中文字幕一区二区 | 在线不卡毛片 | 日本视频黄色 | 手机在线观看免费av | 日韩av一区二区在线 | 精品国产欧美一区二区三区成人 | 青青操在线视频 | 免费a网址 | av中文在线观看 | 欧美在线一二三区 | 成人国产精品一区 | 亚洲第一第二区 | 麻豆视频91 | 久久久久亚洲精品系列色欲 | 麻豆视频观看 | 久久久久久久久久国产 | 中文字字幕在线中文 | 日韩欧美亚洲在线 | 欧美88av| 国产精品久久久久久一区 | 欧美性一区 | 久久亚洲av无码西西人体 | 免费黄色国产视频 | 黄页网站免费观看 | 婷婷色中文字幕 | 中国亚洲老头同性gay男男… | 日本黄色www | 日韩一级免费片 | 成人在线激情 | 日本女人性视频 | 神马久久久久久 | 一级特黄高清 | 久久精品国产99国产 | 黄色av成人| 狠狠cao日日穞夜夜穞av | 成人福利在线免费观看 | 麻豆av免费看 | 欧美性久久久久 | 国产6区 | 亚洲精品国产精品国 | 一区二区国产欧美 | 欧美一区二区影院 | 91精品视频国产 | 99国产精品久久久 | 精品人妻少妇嫩草av无码专区 | 欧美日韩一区二区电影 | 一区二区三区四区av | 天天做天天躁天天躁 | 中文字幕在线一区二区三区 | 极品蜜桃臀肥臀-x88av | 男女爱爱网站 | 国产伦精品一区二区三区视频孕妇 | 亚洲av无码一区东京热久久 | 日本大片黄 | 一二三四国产精品 | 诱夫1v1高h | 特级一级黄色片 | 三日本三级少妇三级99 | 日本一区二区视频免费 | www.jizzjizz | 日韩成人福利 | 精品91久久久久久 | 免费中文字幕av | 日韩欧美视频一区 | 精品不卡一区二区 | 日韩欧美电影一区二区三区 | 欧洲美女毛片 | 五月天开心网 | 久艹视频在线 |