티스토리 뷰

프로그래밍/메모

간단한 토이 프로젝트 - 2

시간이nullnull한 가장 2022. 3. 10. 23:36

이전 글

간단한 토이 프로젝트 - 0 (프로젝트 의도)

간단한 토이 프로젝트 - 1 (깃허브,슬랙 연동)

간단한 토이 프로젝트 - 3 (springboot 게시판 생성)

간단한 토이 프로젝트 - 4 (jenkins 자동 배포 설정)

간단한 토이 프로젝트 - 5 (nginx와 톰캣 연동)

목표

  • gcp에 jenkins, nginx, springboot, mysql 인스턴스를 설치한다

 

의도

가장 인지도가 높은 aws로 구성하고 싶었으나 free tier로 한 개의 인스턴스만 생성할 수 있기에 여러 인스턴스를 무료로 이용할 수 있는 gcp를 선택했다.

 

작업

(구글 아이디는 있다고 전제한다.)

1. gcp(google cloud platform) (https://cloud.google.com/gcp)에 접속 후 Console로 이동한다.

2. VM 인스턴스 메뉴로 이동한다.

 

3. 활성화 작업 후 상단의 인스턴스 만들기를 선택한다.

 

*이름 : 인스턴스별로 구별될 수 있게 생성

*리전 : gcp가 생성될 위치를 선택한다. 인스턴스간에 리전이 다를 경우 속도에 이슈가 있으니 되도록 같은 리전으로 맞춰주자.

*머신 구성 : 성능이 좋아질수록 유지비용이 높아진다. 이번에 만들어볼 프로젝트들은 e2-micro로 충분하다.

** jenkins는 e2-small 이상을 선택해준다. micro로 선택할 경우 build하다가 멈출 수도 있다.

*** 본인은 e2-medium으로 생성했다.

*부팅 디스크 : 본인이 잘 다루거나 연습하고싶은 부팅 디스크를 선택하자. 본인은 CentOS7로 선택했으며 이후 설치 과정도 CentOS7을 기준으로 설명한다.

*방화벽 : HTTP, HTTPS 트래픽을 허용하지 않으면 이후 설정이 번거롭다. 생성시에 꼭 선택해주도록 하자.

이외에 설정은 기본 설정으로 한다.

 

3. Google Cloud SQL로 MySQL 서버를 생성해보자.

1)SQL 메뉴로 이동한다.

2) 인스턴스 만들기를 선택 후 MySQL 선택

* 인스턴스 ID와 비밀번호는 이후 MySQL server 접속에 필요하다. 꼭 메모해두도록 하자.

*본인은 MySQL 버전을 8.0으로 선택했다.

 

*인스턴스의 리전과 동일한 리전을 선택해주자.

이외에 설정은 기본 설정으로 한다.

 

3) 생성된 db 인스턴스의 승인된 네트워크를 수정한다.

 

3-1) db-instance를 선택한다.

2) 좌측 연결탭으로 들어간 다음 네트워크 추가 선택

3-2) 식별할 수 있는 구체적인 이름과 ip를 등록한다. 

본인은 gcp에 등록되있는 api 인스턴스와 로컬 ip를 등록했다. (ex. 192.0.0.1/32)

* gcp ip는 외부 ip를 적는다.

** 내 ip를 모를 경우 네이버에 ip 확인이라고 검색해보자.

 

4. nginx, jenkins를 설치하자.

- nginx 설치

* gcp는 기본적으로 yum이 설치되있다. 이후 작업은 yum으로 각 어플리케이션들을 설치한다.

1)nginx instance에 접속

2) sudo yum install nginx -y 입력

3) nginx -version 입력, 잘 설치됬는지 확인

4) systemctl start nginx 입력 (nginx 실행)

5) systemctl status nginx 입력 (nginx 상태 확인)

*아래 이미지처럼 active(running)이 나오면 정상적으로 실행되고 있는 것으로 판단할 수 있다.

6) nginx instance의 외부 ip로 접속해서 nginx 화면이 나오는지 확인

*protocol이 http인지 확인하자. gcp의 외부ip 바로가기 버튼은 https로 접속하기 때문에 홈페이지가 나오지 않는다.

-jenkins 설치 (jdk, wget, git, jenkins 설치 및 8080포트 오픈)

1) jdk를 설치한다. springboot 버전에 맞추도록 하자.

*sudo yum list java*jdk-devel 명령어 입력, 설치 가능한 목록 확인

본인은 jdk 11 64bit를 설치했다. (sudo yum install java-11-openjdk-devel.x86_64 -y)

 

2) 젠킨스를 설치해오기 위해 wget을 먼저 설치한다.

sudo yum install wget -y

 

3) 젠킨스 의존성을 추가한 뒤 제킨스를 설치한다.

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

sudo yum install jenkins -y

 

4) 젠킨스가 정상적으로 설치되있는지 확인하고 서비스를 시작한다.

sudo systemctl start jenkins

sudo systemctl status jenkins

 

5-1) 젠킨스는 기본적을 8080포트로 오픈되지만 방화벽에 이를 허용하는 규칙이 없다. VM 인스턴스 하단의 방화벽 규칙 설정을 누른다.

5-2) 방화벽 규칙 만들기를 선택한다.

5-3) 아래 이미지를 참고해 규칙을 추가한다. 

 

6) 젠킨스 인스턴스의 http://외부아이피:8080 으로 접속한다.

 

7) 젠킨스 인스턴스의 /var/lib/jenkins/secrets/initialAdminPassword 파일을 읽어 암호를 입력한다.

8) 좌측 기본 설치 선택

이후 어드민 계정은 취향껏 작성한다.