欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Jenkins+tomcat自動(dòng)發(fā)布的熱部署/重啟及遇到的問(wèn)題解決辦法(推薦)

 更新時(shí)間:2020年07月10日 10:54:23   作者:碼猿手  
這篇文章主要介紹了Jenkins+tomcat自動(dòng)發(fā)布的熱部署/重啟及遇到的問(wèn)題解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一.背景

  公司的項(xiàng)目一直手動(dòng)maven打包、上傳服務(wù)器、關(guān)閉/開(kāi)啟tomcat,整個(gè)流程下來(lái)耗時(shí)耗力,雖然可以將所有流程通過(guò)shell腳本一次性解決,但如果可以通過(guò)idea的Jenkins插件一鍵自動(dòng)部署,那更省時(shí)省力。

  下面是一個(gè)簡(jiǎn)單的發(fā)布tomcat的shell腳本,執(zhí)行下面腳本的前提是要在服務(wù)器中安裝了git、maven

# 先關(guān)閉tomcat進(jìn)程
kill -9 `ps aux|grep tomcat|grep -v 'grep'| awk 'NR==1{print $2}'`
# 切換到項(xiàng)目存放位置
cd nxyyProjectSource/NXYY
# git拉取最新代碼
git pull xxxx
# 切換到項(xiàng)目下面的代碼存放位置
cd nxyy
# maven打包
mvn clean
mvn install -DskipTests
# 將war包放到tomcat下
cd
cp nxyyProjectSource/NXYY/nxyy/target/nxyy.war /home/tomcat/webapps
# 開(kāi)啟tomcat
cd /home/tomcat/bin
./startup.sh
# 查看日志
tail -f ../logs/catalina.out

  每次git拉取時(shí),都需要密碼,進(jìn)行下面的配置后,只需要在第一次輸入密碼后會(huì)永久保存到服務(wù)器中,下次再git拷貝/拉取時(shí)就不需要輸入密碼了:

git config --global credential.helper store

  如果想清除賬號(hào)和密碼,輸入:

git config --global credential.helper reset

  如果想臨時(shí)存儲(chǔ)(默認(rèn)15分鐘),輸入:

git config --global credential.helper cache

  單獨(dú)對(duì)某個(gè)項(xiàng)目免密,在https鏈接里加入username:password

git remote add origin https://username:password@xxx.git

  上面這些配置保存在.git/config里。

二.Jenkins的安裝/配置/熱部署/腳本tomcat重啟

下載安裝包jenkins.war;在安裝包根路徑下,運(yùn)行命令java -jar jenkins.war --httpPort=8080(linux環(huán)境、Windows環(huán)境都一樣),運(yùn)行后有一個(gè)密碼,需要登錄時(shí)使用:

打開(kāi)瀏覽器進(jìn)入鏈接http://ip:8080,進(jìn)入插件安裝選擇,這里建議選擇,推薦安裝的插件,保證基本常用的功能可以使用;選擇后,進(jìn)入插件安裝頁(yè)面,有些插件安裝失敗,可以點(diǎn)擊到后面的再次安裝:

設(shè)置初始用戶和密碼,為下次登錄時(shí)使用:

進(jìn)入系統(tǒng),安裝完成:

注意,如果還是進(jìn)入不了系統(tǒng),需要稍等一下,或者刷新頁(yè)面,如果還是進(jìn)入不了,需要重新啟動(dòng)jenkinds服務(wù)器,在啟動(dòng)首頁(yè)url后面加上restart就可以了【重啟:http://ip:8080/restart】;如果輸入默認(rèn)密碼之后,一直卡住問(wèn)題:

在$JENKINS_HOME/hudson.model.UpdateCenter.xml文件中,默認(rèn)內(nèi)容如下:

<?xml version='1.0' encoding='UTF-8'?>
 <sites>
 <site>
 <id>default</id>
 <url>http://updates.jenkins-ci.org/update-center.json</url>
 </site>
</sites>

這個(gè)地址在外國(guó)的服務(wù)器,因?yàn)閴Φ脑颍螺d初始化界面所需插件不了,就一直處于等待狀態(tài),把url改為http://mirror.xmission.com/jenkins/updates/update-center.json就解決了進(jìn)行系統(tǒng)系統(tǒng)配置設(shè)置Jenkins的訪問(wèn)路徑,當(dāng)然,這個(gè)路徑在創(chuàng)建用戶名之后會(huì)出現(xiàn):

設(shè)置插件安裝源:插件管理 -> 高級(jí),http://mirror.xmission.com/jenkins/updates/current/update-center.json

進(jìn)行系統(tǒng)管理的全局工具配置,maven、JDK、Git的配置:

配置完后進(jìn)行項(xiàng)目的搭建,選擇新建任務(wù):

