인프런 워밍업 클럽 스터디 1기 BE 3주차 발자국

인프런 워밍업 클럽 스터디 1기 BE 3주차 발자국

배포란 무엇인가

배포

최종 사용자에게 SW를 전달하는 과정

현재는 우리 컴퓨터에 Spring, MySql 등이 서버가 설치되어 있다.

우리 컴퓨터가 종료되어도 서버에 접속할 수 있는 방법

전용 컴퓨터에 Spring, MySql 등을 설치하고 작성한 코드를 옮겨서 서버를 실행한다.

이런 과정을 배포라고 한다.

배포 방법

AWS에서 무료로 전용 컴퓨터를 빌릴 수 있다.

배포 준비

profile 설정

똑같은 서버 코드를 실행시키는데

DB와 같은 설정을 실행되는 환경에 따라서 다른 설정으로 실행시키기 위한 설정

우리 컴퓨터에서는 h2 DB

전용 컴퓨터에서는 MySQL

설정을 위해서는 application.yml을 수정해주면 된다.

spring:
  config:
    activate:
      on-profile: local
  datasource:
    url: "jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER"
    username: "sa"
    password: ""
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        dialect: org.hibernate.dialect.H2Dialect
  h2:
    console:
      enabled: true
      path: /h2-console
---
spring:
  config:
    activate:
      on-profile: dev
  datasource:
    url: "jdbc:mysql://localhost/library"
    username: "root"
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        dialect: org.hibernate.dialect.MySQL8Dialect

H2 Database

  • 개발 단계에서 많이 사용하는 경량 Database

  • 디스크가 아닌 메모리에 데이터를 저장할 수 있다.

    • 데이터가 휘발된다.

    • 개발 단계에서는 DB가 자주 변경되기 때문에 편하게 사용

git 이란?

  • 코드를 쉽게 관리할 수 있도록 해주는 버전 관리 프로그램

  • 여러 명이서 개발을 수행할 때 코드를 쉽게 합치고 관리할 수 있다.

GitHub

  • git으로 관리되는 프로젝트의 코드가 저장되는 원격 저장소

GitHub에 저장하는 이유

  1. 내 컴퓨터에 저장한 코드는 소실 될 수 있다.

  2. 배포 과정에서 원격 저장소에서 코드를 쉽게 옮길 수 있다.

git 기초 명령어

**git init :** 프로젝트를 git이 관리하도록 해준다.

**gti remote add origin [repository 주소]** : 원격 저장소와 git 프로젝트를 연결

작성한 코드 원격 저장소에 올리기

**git add .** : 코드를 올리기 위해 추가하는 명령어

git status : 현재 add한 상황 확인 명령어

**git commit -m “메시지”** : add한 코드를 메시지와 함께 묶는 커밋 명령어

**git push** : 커밋한 코드를 원격 저장소로 보내는 명령어

**git push —set-upstream origin master** : 최초로 push 하는 경우 1번 반드시 해줘야 하는 명령어

.gitignore

git을 통해서 관리되기 싫거나 원격 저장소에 올리고 싶지 않은 파일을 관리하기 위한 파일

파일명 또는 파일의 경로를 적어준다.

build/
.gradle/
.idea/

AWS EC2

  • Elastic Compute Cloud

  • 탄력적으로 사용할 수 있는 원격 컴퓨터

    • 언제든지 필요할 때 빌리고 반납할 수 있다.

배포 시작

EC2 접속방법

1. 키 페어를 이용하는 방법

먼저 키페어 파일의 보안을 설정해준다.

chmod 400 경로/키페어명.pem

ec2 접속 명령어

ssh -i 경로/키페어명.pem ec2-user@IP

2. AWS 콘솔을 활용하는 방법

AWS ec2 웹사이트에 접속해서 연결 버튼을 통해 연결한다.

필요한 프로그램 설치하기

  1. 코드를 가져오기 위한 git 설치

  2. 서버를 구동하기 위한 java 설치

  3. 데이터베이스 역할을 하는 MySQL 설치

GitHub에서 코드 가져오기

git clone [레포지토리 주소]

EC2 Swap 설정

무료로 사용하는 EC2인 t2.micro는 메모리가 적어서 성능이 떨어지기 때문에

메모리가 부족할 경우 DISK를 사용하도록 하는 swap 설정이 필요하다.

# swqp 메모리 할당
sudo dd if=/dev/zero of=/swapfile bs=128M count=16

# swqp 파일에 대한 권한 업데이트
sudo chmod 600 /swapfile

# swap 영역 설정
sudo mkswap /swapfile

# swap 파일 사용 설정
sudo swapon /swapfile

# swap 성공 확인
sudo swapon -s

빌드하기

# gradlew를 사용할 수 있도록 쓰기 권한 설정
chmod +x ./gradlew

# 프로젝트 빌드(테스트 없이)
./gradlew build -x test

서버 실행하기

java -jar build/libs/[빌드한 파일명.jar] --spring.profiles.active=dev

보안 그룹 편집하기

보안 그룹에 접근 가능한 IP를 열어주어야 접근이 가능하다.

보안 그룹 → 인바운드 규칙에서 열어줄 IP를 추가해주면

배포된 사이트에 접근이 가능해진다.

 

백그라운드 실행시키기

nohup 명령어

ec2를 종료해도 서버를 종료시키기 않게 백그라운드로 실행시키기 위해서

nohub 명령어를 사용한다.

nohup java -jar build/libs/[빌드한 파일명.jar] --spring.profiles.active=dev &

실행 중인 프로그램 종료하기

# 실행 중인 프로그램 목록 확인
ps aux | grep java

# java가 들어가는 프로그램 확인
ps aux | grep java

# 해당 프로그램 종료
kill -9 [프로그램 번호]

파일 확인 명령어

# vim을 이용해 파일 열기
vi [파일명]

# 터메널에서 파일 전체 출력
cat [파일명]

# 파일의 끝 부분 출력
tail [파일명]

# 끝 부분을 실시간으로 출력
tail -f [파일명]

댓글을 작성해보세요.

채널톡 아이콘