본문 바로가기

devops

Jenkins tomcat설정(maven,war)

728x90

version

tomcat:9.x

java 11

springboot 2.7.18

 

주의할점: springboot 3.x부터는 tomcat10버전 이상을 사용해야하지만 jenkins에서 tomcat9.x까지 밖에 지원을 안해줘서 springboot3.x로 배포할 경우 404 Error가 뜨는것을 확인했습니다.

1.tomcat plugin(Deploy to container)

 

Jenkins에서 Deploy to container를 다운받아줍니다.

 

2.tomcat 설정

2-1.manager context.xml파일 변경

<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <!--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파일의 \webapps\manager\META-INF의 context.xml파일로 들어가 위의 내용을 주석으로 변경해줍니다.

2-2.host-manager context.xml파일 변경

<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <!--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디렉토리의의 \webapps\host-manager\META-INF의 context.xml파일로 들어가 위의 내용을 주석으로 변경해줍니다.

2-3.tomcat-users.xml파일 변경

<?xml version="1.0" encoding="UTF-8"?>
<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"/>
  <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
  <user username="deployer" password="deployer" roles="manager-script"/>
  <user username="tomcat" password="tomcat" roles="manager-gui"/>

</tomcat-users>

tomcat \conf의 tomcat-users.xml파일 하단의 role,user의 주석을 해제하고 위의 내용으로 변경해줍니다.

3.deployer Credentials 추가

 

2에서 만든 tomcat의 deployer권한을 가지는 credentials를 추가해줍니다.

4.빌드 후 조치 추가

Project의 구성메뉴에들어가 빌드 후 조치에서 Deploy war/ear to a container를 추가하고

War/EAR files에는 **/*.war를 Credentials은 3번에서 추가한 Credentials를 추가하고 Tomcat URL은 본인의 Tomcat 환경에 맞게 추가해주고 저장합니다.

 

주의할점:docker에서 Tomcat을 배포하지 않았을 경우 tomcatURL에 localhost:[Port번호]를 입력한다면 docker내부의 localhost로 연결되어 connection_refused error가 발생합니다. 해결방법은 tomcatURL에 [local_IP]:[Port번호]로 입력하여 해결가능합니다.

 

Window Ip 확인

https://blog.naver.com/inv1145/221762217567

 

내 컴퓨터 ip주소 확인하는 방법(윈도우10)

컴퓨터나 노트북을 사용하다보면 공유기를 사용하여 상호 폴더를 공유하거나 프린터 사용시 내 컴퓨터의 ip...

blog.naver.com

Mac Ip 확인

https://cloud101.tistory.com/31

 

Mac 에서 나의 외부, 내부 IP 확인 방법

IT일을 하거나 가끔씩 내가 사용하는 IP를 알아야할 경우가 생깁니다. 이럴 때 Mac에서 어떻게 IP를 확인하는 지 살펴보시죠! 준비물 저는 현재 Ventura 여서 다른 버전을 사용하시는 분은 조금 다를

cloud101.tistory.com

5.deploy 확인

jenkins console output
http://localhost:8088/manager/html
페이지 확인

 

jenkins console output에서 deploy가 성공적으로 되었는지 확인한 후 tomcat에서 manager App에 접속(2번에서 설정한 ID:tomcat PW:tomcat)하여 원하는 페이지가 나오는지 확인합니다. 

6.War파일 원하는 이름으로 설정

<build>
        <finalName>Jenkins_maven</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

 

http://localhost:8088/manager/html

<finalName>[원하는 War이름]<finalName>을 Maven에 추가함으로써 War파일의 이름을 변경할 수 있습니다.

 

7.Tomcat Server.xml 변경(Context 추가)

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        ...

        <Context path="/" docBase="Jenkins_maven" reloadable="true"/>

        ...

      </Host>

localhost:8088

Server.xml에 Context를 추가하면 http://localhost/를 요청할 경우 http://localhost:/jenkins_maven이 요청된다.

따라서 war파일의 이름을 주소창에 넣지 않아도 자동으로 요청된다.

728x90

'devops' 카테고리의 다른 글

Jenkins 빌드 파일 다른 서버에 배포(maven,war)  (0) 2024.03.11
Jenkins Poll SCM설정  (0) 2024.03.11
Jenkins git,maven,war 설정(maven,war)  (0) 2024.03.07
docker 명령어  (0) 2024.03.06
docker에 Jenkins 설치 및 설정하기  (0) 2024.03.05