在進(jìn)行項(xiàng)目信息配置前,需要一些憑證Credentials信息,比如git的用戶名和密碼、tomcat用戶的用戶名和密碼:系統(tǒng)管理 -> 憑據(jù)(Manage Credentials)

需要tomcat的用戶名和密碼,是為了讓Jenkins可以遠(yuǎn)程發(fā)布tomcat,在tomcat的conf下tomcat-users.xml里面配置的:tomcat遠(yuǎn)程發(fā)布需要修改tomcat-users.xml、context.xml(下文構(gòu)建遇到的坑第5點(diǎn))、manager.xml(下文構(gòu)建遇到的坑第6點(diǎn)

<tomcat-users xmlns="http://tomcat.apache.org/xml"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"

    version="1.0">

 <role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <role rolename="admin-gui"/>
 <user username="用戶名" password="密碼" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui"/>
</tomcat-users>

進(jìn)行項(xiàng)目信息的配置,在配置完進(jìn)行構(gòu)建,tomcat必須在服務(wù)器中是啟動(dòng)狀態(tài):

上面是tomcat熱部署,下面進(jìn)行tomcat的重啟執(zhí)行項(xiàng)目:先安裝插件Publish Over SSH,進(jìn)行信息配置:系統(tǒng)管理 -> 信息配置 ->Publish over SSH

構(gòu)建的配置前需要?jiǎng)?chuàng)建一個(gè)重啟tomcat的腳本:vi tomcat.sh,然后賦予執(zhí)行權(quán)限chmod 777 tomcat.sh

#這里需要加上JAVA_HOME的配置,雖然在本地的環(huán)境變量中已經(jīng)配置了,但是遠(yuǎn)程調(diào)用的時(shí)候,還是需要配上的,否則執(zhí)行腳本出錯(cuò)。
export JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
# tomcat的位置
tomcat_home=/home/tomcat-dev
#【3.1】 停止tomcat變量
SHUTDOWN=$tomcat_home/bin/shutdown.sh
#【3.2】 啟動(dòng)tomcat變量
STARTTOMCAT=$tomcat_home/bin/startup.sh
#【3.3】 刪除所有項(xiàng)目文件包括war包和war解壓后的文件 如果是局部發(fā)布這句不需要 這只是正對(duì)jenkins整個(gè)war發(fā)布
rm -rf /home/tomcat-dev/webapps/TSISAPP*

#得到進(jìn)程ID 這里也可以簡(jiǎn)寫(xiě) 如果你ps -ef|grep 項(xiàng)目名稱 可以帶出PID 那么可以直接寫(xiě)成這樣
#之前為什么寫(xiě)那么長(zhǎng) 是因?yàn)樵谟胘enkins調(diào)用腳本的時(shí)候,也會(huì)帶出jenkins調(diào)用腳本的那個(gè)進(jìn)程 這樣kill -9 就會(huì)killjenkins進(jìn)程 導(dǎo)致一建發(fā)布中斷
#所以這里一直寫(xiě)到了conf文件夾目錄
#如果不需要用到j(luò)enkins可以用下面簡(jiǎn)潔版 得出PID命令
#PID=`ps -ef |grep 項(xiàng)目名稱  |grep -v grep | awk '{print $2}'`
#【3.4】 獲取進(jìn)程ID
PID=`ps -ef |grep /home/tomcat-dev/conf |grep -v grep | awk '{print $2}'`
if [ ! "$PID" ];then # 這里判斷TOMCAT進(jìn)程是否存在
    echo "進(jìn)程不存在"
else
    echo "進(jìn)程存在 殺死進(jìn)程PID:$PID"
    kill -9 $PID
fi

#【3.5】啟動(dòng)項(xiàng)目
$STARTTOMCAT  
echo "啟動(dòng)項(xiàng)目"

構(gòu)建:Post Steps選擇Send files or execute commands over SSH,下面的構(gòu)建后操作 -> Deploy war/ear to a container 就不需要了:

三.構(gòu)建遇到的坑

如果沒(méi)有構(gòu)建一個(gè)maven項(xiàng)目,在插件中查找后進(jìn)行安裝:Maven Integration plugin

在構(gòu)建后如果沒(méi)有Deploy war/ear to a container,在插件中查找后進(jìn)行安裝:Deploy to container Plugin

出現(xiàn)下面的錯(cuò)誤:

[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]

解決辦法:在pom.xml的<build>標(biāo)簽中添加<defaultGoal>install</defaultGoal>

出現(xiàn)下面的錯(cuò)誤:org.codehaus.cargo.container.ContainerException: Failed to deploy 或org.codehaus.cargo.container.ContainerException: The [cargo.remote.username] and [cargo.remote.password] properties are mandatory and need to be defined in your configuration

