온보딩 토이프로젝트할 때 ec2에 배포를 해본 이후, 나도 모르게 열어놓은 로드밸런서 때문에 약 10만원이 과금되고 나서 환불 전쟁에서 승리한 뒤로 아마존 aws는 쳐다도 보지 않았다. 그래서 미니 프로젝트와 클론 코딩 프로젝트를 진행할 때 서버 배포는 다른 팀원분이 맡아주셨고 그렇게 서버 배포는 나의 영역이 아닐거라고 생각했다....만!! 이번 프로젝트에서 총무 역할을 맡게 되면서 백엔드 서버 배포를 내가 담당하는 것이 좋겠다는 생각이 들었다. 물론 다른 팀원들도 함께 서버 배포도 연습해보는 것이 좋겠다 싶어서 프리티어 계정을 사용할 수 있는한 모든 팀원이 배포 연습을 하되 메인 서버는 내가 담당하기로 했다.
그래서 어제부터 불면의 밤을 보내면서 도커를 사용해서 ec2에 redis와 openvidu 서버를 동시에 실행시켜놓고 우리 프로젝트 파일을 배포하는 것을 연구했다. 결론적으로 서버 배포 드뎌 성공><
먼저, 도커를 설치한다. 그리고 프로젝트 파일에 도커 파일을 만듬.
build 밑에 Dockerfile이라는 파일을 하나 생성해주고 이렇게 내용을 입력해줌
FROM openjdk:17-oracle
ARG JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
근데 이 부분은 프로젝트의 이미지를 찍어서 도커에 올리고 ec2 서버에서 그 이미지를 다운 받아 하기 위함이라 이번 배포 과정에서 필요는 없는데... 나중에 보기 위해 적어둠
이제 본격적으로 시작, Gradle 영역에서 jar 파일을 만들어주자
여기서 bootJar 를 실행해주면 첫번째 사진에 있는 프로젝트명.jar 파일이 생성된다. 일단 대기
그리고 ec2 인스턴스를 연결해서 도커를 먼저 설치해줌.
sudo apt-get update
sudo apt install docker.io
++ 매번 sudo ~~ 를 붙이기 귀찮다면 아래 명령어를 입력하고 root로 접근 가능
sudo su
우리에게 필요한 redis, openvidu 이미지를 받아주고 컨테이너에 올려서 실행시킨다.
docker image pull redis
docker run -d --name redis-container -p 6379:6379 -dit --restart unless-stopped redis
docker image pull openvidu
docker run -d --name openvidu-container -p 4443:4443 -dit --restart unless-stopped openvidu/openvidu-server-kms
난 자바 기반 프로젝트를 돌려야하니 jdk도 설치
sudo apt-get install openjdk-17-jdk
그리고 처음에 만들어놨던 jar파일을 FIleZilla 를 사용해서 ubuntu 서버로 옮겨준다. (파일질라 진짜 개편해)
다시 ec2 콘솔로 넘어와서 아래 명령어를 입력해줌
//nohup 을 같이 입력해서 백그라운드에서도 실행가능
nohup java -jar 이름 .jar &
// 로그를 확인
tail -f nohup.out
// 숫자 갯수 줄만큼 로그 보여줌
tail -f -n 숫자
// 전체 로그 보여줌
cat nohup.out
++ 한국 시간으로 바꿔주기 위한 명령어
sudo timedatectl set-timezone Asia/Seoul
https://velog.io/@ssssujini99/AWS-EC2-ubuntu-%EC%8B%9C%EA%B0%84-%EC%84%A4%EC%A0%95
https://velog.io/@3210439/ec2%EC%97%90-docker-redis-%EC%84%A4%EC%B9%98
https://davelogs.tistory.com/71
https://msyu1207.tistory.com/entry/Redis-PubSub
'T.I.L. :: Today I Learned > 항해99 14기 본과정' 카테고리의 다른 글
Day 57. 오늘이 대체 공휴일이었니..? (0) | 2023.05.29 |
---|---|
Day 56. 실전 프로젝트라는건 정말 재밌구낭 (0) | 2023.05.28 |
Day 54. 서버 배포 도전기, 과연 할 수 있을 것인가. (0) | 2023.05.26 |
Day 53. 🦉부엉 (0) | 2023.05.26 |
Day 52. webRTC가 그러니깐.. 뭐냐면 (1) | 2023.05.24 |