inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 스터디 클럽 1기 BE] 세번째 발자국

전다윤
0

Section - 6 생애 최초 배포 준비하기

 

배포란?

 

배포

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

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

 

git과 github란?

 

git

GitHub

GitHub에 저장하는 이유

  1. 내 컴퓨터에 있는 코드는 모종의 이유로 소실 될 수 있다.

  2. 배포 과정에서 소스 코드를 옮길 때 활용할 수 있다.

     

git 기초 명령어

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

# 해당 프로젝트를 git이 관리하도록 함
git init

# github 저장소와 git 프로젝트를 연결
git remote add origin [repository 주소]

# 모든 파일을 추가
git add .
# 특정 파일/폴더만 추가
git add [파일/폴더 이름]

# 현재 add한 상태를 확인
git status 

# 현재 add된 파일들을 다 제거
git resest

# add한 파일을 메시지와 함께 묶는 커밋
git commit -m “메시지”

# 커밋한 파일을 github 저장소로 보냄
git push

# git push 하는 경우  최초 1회는 반드시 실행해주어야 함
git push --set-upstream origin master

.gitignore

이 파일 안에 작성된 폴더나 다른 파일들이 git에 의해 추적되거나 관리되는 것을 방지함

build/
.gradle/
.idea/

 

AWS EC2

Section - 7 생애 최초 배포하기

 

EC2 접속방법

  1. 다운로드 받은 키 페어(pem key)를 이용하는 방법

    1. 접속하려는 EC2의 IP 주소

    2. 다운로드 받은 키 페어

       

    3. 접속하기 위한 프로그램(git CLI or Mac Terminal)

       

      키 페어의 권한을 닫아준다. (보안 처리)

      chmod 400 경로/키페어명.pem

      보안 처리가 되어야만 접속이 가능하다. 만약, 처리가 되지 않고 접속을 시도하면 unprotected private key file을 사용하고 있다며 접근 자체가 거부 된다.
      접근 명령어

      ssh -i 경로/키페어명.pem ec2-user@IP
  2. AWS 콘솔을 활용하는 방법

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

기본적인 리눅스 명령어

# 폴더를 만드는 명령어
mkdir folder1

# 현재 위치에서 폴더나 파일을 확인하는 명령어
ls

# 조금 더 자세한 정보를 확인
ls -l

drwxrwxr-x 2 ec2-user ec2-user 6

# d : folder1은 폴더이다.
# r : 읽는 권한, w : 쓸 수 있는 권한, x : 실행 권한

# rwx/rwx/r-x
# 폴더 소유자의 권한 / 폴더 소유 그룹의 권한/ 아무나 접근했을 때의 권

# 2 : 폴더에 걸려 있는 바로가기 개수

# ec2-user : 폴더 소유주의 이름

# ec2-user : 폴더 소유 그룹의 이름

# 6 : 폴더(파일의 크기) 단위 : byte

필요한 프로그램 설치하기

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

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

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

GitHub에서 코드 가져오기

git clone [레포지토리 주소]

EC2 Swap 설정

Swap 설정 : RAM이 부족할 경우 일부 DISK를 사용하게 해준다.

# 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

# gradle을 이용해 테스트를 돌리지 않고 프로젝트 빌드
./gradlew build -x test

서버 실행하기

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

 

foreground vs background

foreground

background

background 서버 다운

 

DNS 적용

 

Section - 8 Spring Boot의 이모저모

build.gradle

 

application.yml

과제

[과제 #6] API 분리

[과제 #7] JPA 적용


블로그를 찾아보며 겨우 혼자 배포한 경험이 있었는데 이렇게 다시 배포의 과정을 차근차근 배워볼 수 있어서 좋았다. 완강을 해서 뿌듯했고 앞으로 남은 미니 프로젝트도 잘 마무리할 수 있으면 좋겠다.

백엔드 인프런워밍업클럽1기BE

답변 0