解決辦法:在pom.xml的<build>標(biāo)簽中的<plugins>中添加

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.9</version>
    <configuration>
     <container>
      <!-- 容器版本名稱-->
      <containerId>Tomcat 9.x</containerId>
      <type>remote</type>
     </container>
     <configuration>
      <type>runtime</type>
      <properties>
       <!-- tomcat管理界面-->
       <cargo.remote.uri>http://ip:8888/manager/text</cargo.remote.uri>
       <!-- tomcat管理界面用戶名和密碼-->
       <cargo.remote.username>用戶名</cargo.remote.username>
       <cargo.remote.password>密碼</cargo.remote.password>
      </properties>
     </configuration>
    </configuration>
   </plugin>

出現(xiàn)下面的問(wèn)題:Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager
解決辦法:到tomcat的 /webapps/manager/META_INF/context.xml文件,將文件中對(duì)訪問(wèn)的來(lái)源受限設(shè)置注釋

<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" />
--> //注釋掉即可
 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

tomcat遠(yuǎn)程連接出現(xiàn)403拒絕,在conf/Catalina/localhost下添加manager.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
   docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

idea結(jié)合Jenkins插件進(jìn)行遠(yuǎn)程發(fā)布,在Crumb Data通過(guò)http://ip:8080/crumbIssuer/api/xml?tree=crumb#獲取填入時(shí),出現(xiàn)CSRF enabled -> Missing or bad crumb data

通過(guò)搜索網(wǎng)上解決方案,大多都是說(shuō)開(kāi)啟CSRF服務(wù),

但還是無(wú)法解決該問(wèn)題,解決辦法:點(diǎn)擊用戶名 -> 設(shè)置 -> API Token -> 當(dāng)前 Token,通過(guò)token名生成token,代替上面的用戶名和密碼,最后終于成功了

 

到此這篇關(guān)于Jenkins+tomcat自動(dòng)發(fā)布的熱部署/重啟及遇到的問(wèn)題解決辦法(推薦)的文章就介紹到這了,更多相關(guān)Jenkins tomcat 熱部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Tomcat內(nèi)存配置的正確姿勢(shì)

    淺談Tomcat內(nèi)存配置的正確姿勢(shì)

    這篇文章主要介紹了淺談Tomcat內(nèi)存配置的正確姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 為eclipse和IDEA配置tomcat服務(wù)器的方法

    為eclipse和IDEA配置tomcat服務(wù)器的方法

    這篇文章主要介紹了為eclipse和IDEA配置tomcat服務(wù)器的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Tomcat下載安裝并部署到IDEA的教程(附帶idea兩種熱部署設(shè)置方法)

    Tomcat下載安裝并部署到IDEA的教程(附帶idea兩種熱部署設(shè)置方法)

    這篇文章主要介紹了Tomcat下載安裝并部署到IDEA的教程(附帶idea兩種熱部署設(shè)置方法),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 使用JMX監(jiān)控Tomcat示例代碼

    使用JMX監(jiān)控Tomcat示例代碼

    這篇文章主要介紹了使用JMX監(jiān)控Tomcat示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Tomcat搭建本地服務(wù)器的圖文教程

    Tomcat搭建本地服務(wù)器的圖文教程

    Tomcat 服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器。本文通過(guò)圖文并茂的形式給大家介紹了Tomcat搭建本地服務(wù)器的方法,感興趣的朋友一起看看吧
    2018-02-02
  • Maven 修改tomcat運(yùn)行版本和端口的實(shí)現(xiàn)方法

    Maven 修改tomcat運(yùn)行版本和端口的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Maven 修改tomcat運(yùn)行版本和端口的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python Flask微信小程序登錄流程及登錄api實(shí)現(xiàn)代碼

    Python Flask微信小程序登錄流程及登錄api實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python Flask微信小程序登錄流程及登錄api實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • tomcat設(shè)置自啟動(dòng)的方法實(shí)現(xiàn)

    tomcat設(shè)置自啟動(dòng)的方法實(shí)現(xiàn)

    本文主要介紹了在不同操作系統(tǒng)(Windows、MacOS、Ubuntu/Linux)下設(shè)置Tomcat自啟動(dòng)服務(wù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • 詳解將Web項(xiàng)目War包部署到Tomcat服務(wù)器基本步驟

    詳解將Web項(xiàng)目War包部署到Tomcat服務(wù)器基本步驟

    本篇文章主要介紹了詳解將Web項(xiàng)目War包部署到Tomcat服務(wù)器基本步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Tomcat中實(shí)現(xiàn)Session小結(jié)

    Tomcat中實(shí)現(xiàn)Session小結(jié)

    本篇文章主要介紹了Tomcat中實(shí)現(xiàn)Session小結(jié) ,Session的主要目的就是為了彌補(bǔ)Http的無(wú)狀態(tài)特性。簡(jiǎn)單的說(shuō),就是服務(wù)器可以利用session存儲(chǔ)客戶端在同一個(gè)會(huì)話期間的一些操作記錄。
    2017-01-01

最新評(píng)論