CentOS7) jenkins + maven + svn + tomcat 환경 구성 war 배포

북마크 추가

안녕하세요

jenkins maven svn tomcat 을 연동한 war 배포 환경 구성 방법입니다.

CentOS7 기준으로 작성 되었습니다.


1. java jdk 설치

*jre가 아닌 jdk가 필요합니다.


1-1. 설치가능 jdk 확인

yum list java*jdk-devel


[root@Trandent5 ~]# yum list java*jdk-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: ftp.jaist.ac.jp
Installed Packages
java-1.8.0-openjdk-devel.x86_64                                    1:1.8.0.222.b10-0.el7_6                                      @updates
Available Packages
java-1.6.0-openjdk-devel.x86_64                                    1:1.6.0.41-1.13.13.1.el7_3                                   base    
java-1.7.0-openjdk-devel.x86_64                                    1:1.7.0.231-2.6.19.1.el7_6                                   updates 
java-1.8.0-openjdk-devel.i686                                      1:1.8.0.222.b10-0.el7_6                                      updates 
java-11-openjdk-devel.i686                                         1:11.0.4.11-0.el7_6                                          updates 
java-11-openjdk-devel.x86_64                                       1:11.0.4.11-0.el7_6                                          updates 
java-latest-openjdk-devel.x86_64                                   1:14.0.2.12-1.rolling.el7                                    epel  

1-2. jdk 1.8 설치
yum install -y java-1.8.0-openjdk-devel.x86_64


2. maven 설치


2-1. maven 3.6.3 다운

wget http://mirror.apache-kr.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz


2-2  압축해제

tar -xvf apache-maven-3.6.3-bin.tar.gz


2-3  이동

mv  apache-maven-3.6.3 /usr/local/maven


2-4  환경변수 설정

1. bash_profile 열기
# vi ~/.bash_profile

2.  아래 내용 입력 및 저장
export MAVEN_HOME=/usr/local/maven
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin
export PATH

3. 적용
# source ~/.bash_profile


3. Tomcat 설정

Jenkins와 톰캣 연동 배포시 tomcat manager를 사용하여 배포 됩니다.


3-1. 톰캣 매니저 아이디, 권한 추가

톰캣의 manager-script 권한을 통해 배포 하므로 필수로 넣어주고 나머지는 필요하신 권한을 넣으시면 됩니다.

vi 톰캣설치경로/conf/tomcat-users.xml


tomcat-user.xml

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="아이디" password="비밀번호" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>



3-2 외부연결 허용 (optional)

*jenkins 서버와 톰캣 서버가 다른 경우  외부연결을 허용해 줍니다.

vi  톰캣경로/webapps/manager/META-INF/context.xml


기본 로컬로 되어있는 부분을 전체허용 합니다. 특정아이피만 허용도 가능합니다.

//기본설정
<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>

//127 ~ 부분 수정  .* 전체허용
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow=".*" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>


3-3. war파일 용량제한 변경 (optional)

* 톰캣 manager는 기본적으로 war 파일 용량이 50mb로 제한 되어 있습니다.

빌드후 배포시 war파일의 크기가 50 mb를 넘는경우 에러가 발생하니 필요한 경우 늘려줍니다.

vi  톰캣경로/webapps/manager/WEB-INF/web.xml


web.xml

<multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>

필요한 만큼 늘려 줍니다.


4. jenkins 연동

4-1. 로그인 합니다.


4-2. Jenkins 관리 - Global Tool Configuration




4-3. JDK 경로설정 

맨 처음 설치한 JDK 경로를 설치 합니다.

* Install automatically 체크해제

이름은 아무거나 넣어주고 설치 경로를 넣어줍니다.

잘못입력하는 경우 경고 문구가 표시됩니다.


4-4. Maven 경로 설정

아래로 내려보면 maven 항목이 있습니다.

위에서 설치한 maven 경로를 잡아줍니다.

* Install automatically 체크해제



4-5. 경로설정이 끝났으면 저장 및 적용 합니다.



5. Jenkins SVN Plugin 설치

5-1. Jenkins 관리 - 플러그인 관리





5-2.  설치가능 - Deploy to container Plugin  검색 후 설치


저는 이미 설치되어 있어서 나오지 않으나 검색후 설치합니다.

재시작을 하면 플러그인이 설치됩니다.


SVN 플러그인도 깔려있지 않다면 깔아줍니다.




6. JOB 생성

6-1. Dashboard - 새로운Item(왼쪽 상단)  - 이름입력 - Freestyle project 선택



6-2.  소스코드관리 -  Subversion 선택

최초 등록시 SVN 계정정보가 없으므로 Add버튼 눌러줍니다.



6-3. SVN 계정정보 입력 

입력을 하면 Credentals에 입력한 계정 정보가 나타 납니다. 선택


6-4. Build 설정

Maven version은 아까 maven을 등록했으면 등록한 이름으로 나타납니다. 선택

Goals는 clean install로 하겠습니다. 입력



6-5.  빌드 후 조치

빌드가 끝나고 톰캣과 연동하여 war를 배포하는 부분입니다.

3. 에서 설정한 톰캣과 연동합니다.


6-6. Add를 눌러서 톰캣  매니저 사용을 위해 추가한 아이디 비밀번호를 입력합니다.



6-7. WAR/EAR files에는 **/*.war를 입력해 주고 Context path는 /를 넣어줍니다.

* Tomcat URL은 톰캣이 떠있는 서버의  URL을 입력해 주면 됩니다.  /manager 경로는 자동으로 붙기 때문에 입력해 줄 필요가 없고  경로를 바꿔서 사용중인 경우에는 고급 버튼을 누르면 명시적으로 설정 가능합니다.

* 여기서 설정한 Context Path를 사용하기 때문에 톰캣의 server.xml의 <Context docBase ~~~~></Context>는 지워줍니다.



7. (번외) Spring maven project ROOT 배포

위 설정대로 배포하는 경우 pom.xml의 프로젝트명과 버전이 붙은 이름으로 war가 생성됩니다.


pom.xml

ex) 

<name>trandent</name>

<packaging>war</packaging>

<version>5.0</version>

trandent-5.0.war 생성 및 배포

pom.xml 내의 build안에 finalName을 추가해주면 설정한 이름으로 war가 생성됩니다.

<build>

.

.

<finalName>ROOT</finalName>

</build>

ROOT.war 생성 및 배포


8.  발생했던 문제점들

수동배포시는 잘 동작했으나 jenkins를 통한 maven 빌드 배포시 발생했던 문제점 들이 몇가지 있습니다.

8-1. 프로젝트 내  maven을 사용하지 않고 따로 넣은  lib를 못불러옴

-  별도로 넣은 라이브러리를 pom.xml에 등록 

ex) WEB-INF - lib - aaa.jar    를 넣은경우

pom.xml에 dependency 작성

<dependency>

<groupId>aaa</groupId>

<artifactId>aaa</artifactId>

<version>1.0</version>

<scope>system</scope>

<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/aaa.jar</systemPath>

</dependency>


8-2.  context.xml 내 classpath로 설정된 경로에 있는 파일 못 불러옴

- 수동 배포와 자동배포시 어떤 설정 때문인지 원인 파악이 힘든 관계로 로컬과 서버에서 위치 설정 변경하며 둘다 찾는 위치로 수정


AD
관리자
2021-01-10 22:08
SHARE
댓글