[TIL] (230829) Spring Boot를 EC2, RDS를 사용하여 윈도우 기준으로 배포해보았다.

Noh Jihyeon·2023년 8월 29일
0

TIL

목록 보기
14/49
post-thumbnail

Spring Boot를 배포하는 방법을 공부했다.
AWS의 EC2 인스턴스와 RDS 데이터베이스를 이용하여 보안설정, pem 권한변경 등을 진행하여 정상적으로 배포까지 완료했다.



🔸문제점

AWS에서 EC2, 탄력적 IP, RDS까지 모두 설정 후 .pem의 권한변경 및 SSH로 접속이 필요했는데

  $ chmod 400 my-key.pem

인터넷에서 찾은 권한변경 명령어는 윈도우에서 사용할 수 없었다.



🔸시도해 본 것들

1. 리눅스 환경으로 접속해 보기 (VM)

PuTTy를 이용하여 접속해보려 했으나 구글링을 진행하던 중 윈도우로 변환된 명령어를 찾았다.


👇 내가 정리해본 Window 기준 진행방법


📘 cmd에서 실행

<.pem 파일 권한변경>


icacls.exe sample-key.pem /reset
icacls.exe sample-key.pem /grant:r (사용자이름):(R)
icacls.exe sample-key.pem /inheritance:r



icacls.exe sample-key.pem /reset
: 이 명령어는 sample-key.pem 파일의 모든 ACL(Access Control List) 항목을 제거하고 기본 권한을 복원하는 것을 말한다.

  • 기본 권한은 파일을 만들었을 때의 기본적인 권한 설정을 의미함.

icacls.exe sample-key.pem /grant:r (사용자이름):(R)
: 이 명령어는 sample-key.pem 파일에 대해 JH 사용자에게 읽기(R) 권한을 부여한다.

icacls.exe sample-key.pem /inheritance:r
: 이 명령어는 sample-key.pem 파일의 상위 디렉토리에서 상속된 권한을 제거하는 것이다.


이렇게 읽기 권한만 부여하여 $ chmod 400 my-key.pem와 동일한 설정을 진행할 수 있었다.


이후 빌드까지 정상으로 진행했으나 빌드파일을 SSH로 옮기는 것에서 또 한 번 에러가 발생했다.

# 빌드 파일 복사
$ scp ./build/libs/api-0.0.1-SNAPSHOT.jar {호스트 이름}:/home/ubuntu

이 명령어를 실행했으나 경로를 확인할 수 없는 에러가 발생하여 다시 골머리를 앓던 중 경로를 이렇게 알려줘서 설정해봤다.

# 내 기준 경로설정
scp -i "C:\Users\(user이름)\C:\Users\USER\Desktop\PEM\sample-key.pem" "C:\Users\USER\Desktop\SPRING\Spring1\build\libs\Spring1-0.0.1-SNAPSHOT.jar" ubuntu@본인주소:/home/ubuntu (.jar 파일명)

sample-key.pem 파일 위치 : C:\Users\USER\Desktop\PEM\sample-key.pem

jar 파일위치 : C:\Users\USER\Desktop\SPRING\Spring\build\libs\Spring1-0.0.1-SNAPSHOT.jar



*로컬 시스템의 파일을 원격 서버로 복사하는것

scp
: Secure Copy의 약자로, 파일이나 디렉토리를 안전하게 복사하는 명령어

-i "C:\Users\USER\Desktop\PEM\sample-key.pem"
: 특정 개인 키 파일을 사용하여 SSH 연결을 인증하는 옵션으로 -i 명령어를 통해 경로를 명시해 준다 
pem경로 : "C:\Users\JH\Desktop\PEM\sample-key.pem" 

"C:\Users\USER\Desktop\SPRING\Spring_Lv1\build\libs\Spring1-0.0.1-SNAPSHOT.jar"
: 로컬 시스템에서 복사하려는 파일의 경로 역시 명시해 준다.

ubuntu@(본인주소):/home/ubuntu
: 파일을 복사할 원격 서버의 주소와 디렉토리 경로로
ubuntu는 원격 서버의 사용자 이름이고,
(본인주소)는 원격 서버의 호스트 주소를 입력한다.
 * :/home/ubuntu는 원격 서버의 /home/ubuntu 디렉토리에 파일을 복사하겠다는 의미

Spring1-0.0.1-SNAPSHOT.jar: 복사된 파일의 이름으로 이 파일이 원격 서버의 /home/ubuntu 디렉토리에 저장된다.

즉, 변경된 명령어는 개인 키 파일을 명시적으로 지정하고, 파일 경로 및 이름, 호스트 이름을 정확하게 지정하여 파일을 복사하도록 명령해 준다.

실제로 이 명령어로 정상복사가 완료되었다.


🔸해결


**부여된 명령어를 상황에 맞게 바꿔서 진행하였다.**

$ chmod 400 my-key.pem

🔽

icacls.exe sample-key.pem /reset
icacls.exe sample-key.pem /grant:r (사용자이름):(R)
icacls.exe sample-key.pem /inheritance:r


$ scp ./build/libs/api-0.0.1-SNAPSHOT.jar {호스트 이름}:/home/ubuntu

🔽

scp -i "C:\Users(user이름)\C:\Users\USER\Desktop\SPRING
\sample-key.pem" "C:\Users\USER\Desktop\SPRIMG\Spring1\build\libs\Spring1-0.0.1-SNAPSHOT.jar" ubuntu@본인주소:/home/ubuntu (.jar 파일명)



🔸알게 된 점

Spring Boot로 생성된 파일을 .jar로 직접 빌드하여 원격서버로 옮기고, 원격서버에서 실행하는 방법을 알 수 있었다.

각 환경마다 적용가능한 명령어와, 호환되지 않는 명령어가 있기 때문에 운영체제에 맞는 명령어를 알아보고 실행해야 한다.

  • Window에는 chmod 명령어 불가

시간이 된다면 PuTTy를 통한 리눅스 서버 접속방식도 공부해보고 싶다.

profile
꼭꼭 씹어서 소화시키는 맛있는 코딩

0개의 댓글