요즘 백엔드 배포에는 여러 방법이 있지만, 대체로 클라우드 환경에서 운영하는 것이 트렌드이다.
대표적인 클라우드 서비스는 AWS, Azure, Google Cloud Platform 이 있다.
이러한 클라우드 서비스를 이용하면 인프라 구성이 필요 없고, 필요한 리소스를 관리할 수 있다.
컨테이너 기반 배포 방식도 하나의 방법이다.
컨테이너는 애플리케이션을 실행하기 위한 필수 라이브러리, 환경 설정 및 코드를 포함하는 독립적인 패키지이다.
컨테이너를 사용하면 개발 환경과 운영 환경의 차이로 인한 문제를 최소화할 수 있다.
Kubernetes를 사용하면 자동배포 관리가 가능해서 유용하다.
AWS Lamda, Azure function, Google Cloud Function 이 있다
서버 인프라를 관리할 필요가 없이, 코드가 실행될 때만 자원을 할당하고 실행한다.
인프라 걱정을 줄일 수 있다.=> 개발 생산성이 높아지게 된다.
그 중 클라우드 서비스를 선택했다 그 중에 EC2 인스턴스에 배포하는 것을 선택했다.
가상 머신을 직접 관리해 보며, 배포 방법도 익히고, 프로젝트, db, socket 까지 배포를 해보며, 익숙해 지고 이해하는 것이 목표이다.
ssh -i ./dubu-key.cer ubuntu@ec2-13-124-125-xxx.ap-northeast-2.compute.amazonaws.com
=> 에러 : Permissions 0644 for './dubu-key.cer' are too open.
파일의 권한이 너무 열려 있어 발생한다.
chmod 400 dubu-key.cer
: 파일의 권한을 바꿔준다.
다시 로그인하면
ubuntu@ip-172-31-1-39:~$
이 된다
SCP(Secure Copy)
이나 SFTP(Secure File Transfer Protocol)
사용하여 JAR 파일을 EC2 인스턴스에 업로드한다
sscp -i keypare-dubu.cer ./build/libs/dubu..SNAPSHOT.jar ubuntu@ec2-13-124-125-186.ap-northeast-2.compute.amazonaws.com:~/new/
리눅스 업데이트
sudo apt update
openJDK,spring 설치
sudo apt install default-jdk
sudo apt-get install spring
자바 설치 확인
java -version
EC2에 배포하기 위해서는 먼저 애플리케이션을 빌드해야한다.
이 단계에서는 gradle을 사용해서 .jar 파일을 생성한다.
sudo apt-get install tomcat9
spring 프로젝트를 tomcat에 배포할 것이다.
java -jar dubu-0.0.1-SNAPSHOT.jar
실행! => 뭐가 돌아가다가 에러가 뜨는데 아마 mysql이 안깔려서 그런듯?
sudo apt-get install mysql-server
AWS EC2 보안 그룹에서 MySQL에 대한 포트를 열어준다. => 기본 (3306)
(나중에 열기 귀찮아서 443,80 포트도 열어놨다.. ㅎ)
sudo systemctl start mysql
서비스 상태 확인 ) sudo systemctl status mysql
사용자 계정으로 로그인 sudo su