-
[TIL] (230628) Spring Boot를 EC2, RDS를 사용하여 윈도우 기준으로 배포해보았다TIL 2023. 6. 29. 04:35728x90
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:ricacls.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를 통한 리눅스 서버 접속방식도 공부해보고 싶다.
728x90'TIL' 카테고리의 다른 글