반응형

 

내가 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
반응형

 

시작하며

 

개인적으로 진행한 프로젝트이므로 틀린 정보가 있을 수 있습니다
언제든지 댓글 달아주세요 :)


1. AWS 프리티어 계정 생성

사이트 URL : https://aws.amazon.com

AWS 프리티어 계정 생성을 위하여 사이트에 방문하고 가입합니다

 

AWS 프리티어 계정이란?
아마존 웹 서비스에서 지원하는 무료로 서버를 사용할 수 있는 권한입니다

 

인스턴스란?
서버 라고 생각하면 됩니다

 

EC2 인스턴스란?
AWS 에서 사용하는 인스턴스를 EC2 인스턴스라고 합니다

 

2. EC2 인스턴스 생성

콘솔 홈 화면 하단의 위젯 ->가상머신 시작 클릭

1) 인스턴스 설정

 

 

이름 : 프로젝트명 입력
Quick Start : Ubuntu - Ubuntu Server 22.04 LTS(HVM) SSD Volume Type

프리티어 사용 가능이라고 적혀진 옵션을 선택

 

인스턴스 유형 : t2.micro
키페어 : 새 키페어 생성 (키페어 있을경우 콤보박스에서 기존 키페어 쓰거나 새로 생성)

키페어란 ?
putty, fileZilla 등으로 서버접속이 가능한 .ppk .pem 파일
키페어 이름은 단순 ppk/pem 파일명이므로 큰 의미를 갖지않으니 적당히 정하기

 

네트워크 설정 : 보안그룹생성 - ssh 트래픽허용 (기존 보안그룹이 있다면 콤보박스에서 선택)

 

스토리지 구성 : 20g (20g가 프리미어 최대 제공 스토리지)
IAM 생성 : 필요에 따라 생성

 

IAM 이란 ?
관리자 접근권한을 관리하는 서비스이며 다수의 관리자가 모든 데이터에 접근하면 위험하므로, 관리자 접근 및 행동을 제어하기위한 설정

 

탄력적 IP 생성 : 유료서비스. 한달에 1000원이내. 인스턴스에 특정 IP를 고정해서 사용할 수 있다.

유료서비스이므로 나는 하지않았지만, 발급방법은 아래와같다

 

2) 탄력적 IP 생성

  1. IP 주소 할당

 

   2. IP 주소 생성완료

   

   3. 인스턴스 - IP 연결

3. 서버 접속

만들어두었던 EC2 서버에 접속한다

 

만약 아래의 방법으로 접속이 안된다면, aws 설정으로 22번 포트가 안뚫려있을수도있다


AWS 웹페이지 -> 콘솔 -> EC2 -> 보안그룹 -> 인스턴스명 선택 -> 인바운드 규칙 편집
여기서 22번 포트를 추가해보자

1) window 접속방법

  • 접속 툴 : putty
  • 접속 키 : ppk
    AWS에서 발급받은 키페어파일이 pem 파일이라면, ppk 파일로 변환해야한다
    ppk 파일변환하려면 puttygen 실행 -> key 변환해준다
  1. ppk 파일연결
    putty -> Connection -> SSH -> Auth -> Credentials -> private key file for auentication 여기에 ppk 파일 첨부

      save 버튼은 따로없다 바로 session 탭으로 이동한다

 

    2. 서버접속
      aws콘솔 인스턴스에서 확인되는 퍼블릭 IPv4 주소 를 Host Name 에 넣고 open 하면 아래와 같이 접속된다
      login as : 라고 나올텐데 당황하지않고 ubuntu 라고 입력해주자

2. mac 접속방법

  • 접속 툴 : terminal
  • 접속 키 : pem
    AWS에서 발급받은 키페어파일이 ppk 파일이라면, pem 파일로 변환해야한다
  1. ppk to pem
    mac에서 변환하려면 아래 커맨드로 putty 를 설치하고
$ brew install putty


        아래 커맨드로 변환한다

$ puttygen [원본.ppk] -O private-openssh -o [사본.pem]

 

    2. 서버접속
        pem 파일이 있는 위치에서 terminal 실행한다
        AWS 웹페이지 -> 인스턴스명 우클릭 -> 연결 -> SSH클라이언트 탭 클릭하여 예) 부분에 나와있는 명령어를 그대로 입력한다

4. 서버 time zone 세팅

새로발급받은 서버는 보통 US 미국기준으로 타임존 세팅이 되어있다.
아래 커맨드로 타임존을 확인한다

$ sudo date

 

타임존이 우리나라가 아니며, 우리나라로 세팅을 해야한다면 아래와 같은 커맨드를 입력한다

 

$ sudo timedatectl set-timezone 'Asia/Seoul'

 

타임존을 다시 조회해본다면 서울로 바뀌어있을것이다

 

서버세팅 완료~

 

728x90

+ Recent posts