이후 캡쳐와 함께 프로젝트 배포를 실습하는 과정을 다시 상세히 포스팅할 예정이지만
우선은 전체적인 흐름을 이해하기 위해 모든 흐름을 텍스트로만 기술해보았다.

나의 경우, 인터넷에 검색해 여러개로 나뉜 글들을 무작정 따라서 작업하다보니
내가 이 과정을 ‘왜’하고 있는지 이해가 잘 가지 않는 경우가 간혹 있었어서 일단 모든 흐름을 한번 흝고 넘어가고자 쓴 것이니
화면과 함께 따라하고자 한다면 이 글은 넘어가도 좋다.

주의점 : jdk와 톰캣의 버전 꼭 확인할것!
나의 경우 jdk17 작업한 프로젝트라 톰캣10으로 기본 셋팅을 해두었는데
젠킨스 작업을 하다보니 톰캣10을 선택할수없어 서버 톰캣을 무작정 9로 다운그레이드 함
그랬더니 jdk와 톰캣의 버전이 맞지않아 정상 실행이 되지않았고
미처 그 부분을 생각하지 못해 시간을 허비함..
당연히 알고있는것도 꼭꼭꼭 두번 세번 더 확인하기

AWS에 WAR파일 수동 배포하기

  1. aws에 EC2를 생성한다
  2. Terminus에 ec2 퍼블릭 주소와 ssh키를 가지고 접속
  3. 서버에 jdk 및 톰캣 설치
  4. sudo 톰캣경로/bin/startup.sh 으로 실행해보고, 기본 8080포트 잘 접근되는지 확인
  5. 패키징한 war파일 /home/ec2-user에 넣기
  6. war파일 톰캣 webapp로 이동시키기 (권한을 풀어서 직접 weppapp에 넣어줘도 되겠지만, 정석적으로 진행함)
  7. 톰캣 다시 구동시키면 8080/프로젝트이름/(index명 있으면 index까지) 에서 프로젝트 실행됨 + aws에 8080 포트 인바운드 열어두어야함
  8. 톰캣경로/conf/ 폴더에 있는 server.xml 파일 편집 (vi server.xml)
  9. 8080뒤에 프로젝트명 붙이지 않아도 되도록 수정 ( 문서 맨밑으로 가서 안쪽에 추가 )
  10. 톰캣 재실행해서 잘되는지 확인하고
  11. 터미널에 iptables -A PREROUTING -t nat -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 8080 입력해서 포트 안쳐도 8080으로 리다이렉트 되게 변경 + aws에서 80포트 열어주기
  12. 이렇게 하면 ‘http://ip주소’ 에서 수동으로 올린 war파일이 서버에서 잘 돌아감

젠킨스 설치

  1. aws에 젠킨스용 ec2를 하나 더 판다
  2. 젠킨스 설치
    2-1. wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-
    stable/jenkins.repo

    2-2. rpm –import https://jenkins-ci.org/redhat/jenkins-ci.org.key
    2-3. yum install jenkins
  3. vi /etc/sysconfig/jenkins 를 통해 젠킨스 서버를 바꾸어 준다 (기본이 8080이라 충돌을 방지하기 위해)
  4. /etc/init.d/jenkins start 로 서버에서 젠킨스를 실행시킴
  5. http://ip:변경한포트번호/ 로 접속 (+aws에서 포트 인바운드 시켜줘야함)
  6. 브라우저에서 unlock jenkins라는 창이 뜨면서 비밀번호 입력창과, 임시비밀번호가 써있는 경로를 알려줌
  7. 브라우저에 뜬 경로를 복사해 젠킨스 서버에서 편집기로 켜면 비밀번호 나옴 ( vi /var/lib/jenkins/secrets/initialAdminPassword)
  8. 비밀번호를 복사해서 브라우저에 입력
  9. 젠킨스에 진입함. 브라우저 창에서 진행되는 초기설치 기다리기
  10. 회원가입하고 계정 잘 기록해놓기(…….까먹어서 삽질함….잘 기록해놓기… 잊어버려도 방법이있긴한데..굳이..)

참고 사이트 : https://ship-jh.tistory.com/20

