[2022 하계 모각코] Spring boot and MySQL AWS EC2 배포 with RDS(2)

Kyunghwan Ko·2022년 8월 18일
0

22년도 하계 모각코

목록 보기
10/13

Spring Boot에 MySQL 연동

아래와 같이 yml파일을 작성합니다.

# application-aws.yml
spring:
	datasource:
    	url: jdbc:mysql://{엔드포인트}:3306/{데이터베이스이름}?useSSL=true&characterEncoding=UTF-8
        username: {사용자명 (default: admin)}
        password: {비밀번호}

{데이터베이스 이름}의 경우엔 Workbench에서 화면 중상단에 위치한 탭 중에 DB 모양을 클릭해서 Create new scheme in the connected server 를 통해 생성된 Database의 이름을 입력하면 됩니다.

MySQL 민감정보 .gitignore로 보호하기

# .gitignore
application-aws.yml

굳이 src/main/application-aws.yml라고 안써도 되고 그냥 appllcaiotn-aws.yml라고만 써도 잘 적용됩니다.

만약 기존에 application.yml를 git에 push했었다면
application-aws.yml.gitignore에 등록하더라도 git에 안올라가지 않고 그대로 올라갈것입니다...

이에 대한 해결방안은 cash를 비워주는 것입니다.

git rm -r --cached "C:User/~/application-aws.yml"

위 명령어를 통해 기존에 git에 등록되었던 cash를 지운 후에 다시 git add . / commit 을 하면 정상적으로 application-aws.yml 파일이 깃에 무시된채 업로드될것입니다.

EC2에 jar파일 업로드하기

먼저 jar파일을 생성해야 됩니다.

# build.gradle
...gradle
bootJar {
	archiveBaseName = '-'
	archiveFileName = '4can10000wonBE.jar'
	archiveVersion = '0.0.1'
}

그리고 빌드할때 자동으로 Test코드를 모두 돌려서 통과되야지만 성공적으로 빌드가 됩니다.
이를 염려해두시고 빌드를 시작해보겠습니다.

# windows 기준
powershell에서
ls 했을때 gradlew 파일이 존재하는 곳에서 아래 명령어 작성하면 됩니다.

.\gradlew build

이후 생성된 jar 파일을 직접 로컬 pc 로 실행해 보겠습니다.
실행하는 방법은 크게 두가지가 있습니다.

  • build/libs/4can10000wonBE.jar 더블클릭
  • powershell에서 4can10000wonBE.jar 파일이 존재하는 곳에서
    java -jar 4can10000wonBE.jar CLI 입력

이후 웹 브라우저에 http://localhost:8080 입력해보시면 Spring Boot 애플리케이션이 잘 작동하는 것을 볼 수 있습니다.

로컬에서 돌고 있는 jar파일을 종료시키는 방법은

cmd 창에서 아래의 명령어를 입력하면 됩니다.

# cmd
> netstat -ano | find "8080"
C:\Users\kyung>netstat -ano | find "8080"
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       1072
  TCP    [::]:8080              [::]:0                 LISTENING       1072
  TCP    [::1]:8080             [::1]:55347            TIME_WAIT       0
  TCP    [::1]:8080             [::1]:55348            TIME_WAIT       0
  TCP    [::1]:8080             [::1]:55350            TIME_WAIT       0
  TCP    [::1]:8080             [::1]:55405            ESTABLISHED     1072
  TCP    [::1]:8080             [::1]:55406            ESTABLISHED     1072
  TCP    [::1]:8080             [::1]:55407            ESTABLISHED     1072
  TCP    [::1]:55405            [::1]:8080             ESTABLISHED     13044
  TCP    [::1]:55406            [::1]:8080             ESTABLISHED     13044
  TCP    [::1]:55407            [::1]:8080             ESTABLISHED     13044

> taskkill /pid 13044 /f

# macOS
$ ps -ef | grep jar
$ sudo kill -9 25948

파일을 업로드하기 위해 FTP를 통해 파일을 주고받을 수 있는 소프트웨어인 파일질라(FileZila)를 사용해보겠습니다.
먼저 EC2와 연결해줍니다.

파일질라에 들어가서 좌측상단에 파일탭에서 사이트 관리자 들어가면 아래와 같은 화면이 뜰것입니다.

새 사이트 클릭 후 프로토콜SFTP 로 설정하고
호스트에 ec2 퍼블릭 IPv4주소를 입력 후 포트 22로 설정
사용자 이름입력(default: ec2-user) 이후 키 파일을 앞서 ec2 인스턴스 생성할 때 발급받은 키파일(ppk)파일로 등록한 후 연결클릭
(만약, 키파일이 pem파일이라면 puttygen 을 다운받아서 ppk파일로 변환하면 됩니다.)

우측상단에 있는 빠른연결을 선택해서 연결을 시도하고
만약에 ec2서버 연결에 계속 실패한다면
좌측상단에 있는 파일 탭에서 사이트 관리자 -> 앞서 생성한 내 사이트에서 포트번호를 22로 잘 설정되었는지 확인해주시기 바랍니다.

연결이 잘되면 이와같이 왼쪽(로컬PC)에서 EC2(오른쪽)로 올리고자 하는 파일에서 오른쪽 마우스 -> 업로드를 클릭해서 파일을 EC2로 업로드 합니다.

putty실행

왼쪽 카테고리에서 Connection/SSH/Auth를 클릭해서 키파일을 찾습니다. 등록합니다(.ppk파일) 그리고 Session으로 와서

Host Name에 EC2의 퍼블릭IP를 입력하고 Port22, Connection TypeSSH, Telnet 그리고 마지막으로 Saved Sessions 에서 해당 기록을 저장할 이름을 입력하고 우측에 Save버튼을 눌러서 세션을 저장하고 맨 우측하단에 Open을 눌러서 EC2를 실행시킵니다.

맨 처음 들어가면 login as: 하면서 prompt가 입력을 기다리고 있을 탠대 앞서 EC2 생성 시 설정했던 user이름을 입력하면 됩니다. default는 ec2-user입니다.

이제 파일질라를 통해 EC2로 업로드했던 jar파일을 실행시키면 되는대 이렇게 일반적으로 jar파일을 실행시키면 putty를 종료시키면 jar파일도 같이 종료되게 됩니다. 따라서 putty를 종료하더라도 EC2에서 jar파일이 정상적으로 실행되고 있도록 설정해줘야 합니다.

putty를 종료하더라도 EC2세션 유지하기

putty로 ec2 실행 후 4can10000wonBE.jar 파일이 있는 위치에서 아래의 명령어 입력

nohup java -jar 4can10000wonBE.jar

putty를 종료해도 정상적으로 url에 접속가능한 것을 볼 수 있습니다.

참조

FileZilla-EC2연결

Jar file run on a server background with close putty session

[IntelliJ] .gitignore 파일에 application.properties 민감 정보 안나오게 하기

profile
부족한 부분을 인지하는 것부터가 배움의 시작이다.

0개의 댓글