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에서 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>
<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>
Server.xml에 Context를 추가하면 http://localhost/를 요청할 경우 http://localhost:/jenkins_maven이 요청된다.
따라서 war파일의 이름을 주소창에 넣지 않아도 자동으로 요청된다.
'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 |