사이먼's 코딩노트

[SpringBoot] 실전 서비스 배포 (2) 본문

Java/SpringBoot

[SpringBoot] 실전 서비스 배포 (2)

simonpark817 2024. 7. 24. 12:03

[실전 서비스 배포]

  • 지난 포스팅에 이어 실전 서비스 배포 방법을 함께 실습해봅시다.
  • 서버 생성과 도메인 기본 설정을 모두 마쳤다면 이번에는 원격접속 터미널 프로그램을 통해 SSH에 접속하여 생성된 서버 안에 필요한 패키지를 설치해야한다.

 

[SSH 클라이언트 설치]

  • SSH는 Secure SHell의 약어로 네트워크 상의 다른 컴퓨터에 로그인하여 명령을 실행하고 정보를 보고 받을 수 있도록 해주는 통신 프로토콜이다.
  • 쉽게 말해서 현재 생성된 우리의 서버는 네이버 클라우드에서 관리하기 때문에 직접 찾아가서 세팅을 하기엔 어려움이 있다. 그렇기 때문에 SSH로 원격 접속을 하여 해당 리눅스 서버에 접근하려고 하는 것이다.
  • 대표적인 SSH 클라이언트가 있는데, 그 중에서도 Putty와 Termius를 추천한다.
  • 포스팅에서는 Putty를 사용해서 작업하는 모습을 보여드릴 예정이다.
  • Putty는 무료지만 디자인면에서 투박한 면이 있다면 Terminus는 부분 유료화지만 기본 콘솔 디자인이 한눈에 알아볼 수 있도록 되어있다는 서로 장단점을 가지고 있다.
  • Putty 다운로드 사이트 : https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
 

Download PuTTY: latest release (0.81)

This page contains download links for the latest released version of PuTTY. Currently this is 0.81, released on 2024-04-15. When new releases come out, this page will update to contain the latest, so this is a good page to bookmark or link to. Alternativel

www.chiark.greenend.org.uk

 

Download Termius for Windows

 

termius.com

 

  • 클라이언트를 설치하고 실행시켜보면 아래 사진과 같이 IP와 Port를 입력하는 부분이 있는데, IP는 서버 생성 시 발급받은 공인 IP 주소를 넣고, 포트번호는 22번을 입력해서 Open하면 된다.
  • Open 버튼을 누르고 터미널 창이 뜨면서 비밀번호를 입력하라고 나오는데, 여기서 말하는 비밀번호는 서버 생성 시 발급받은 pem키를 통해 확인할 수 있다.

Putty를 통한 SSH 접속 방법
원격 접속 성공

 

[패키지 설치]

  • 원격 접속에 성공했다면 이제 스프링부트 프로젝트가 실행될 수 있도록 필요한 패키지들을 설치해야된다.
  • 여기서 말하는 패키지는 Docker, Git, Java 등과 같은 라이브러리라고 생각하면 좋다.
  • 아래와 같이 명령어를 입력하여 설치 전 yum을 통해서 서버 시스템 패키지 update를 해준다.
yum install epel-release -y
yum update -y

 

[Docker 설치]

  • Docker란 Go 언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼이다.
  • 컨테이너는 가상화 기술 중 하나로 대표적으로 Linux Container가 있다. 기존 OS를 가상화 시키던 것과는 다르게 컨테이너는 OS레벨의 가상화로 프로세스를 격리시켜 동작하는 방식으로 이루어진다.
  • 한 마디로 한 서버의 여러 OS를 가상화시켜서 사용한다는 것이다.
  • Docker Image란 컨테이너를 실행할 수 있는 실행파일, 설정 값들을 가지고 있는 것이라고 생각하면 좋다.
  • Docker File은 이미지 생성 출발점으로 이미지를 구성하기 위한 명령어들을 작성하여 이미지를 구성할 수 있다. 다시말해 Docker File을 읽을 수만 있다면 해당 이미지가 어떻게 구성되어 있는지도 알 수 있다는 뜻이다.
  • 아래 순서에 맞게 명령어를 입력하여 Docker를 설치하고 활성화시킨다.
# Uninstall old versions
# 혹시 모르니 기존의 오래된 도커를 삭제하는 명령을 수행
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

# Set up the repository
yum install -y yum-utils

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# Install Docker Engine
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 도커 시작
systemctl start docker

# 도커 활성화
systemctl enable docker

# 도커 작동 테스트
docker run hello-world

 

[MariaDB 설치]

  • 다음은 데이터베이스를 설치해야한다.
  • 아래 순서에 맞게 명령어를 입력하여 MariaDB를 설치하고 접속하여 데이터베이스를 생성한다.
  • 명령어를 작성할 때 컨테이너 실행 부분에서 mariadb_1로 지은 이름은 사용자 임의로 변경가능하고, 비밀번호라고 적혀진 부분은 사용자가 정한 비밀번호를 입력하면 된다.
  • 마지막에 DB를 생성할 때는 프로젝트의 application-prod.yml에서 지정한 DB와 동일한 이름을 작성하여 생성해야한다.
  • 실제 서비스를 배포할 때는 application-dev.yml이 아닌 application-prod.yml이 실행되기 때문에 해당 파일이 없다면 반드시 생성해야한다.
# 컨테이너 실행
docker run \
        --name mariadb_1 \
        -d \
        --restart unless-stopped \
        -e MARIADB_ROOT_PASSWORD=비밀번호 \
        -e TZ=Asia/Seoul \
        -p 3306:3306 \
        -v /docker_projects/mariadb_1/conf.d:/etc/mysql/conf.d \
        -v /docker_projects/mariadb_1/mysql:/var/lib/mysql \
        -v /docker_projects/mariadb_1/run/mysqld:/run/mysqld/ \
mariadb:latest

# MariaDB 접속
docker exec -it mariadb_1 mariadb -u root -p비밀번호

# DB 생성
CREATE DATABASE  데이터베이스_이름;

# MariaDB 종료
exit;

 

[GIT, JAVA17 설치]

  • 다음은 Git과 Java를 설치해야한다. 아래 순서에 맞게 명령어를 입력하여 설치해준다.
  • Java를 설치할 때 버전 확인을 잘 하시고 Linux 64-bit와 Linux ARM64 버전 중 하나만 선택하여 명령어를 실행한다.
# GIT 설치
yum install git -y
# JAVA 설치
yum -y install wget curl

cd /tmp

rm -rf /opt/jdk-17

# jdk 17 다운로드
# Linux 64-bit
wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz
# 이걸 선택하시면 됩니다, 본인의 PC가 M1 인거랑 상관없습니다.

# Linux ARM64
wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-aarch64_bin.tar.gz
# 본인의 PC가 M1 인것과 상관없습니다.
# NCP 에서 CentOS7 을 ARM64 버전으로 설치한 경우에만 이걸로 설치해 주세요.

tar -xvf openjdk-17.0.2_linux-x64_bin.tar.gz

mv jdk-17.0.2/ /opt/jdk-17/

vi ~/.bashrc

# 수정된 프로파일을 시스템에 반영
source ~/.bashrc

 

  • Java 설치 중 마지막줄 위 명령어(vi ~/.bashrc)는 bashrc 파일을 vi 편집기로 수정하는 내용인데, 해당 파일 내용은 아래를 통해 확인 부탁드립니다.
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

export JAVA_HOME=/opt/jdk-17 # 추가해야됨
export PATH=$JAVA_HOME/bin:$PATH # 추가해야됨

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

 

 

반응형