젠킨스에 git 연동하기

  1. 깃허브가서 jenkins용 토큰 발급받기 (일반 토큰하고 똑같음. repo하고 admin:repo_hook 체크해서 발행)
  2. 토큰 복사해서 jenkins 관리 - 시스템설정 들어감
  3. Jenkins Location 챕터 - jenkins URL에 http://젠킨스서버ip:포트/ 입력
  4. GitHub 챕터 - Credentials 추가 - Kind는 Secret Key 선택, Secret에 위에서 복사한 토큰 입력, ID는 github ID입력
  5. 연결 테스트해보고 잘되면 저장
  6. Jenkins관리 - 플러그인 다운로드(버전마다 깔려있을수도 없을수도있음. 없으면 받으면 됨)
    • Deploy to container
    • git plugin
    • github plugin
    • github integration(나중에 웹훅 설정해줄때 필요한건데 설치하는김에 지금 함)
  7. Jenkins관리 - Global Tool Configuration로 이동
  8. 빌드 방식에 맞게 ADD
    • 이번엔 메이븐 프로젝트라 Maven 챕터로 가서 Install automatically 선택 3.6.3으로 저장함
  9. 환경설정으로 다시 나가서 새로운 Item 클릭
  10. 프로젝트 이름 써주고 Freestyle project로 만들기
  11. GitHub Project 항목 체크 - Project url에 리파지토리url(토큰포함) 입력
  12. 소스코드관리 탭 - Git 체크 - 리파지토리 url에 똑같이 리파지토리url(토큰포함) 입력 / Credentials는 건너뛰어도 됨 / Branch는 */master가 보통 맞긴하나 혹시 모르니까 깃가서 main인지만 확인
  13. Build Steps 탭 - Invoke top-level Maven targets 선택 - Maven Version에 위에서 만들어둔 maven설정 선택
    13-1 Goals에 ‘clean install’ 입력
    13-2 고급 선택 - POM에 ‘pom.xml’ 입력 (프로젝트에 따라서 경로 수정해야할수도있음. 빌드시 에러뜨면 그때 수정해주면됨)
  14. 톰캣 서버(프로젝트 서버)에서 ‘vi 톰캣경로/conf/tomacat-users.xml’
  15. 아래 소스범위 안에 위 코드 입력하고 wq. 아이디랑 비밀번호 기억해두기
    • jenkins에서 톰캣에 접근해서 빌드,배포하기 위한 목적
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<user username="아이디" password="비밀번호" roles="manager-gui,manager-script,manager-status"/>
  1. 빌드후조치 탭 Deploy war/ear to a container 선택
  2. WAR/EAR files에 */.war’ 입력 / Context path에 ‘/’ 입력 / Containers에 ec2와 동일한 버전의 톰캣 선택)
  3. ‘톰캣경로/webapps/manager/META_INF/context.xml’ 수정
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1|13.125.73.152" />


주석처리 (코드가 살아있으면 외부에서 접근을 막아서 빌드 후 처리가 안된다는 오류 뜸)

  1. 톰캣 conf/ 폴더에 있는 server.xml 파일 편집 (vi server.xml)
  2. 위에서 설정한 <Context path="/" docBase="프로젝트명" reloadable="true" /> 지우기
    • 아까는 경로 설정용으로 추가한거고, 젠킨스 빌드시 자동 지정되기때문에 지워줘야함. 안그러면 이중설정되어서 에러 뜸
  3. 까지 하고 빌드 날리면 서버에 전달되고, git push 될때마다 수동으로 빌드날리면 적용 됨

젠킨스에 git 웹훅 연결해서 자동배포하기

  1. 젠킨스 서버에서 ssh 키 받아오기
    • mkdir /var/lib/jenkins/.ssh -> ssh-keygen 순으로 입력해서 키 생성(아이디비번 설정하라고 뜨는건 그냥 엔터눌러도 됨
  2. ssh 폴더로 이동해서 세이브 파일 열기 (vim id_rsa.pub 또는 생성시 터미널에 뜨는 saved 경로로 이동)
  3. 키 전체 복사하기. ssh로 시작하는 단어부터 끝까지 전부 다
  4. git 레파지토리로 가서 setting 메뉴 - Deploy key 메뉴 들어가기 - Add New - 이름 알아서 지정해주고 key에 위에서 발행받은 키 붙여넣기
  5. Webhooks 메뉴에서 Payload URL에 http://ip:포트/github-webhook/ 입력.
    • 마지막 / 지우면 에러남. /까지 써야함
  6. 젠킨스 프로젝트설정 들어가서 빌드유발 탭 - GitHub hook trigger for GITScm polling 선택
  7. 이제 git에서 푸쉬할때마다 자동으로 빌드됨

Updated: