ubuntu linux 18.04에 spring 프로젝트를 jenkins로 배포 관리해보려고 한다.



1. jdk 설치


1
2
3
4
5
6
7
$ sudo apt-get update
 
$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get install openjdk-8-jre
 
$ java -version
$ javac -version
cs



2. 톰캣 설치


1
2
3
4
5
6
7
8
9
10
11
12
-- download tomcat tar file
$ wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.53/bin/apache-tomcat-8.5.53.tar.gz

-- unzipped tomcat tar file
$ tar xvf apache-tomcat-8.5.53.tar.gz
 
-- make custom folder
$ cd /home/ubuntu
$ mkdir myJenkins
 
-- move tomcat folder to custom folder  
$ mv apache-tomcat-8.5.53 /home/ubuntu/myJenkins
cs


[톰캣 시작과 로그 확인하기]


1
/home/ubuntu/myJenkins/apache-tomcat-8.5.53/bin/startup.sh;
cs


[톰캣 기본 페이지 접속 확인]


1
http://IP:8080/
cs



3. git 설치


1
2
3
4
5
$ sudo apt update
 
$ sudo apt install git
 
$ git --version
cs


[git 경로]


1
2
3
which git .
 
/usr/bin/git
cs



4. 젠킨스 설치(톰캣 경로 webapps 아래로 넣어 설치)


1
2
3
$ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
 
$ cp -rv jenkins.war /home/ubuntu/myJenkins/apache-tomcat-8.5.53/webapps
cs


[톰캣 재시작]


1
2
3
/home/ubuntu/myJenkins/apache-tomcat-8.5.53/bin/shutdown.sh; 
 
/home/ubuntu/myJenkins/apache-tomcat-8.5.53/bin/startup.sh; 
cs



[젠킨스 페이지 확인]


1
http://IP:8080/jenkins
cs



젠킨스 초기화면이 나온다면 성공



[젠킨스 초기비밀번호 확인]


1
cat /root/.jenkins/secrets/initialAdminPassword
cs



초기비밀번호로 나온 값을 넣어주고 기본으로 설치하여 진행해준다.



5. 메이븐 설치


1
2
3
4
5
$ sudo apt update
 
$ sudo apt install maven
 
$ mvn -version
cs

 


6. 젠킨스 내부셋팅


메이븐까지 설치완료되었다면 젠킨스 내부설정을 해주자.


- 플러그인 설치

Jenkins관리 > 플러그인 관리 > git, maven integration, Deploy to container plugin 설치한다.






다음으로 Jenkins 관리  > Global Tool Configuration으로 들어가


jdk, git, maven 경로를 전역으로 잡아준다.


해당 경로는 아래와 같다.


1
2
3
4
5
[jdk 경로] /usr/lib/jvm/java-8-openjdk-amd64
 
[git 경로] /usr/bin/git
 
[메이븐 경로] /usr/share/maven
cs








7. 톰캣 내부 셋팅


젠킨스 내부설정까지 완료되었다면

설치된 톰캣의 내부 설정을 해주자.


1
2
3
4
5
[톰캣 context.xml]
 
Context 태그 안에 추가
 
<Resources cachingAllowed="true" cacheMaxSize="100000" />
cs


1
2
3
4
5
6
7
[톰캣 tomcat-users.xml]
 
tomcat-users 태그 안에 아래 유저정보 추가
 
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="0000" roles="manager-gui, manager-script"/>
cs


1
2
3
4
5
6
7
8
[톰캣 webapps/manager/META-INF/context.xml 수정]
 
$ vi /home/ubuntu/myJenkins/apache-tomcat-8.5.53/webapps/manager/META-INF/context.xml
 
Context 태그 안의 주석처리하기
<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" /> -->
</Context>
cs




8. 프로젝트 만들고 빌드하기






Build Now를 클릭하고 Console Output으로 결과를 확인한다.




빌드가 성공되고 Deploy 된것을 확인할 수 있다.


http://ip주소:8080/SpringProject/





#. 기타 


사실 셋팅하기전 윈도우환경에서 미리 젠킨스를 구성해서 빌드 배포 해보았는데 잘되어서

리눅스에서도 별 문제없이 구동될거라고 생각했다.


본인은 AWS EC2 중 가장 낮은 t2.nano로 서버를 구동했는데 

java, maven, jenkins 모두 올려보았으나 메모리가 부족하여 

서버속도가 너무 느렸고 java heap size 부족하다는 오류, maven 컴파일 오류 등

많은 오류를 접했다. 

로컬 서버환경과 ec2 서버환경을 고려하지 못했던 것이었다...


일단 돈이 없는 나에게 가장 낮은 t2.nano서버 유형으로 ci deploy하길 원했고   

여러설정을 변경해서 올리기는 성공했다. 


하지만 젠킨스로 빌드속도가 평균 1~2분 걸리는 것이 10분이 넘게 걸리고

동시에 두개의 프로젝트를 운용하기 어렵다는 것을 확인해 

t2.micro로 서버를 교체했다. 


아래는 t2.nano로 서버를 구동시킬때 설정해줬던 구성이다.


1
2
3
4
5
[java heap size 늘리기]
 
$ sudo vi ~/.bashrc
 
$ alias java='java -Xmx512m'
cs


1
2
3
4
5
6
7
8
9
[maven size 늘리기]
 
set MAVEN_OPTS="-Xmx512m"
 
$ sudo vi ./bash_profile
 
export MAVEN_OPTS="-Xmx512m"
 
$ . ./bash_profile
cs


1
2
3
[디버깅을 위해 톰캣 시작과 동시에 로그 확인하기]
 
/home/ubuntu/myJenkins/apache-tomcat-8.5.53/bin/startup.sh; tail -/home/ubuntu/myJenkins/apache-tomcat-8.5.53/logs/catalina.out
cs




  1. 심플블루 2020.07.17 21:48 신고

    경로를 / 이렇게 하려면 어떻게 해야 하나요?

    • effortDev 2020.07.19 15:57 신고

      어떤 경로 말씀하시는건가요? 리눅스나 젠킨스 설정에서 path를 잡는 문자는 "/" 로 넣으셔도 됩니다.

  2. 심플블루 2020.07.19 16:01 신고

    그렇게하면 https://ip 이렇게 접속할 수 있나요?
    현재는 제가 젠킨스 설정에 /test 이렇게 넣었더니 ip/test 이렇게 이 페이지만 접속이 되거든요

    • effortDev 2020.07.19 16:43 신고

      일단 jenkins가 톰캣 하위에 설치되어있는지 확인해 봐야합니다. 만약 그렇게 설치되었다면
      http://ip:port/jenkins
      로 접속 가능합니다.

  3. jenkins성공하고싶다.. 2021.09.02 01:59

    안녕하세요 질문이 있습니다..

    수동으로 war를 배포 할 때 server.xml에 <Context path="/" docBase="intern_war" reloadable="true" /> 구문을 넣어주는데

    jenkins로 배포할 때는 이 구문을 빼줘야 하나요???

  4. jenkins성공하고싶다.. 2021.09.02 02:04

    바로 위 질문 작성자인데요

    만약 <Context path="/" docBase="intern_war" reloadable="true" /> 이 부분을 넣고 jenkins 배포를 진행하면

    Context [&#47;] is defined in server.xml and may not be undeployed 이런 오류가 나옵니다.

    구글링 해보니 server.xml에 <Context path="/" docBase="intern_war" reloadable="true" /> 이게 있어서 그렇다 그래서 주석으로 해놓고

    돌리면 오류가 나느데 catalina.out로 로그를 보니 applicaion-stg.properties를 읽지를 못하는 것 같습니다. properties에서 값을 가져와서

    코드를 작성한 부분이 있는데 로그를 보면 그 값을 못읽어서 발생하는 오류입니다.. 어느 부분이 잘못된지 감이 안옵니다.. 도와주실 수 있나요??

+ Recent posts