열렬히.뛰기

8. EC2 서버에 프로젝트 배포

웹 프로그래밍 > Spring > 스프링부트 공부 (1) > 8. EC2 서버에 프로젝트 배포

8.1 EC2 서버에 프로젝트 배포하기

참고

  1. 5.7장까지의 코드를 전부 github에 올린 상태에서 진행해야 한다.
  2. 리눅스 명령어를 잘 알면 좋다. 모르면 클릭!
  3. vim이라는 에디터를 주로 사용한다. 모르면 클릭!

순서대로 진행하기

sudo yum install git

git —version

mkdir ~/app && mkdir ~/app/step1

cd ~/app/step1

git clone [복사한 주소]

cd [프로젝트명]

11

./gradlew test

에러 메세지: 권한이 없다.

다음과 같은 코드가 끈다는 것은 권한이 없다는 뜻이다.

-bash: ./gradlew: Permission denied

  • chmod +x ./gradlew 를 친다.
  • 이후 다시 ./gradlew test 를 시행한다.

에러 메세지: 오류 발견

만약 오류가 발견되었다면, 우선 putty를 끄고 코드를 수정.

오류 수정 후

오류를 수정하고 다시 putty를 켰을 때는 다음과 같이 하면 된다.

cd ~/app/step1/[프로젝트명]

git pull

./gradlew test

성공 명령어

다음과 비슷한 명령어가 뜨면 성공이다.

java
BUILD SUCCESSFUL in 30s
5 actionable tasks: 2 executed, 3 up-to-date
[ec2-user@free-springboot Spring-study]$ cd

8.2 배포 스크립트 만들기

우선 ~/app/step1으로 되돌아 가야 한다.

cd ..

deploy.sh 파일을 하나 만든다.

vim ~/app/step1/deploy.sh


다 작성하고 insert 누르고 :wq! 누르면 된다.

만약 실패한 경우

8.3 외부 Security 파일 등록

우선 app/properties 파일에 등록하자

또한 code를 수정한다.

실패하는 케이스

  • 보통 오타가 많다.

안 되면

8.4 스프링부트 프로젝트로 RDS 접근하기

  • 여기서부터는 AWS EC2가 아닌 인텔리제이를 키고 한다.

현재 RDS는 MariaDB를 사용하는 중이다.

MariaDB로 스프링부트 프로젝트에 접근하기 위해서는 몇 가지 작업이 필요하다.

다음과 같다.

  1. 테이블 생성
  2. 프로젝트 생성
  3. EC2 설정

(1) 테이블 설정

  1. DB Browser로 들어간다.

  2. 맨 위 파일 누르고 ‘Open SQL Console’ → New SQL Console

  3. 첫 번째 콘솔 : 엔티티 테이블

    • 테스트 파일(인텔리제이에서 application.java)을 실행시킬 때 나오는 hibernate 코드를 복붙하면 된다.
  4. 두 번째 콘솔

    • 다음 내용을 복붙한다.
    
    

다시, EC2 리눅스로 돌아가서 (=putty 실행해서)

새로운 파일 생성; vim ./app/application-real-db.properties

다음 내용을 입력한다.

spring.jpa.hiberante.ddl-auto=none
spring.datasource.url=jdbc:mariadb://rds주소:포트명/database이름
spring.datasource.useraname = db계정
spring.datasource.password = db계정 비밀번호
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
  • rds주소 = 엔드포인트
  • database이름
  • db계정 = 마스터 사용자 이름
  • spring.jpa.hiberante.ddl-auto=none
    • jpa로 테이블이 자동 생성되는 옵션을 non으로 지정한다.
    • rds에는 실제 운영으로 사영될 테이블이니 절대 스프링 부트에서 새로 만들지 않도록 해야함
    • 주의해야 하는 옵션이다

(2) 프로젝트 생성


spring.jpa.hiberante.ddl-auto=none

  • jpa로 테이블이 자동 생성되는 옵션을 non으로 지정한다.
  • rds에는 실제 운영으로 사영될 테이블이니 절대 스프링 부트에서 새로 만들지 않도록 해야함
  • 주의해야 하는 옵션이다

8.5 EC2에서 소셜 로그인하기

EC2 관련 오류

ec2에서 RDS를 연결하고 jar 파일을 빌드한후 확인해 보는데 다음과 같은 오류가 생겼다.

nohup 파일을 확인해 보니 다음과 같은 오류를 확인할 수 있었다.

확인해 보니 8080 port에 다른 process가 실행 중이었다

  1. kill -15 PID
  2. 빌드 전에 생성된 jar 파일을 지운 후 다시 실행