새로운 팀 프로젝트가 시작된지 이제 일주일이 조금 안됬다. 기획은 어느정도 다 된 것 같고 조만간 작업시작단계가 될 것 같다. 이전 팀 프로젝트에서 내가 백엔드 배포쪽을 맡지는 않았었지만, 수정사항이 있을 때 마다 깃에 푸쉬하고 원격접속하고, 다시 깃 풀로 내려받고 실행시키는 과정이 불편해보여 개선하고 싶었다. 그래서 검색하던 중 CI/CD(Continuous Integration/Continuous Deployment)라는 것을 알게되었고 적용해보게 되었다.
AWS에서 Jenkins와 Node.js를 이용한 서비스 구성 Part1: Jenkins 구성
이 글을 읽고 따라하는 실습과정을 쓰는 글이다.
먼저 EC2설정부터 해준다. 계정만들고 이런 과정은 생략하겠다.
EC2에 접속해 Launch Instance해준다.
최신 버전의 우분투를 사용하는 방향으로 하겠다.
프리티어 등급으로 사용할 거기 때문에 프리티어 선택해주고
Review and Launch가 아닌 Next -> Step3은 디폴트로 놔두고 Next -> Step4도 디폴트 -> Next -> Step5도 디폴트로 두고 Next -> Step6에서 Assign a security group이
Create a new security group인거 확인 && 포트22가 VM에 액세스 할 수 있도록 구성되어 있는지 확인한다. 나는 일단 모두 액세스 할 수 있도록 했다.
-> Review And Launch -> Launch 누르면 원격접속하는데 필요한 키페어 발급하는 페이지가 나온다. 발급받고 .ssh파일에 넣어둔다. 젠킨스용 인스턴스가 만들어졌다.
방금 만들어진 인스턴스에 커넥트한다(SSH키 이용해서). 젠킨스를 사용하기 위해서는 자바가 필요하다. 자바를 설치해 준다. 참조
1. $ sudo apt update //먼저 패키지 인덱스를 업데이트 해준다.
2. $ java -version //혹시 자바가 설치되어있나 확인해본다.
//sudo는 리눅스에서 관리자 권한으로 실행할 때 붙여주는 명령어 이고 apt는 Ubuntu 패키지 관리 툴이다.
/*자바가 설치되어 있지 않다면 다음과 같은 메세지가 나오게 된다.
Command 'java' not found, but can be installed with:
sudo apt install openjdk-11-jre-headless # version 11.0.10+9-0ubuntu1~20.04, or
sudo apt install default-jre # version 2:1.11-72
sudo apt install openjdk-13-jre-headless # version 13.0.4+8-1~20.04
sudo apt install openjdk-14-jre-headless # version 14.0.2+12-1~20.04
sudo apt install openjdk-8-jre-headless # version 8u282-b08-0ubuntu1~20.04
*/
기본 Default JRE(Java Runtime Environment)(JRE from OpenJDK11)를 설치해주기 위해 다음과 같이 입력해준다.
3. $ sudo apt install default-jre
이제 $ java -version을 입력하면
/*
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
*/
이런 메시지가 나오게 된다.
자바기반의 소프트웨어(여기서는 Jenkins)를 컴파일하고 실행하는데는 JDK(Java Development Kit)도 필요하다.JDK도 설치해준다.
/*
JDK가 설치되어 있지 않다면
$ javac - version 커맨드를 입력했을 때
Command 'javac' not found, but can be installed with:
sudo apt install openjdk-11-jdk-headless # version 11.0.10+9-0ubuntu1~20.04, or
sudo apt install default-jdk # version 2:1.11-72
sudo apt install openjdk-13-jdk-headless # version 13.0.4+8-1~20.04
sudo apt install openjdk-14-jdk-headless # version 14.0.2+12-1~20.04
sudo apt install openjdk-8-jdk-headless # version 8u282-b08-0ubuntu1~20.04
sudo apt install ecj # version 3.16.0-1
다음과 같은 메세지가 나온다.
*/
4. $ sudo apt install default-jdk
설치해주고 나면
javac - version 커맨드를 입력했을 때
javac 11.0.10 이런식으로 나오게 된다.
이제 자바가 설치되었다.
젠킨스도 설치해 준다.
1.먼저 레포지터리 키를 등록해준다. 다음 명령어를 입력해준다.
$ cd /tmp && wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
///////////
//wget는 (World Wide Web Get) 웹 서버로 부터 원하는 웹 사이트의 정보를 가져오는 역할
//참조 : http://korean-daeddo.blogspot.com/2016/01/wget.html
//wget -help를 치면 wget에 대한 설명들이 나온다.
/////////////
2.레포지터리를 등록하기 위해 다음 명령어를 입력해준다.
$ echo 'deb https://pkg.jenkins.io/debian-stable binary/' | sudo tee -a /etc/apt/sources.list.d/jenkins.list
//////////////
//linux echo와 tee에 대한 설명
//https://www.lesstif.com/lpt/linux-tee-89556049.html
///////////////
3.Jenkins를 설치하기 위해 다음 명령어들을 차근차근 입력해준다.
$ cd
$ sudo apt update
$ sudo apt install jenkins
Jenkins를 설치한 후, Jenkins를 시작하거나 멈추거나, 서버가 부팅될 때 Jenkins가 항상 시작하도록 하기 위해 아래의 명령을 사용할 수 있다.
$ sudo systemctl stop jenkins.service
$ sudo systemctl start jenkins.service
$ sudo systemctl enable jenkins.service
전부 한번씩 입력해보자. 별 반응은 없다.
젠킨스가 성공적으로 시작 됬는지 보려면 다음명령어를 입력해준다.
sudo systemctl status jenkins
그럼 다음과 같이 나온다.
젠킨스튼 기본적으로 8080포트 위에서 실행된다. 8080포트와 22번 포트의 ssh액세스를 허용하게 만들자.
$ sudo ufw allow 8080
$ sudo ufw allow 22
그리고, 방화벽 상태를 확인해보자.
$ sudo ufw status
위와 같은 메세지를 받는다면(inactive) 방화벽 상태를 가능(active)로 만들어 준다.
커맨드 입력
$ sudo ufw enable
젠킨스 서버가 AWS에 있으므로 보안 그룹에 포트:8080을 노출해야 한다.
EC2콘솔로 가서 왼쪽 내비바에서 시큐리티그룹 선택 -> Create Security Group
여기서 젠킨스 서비스에 액세스하기위한 두개의 인바운드(들어오는)룰을 설정해 줄것이다. 웹브라우져(포트:8080)에서 들어오는 거랑 SSH 명령어를 통해서 들어오는거
위와 같이 입력해준다.
인스턴스로 돌아가 디폴트 시큐리티 그룹을 지우고 새로 만든 시큐리티 그룹을 바꿔준다.
(기존에 있는 시큐리티 그룹을 remove하고, input창을 누르면 security그룹들이 나오는데 방금 만든 Jenkins 시큐리티그룹을 선택해주고, Add Security Group
을 해준다.)
이제 브라우저에서 http://젠킨스인스턴스ip주소:8080으
으로 접속해준다. ip주소는 젠킨스 인스턴스에 들어가 다음 그림에 나오는 걸 입력하면 된다.
그럼 다음과 같은 화면이 나온다.
이제 다시 ssh로 젠킨스 서버에 접속했던 곳으로 가서
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
다음 명령어를 입력해준다. 그러면 비밀번호가 나오는데, 그 비밀번호를 위의 젠킨스 패스워드에 입력해준다.
그럼 설치창이 나오는데, Install suggested plugins를 눌러 설치해주고, 유저 정보를 입력해준다.
다음으로 Instance Configuration에서 기본 생성값을 써도 되고, 지금 Jenkins URL을 설정해주고 싶지 않으면 Not now해줘도 된다. Save and Finish해준다. 그리고 나서 젠킨스를 바로 시작해도 되고, 리스타트해서 들어가도 되는데, 리스타트 하는 것을 추천한다고 한다.
http://JENKINS.SERVER.IP:8080/restart
브라우저에 입력
그럼 젠킨스가 재실행되고 로그인 창이 나온다. 접속하면 된다.
이렇게 하면 성공적으로 젠킨스가 인스톨 되었다!
다음 글에서는 Node.js앱을 만드는 것 부터 시작한다.