반응형

 

내가 aws 서버에 배포할 프로젝트는 총 2개이다

프론트 react+next.js
백엔드 springboot java

 

jenkins 설치에 앞서, 실제로 jenkins가 설치되고 실행시키기 위한 react 와 jdk를 설치해야한다

 

1. react 설치

아래 커맨드로 react 를 설치한다

설치하기에 앞서 업데이트 및 업그레이드를 해주는게 좋다

apt update ?
패키지 목록을 최신 상태로 업데이트
apt upgrade ?
시스템에 설치된 모든 패키지를 최신 버전으로 업그레이드
$ sudo apt update
$ sudo apt upgrade

 

현재는 npm이 없는 상태라서, npm을 install 받아준다

npm ?
Node.js환경에서 사용되는 패키지를 관리하고 설치하는 도구
간단히 말하면, 프론트에서 사용되는 다양한 소프트웨어를 다운받으려면 npm이 꼭 있어야 한다
$ sudo apt install npm

 

무사히 npm install 이 완료되었다면 react 를 설치한다

$ npm install -g create-react-app

 

만약 권한문제로 설치가 안된다면 아래 커맨드 입력 후 진행한다

$ sudo su
$ npm install -g create-react-app

 

install이 완료되었다면 아래 커맨드로 잘 설치되었는지 확인한다

$ create-react-app --version

 

버전명이 나온다면 설치완료된것!

 

2. JDK 설치

내가 설치하고 싶은 jdk 버전으로 설치한다

나는 jdk 17을 설치하였다

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install openjdk-17-jdk

 

3. AWS 인바운드 규칙 수정

본격적인 jenkins 설치에 앞서 AWS 인바운드 규칙수정을 해줘야한다

 

추후 해당 jenkins 에 접근하려면 http://ip주소~~/포트번호 이렇게 접근을 해야하기때문에, jenkins 용도로 사용할 포트번호를 정하고 AWS에서 접근권한을 줘야하기 때문이다

 

AWS 웹페이지 -> 콘솔 -> EC2 -> 보안그룹 -> 인스턴스명 선택 -> 인바운드 규칙 편집

나는 8081 이라는 포트를 사용하였다.

 

본인이 원하는 포트번호를 정하고 나중에 포트번호를 까먹을 수 있기 때문에 메모란에 jenkins 라고 적어주자.

 

4. Jenkins 설치

AWS에서 제공해주는 Jenkins 설치기능을 사용하여도 되지만... 유료다!

나는 철저한 무과금을 위하여 직접 jenkins를 설치하였다


설치하는 과정에서 jenkins 의 ssh key 변경 등의 이슈가 있었고, 아래 과정이 나중에는 안먹힐수도있지만 현재까지는 잘 작동되는것을 확인하였다

 

1) 서버접속

윈도우/맥 OS 에서 기존에 만들어둔 서버에 접속한다

2) Jenkins 설치

아래 커맨드를 순서대로 실행한다

$ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
$ echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list

 

그리고 아래 커맨드로 젠킨스를 실제로 다운로드 받는데

$ sudo apt install jenkins

 

오류가 발생했다

ubuntu@ip-172......:~$ sudo apt-get install jenkins
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package jenkins is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'jenkins' has no installation candidate

 

이런 오류가 발생되었다면,

https://pkg.jenkins.io/debian-stable/ jenkins 가이드를 참고하여 커맨드를 새로 입력한다

보통 커맨드랑 다르게 엔터가 들어가있을건데 그냥 그대로 복사해서 입력하면된다

 

$ curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
    /usr/share/keyrings/jenkins-keyring.asc > /dev/null
$ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
    https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
    /etc/apt/sources.list.d/jenkins.list > /dev/null

 

무슨 key가 변경된거같은데 이렇게 입력해도 아무 반응이 없을것이다

긴가민가하지만, 다시 install을 시작해보자

$ sudo apt update
$ sudo apt install jenkins

 

잘 될것임!! 안되면 구글링 각 ㅠㅠ

설치 중 아래와 같은 문구가 나온다면 N 을 해주자

 

Configuration file '/etc/gnome/defaults.list'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** defaults.list (Y/I/N/O/D/Z) [default=N] ?

 

설치가 잘 됐는지 확인하기위해 아래 커맨드로 jenkins 상태를 확인한다

$ sudo systemctl start jenkins
$ sudo systemctl status jenkins

 

하지만 상태를 보면 마지막에 httpPort = 8080으로 되어있을것이다


이것을 AWS에서 보안규칙변경한 8081로 바꿔보자

3) jenkins 포트변경

jenkins 포트변경 하려면 jenkins.service 파일을 수정해야하는데 해당 파일은 readOnly라서 수정 권한이 필요하다

권한 부여 후 수정해보자

 

chmod 777 ?
모든 사용자에게 읽기, 쓰기, 실행 권한을 부여
$ sudo chmod 777 /usr/lib/systemd/system/jenkins.service
$ sudo vim /usr/lib/systemd/system/jenkins.service

 

Environment jenkins port 설정을 추가하고 저장해준다

해당파일을 다시 readOnly로 만들어주기 위해서 권한을 변경한다

 

chmod 444 ?
모든 사용자에게 읽기만 가능한 권한을 부여
$ sudo chmod 444 /usr/lib/systemd/system/jenkins.service

 

해당 변경사항을 정상적으로 사용하기위해서 jenkins 를 재시작 해야한다

 

deamon-reload ?
새로운 또는 변경된 서비스 파일을 다시 읽도록 명령
$ sudo systemctl daemon-reload
$ sudo service jenkins restart
$ sudo systemctl status jenkins

 

jenkins의 status 를 살펴보면 정상적으로 activate 되었으며 httpPort = 8081 로 확인된다

하단에 Password 관련 안내문구가 있는데 암호화된것같은 저 문장이 jenkins 초기 password 이다

해당 password text를 복사해둔다

 

5. Jenkins 접속

이제 브라우저에서 Jenkins 에 접속해보자

http://ip주소:젠킨스포트번호

 

처음 접속하면 아래와 같은 화면이 보일것이다

서버에서 제공받았던 password를 입력해서 접속하자

 

혹시 password를 모른다면 아래 커맨드로 password를 확인할 수 있다

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 

1) 초기설정

Install suggested plugins 선택한다

select 는 커스텀같아서.. 무리!

2) 계정생성

앞으로 jenkins 로그인 시 사용할 계정을 생성한다

 

3) IP 설정

AWS IP 주소 + 포트번호를 적어주면 된다

 

혹시!! aws 인스턴스 ip가 탄력적 ip 설정이 되어있지 않으면 인스턴스 올렸다 내릴때마다 ip주소가 바뀌는데

 

추후 Jenkins에 설정된 ip주소를 바꿔야한다면 브라우저에서 아래와 같은 경로로 진입해서 바꾸면된다

Jenkins 접속 > Dashboard > Jenkins 관리 > System > Jenkins URL 변경

 

이렇게 Jenkins 설치 및 계정생성이 완료되었다

 

다음 과정으로는 github 계정연결, ssh 설정, 빌드후조치, item 생성, 메모리 swap을 해야하는데

포스팅이 너무 길어져서.. 다음 포스팅에서 다뤄야겠다 :)

 

 

728x90

+ Recent posts