[AWS 배포] JAVA, NEXT.JS, DOCKER-COMPOSE, 가비아

정석환·2025년 7월 31일

오늘은 배포를 하는 방법에 대해서 알아 볼 것이다.

1.ec2 인스턴스를 만든다.
ㄴ 보안 그룹에서 필요한 포트를 열어두고 ubuntu를 기반으로 생성한다.

2.가비아에서 dns 설정을 함.

  1. docker-compose.yml을 ec2로 옮긴다.
    ㄴscp -i (pem 파일 경로) (docker-compose.yml) (ec2사용자@공인 ip:ec2경로 )
    예시 : scp -i mungpedia-keypair.pem docker-compose.yml ubuntu@43.203.90.39:~/

  2. MungPe.main.jar 파일을 ec2로 옮긴다.
    ㄴscp -i mungpedia-keypair.pem MungPe.main.jar ubuntu@43.203.90.39:~/

  3. mungfront.tar.gz을 ec2로 옮긴다.(tar -czf mungfront.tar.gz --exclude=node_modules .로 생성)
    ㄴscp -i C:\Users\jsver\Downloads\mungpedia-keypair.pem mungfront.tar.gz ubuntu@43.203.90.39:/home/ubuntu/

--------ec2로 이동-------
6. node 설치 저장소를 등록
ㄴcurl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

  1. node 설치
    ㄴsudo apt install -y nodejs

  2. 폴더를 생성한다.(프론트를 따로 폴더에 압축 해제 해서 돌리려고 하기 때문)
    ㄴmkdir (폴더 이름)
    예시 : mkdir mungfront

9.이 상태가 되었다면 ec2 서버에서 ls -l을 했을때
ㄴdocker-compose.yml, spring.jar, next.js.tar.gz 파일이 3개가 나온다.

  1. docker 컨테이너를 생성 및 실행 한다.
    ㄴdocker compose up -d

  2. 백그라운드에서 jar 파일을 실행 시킨다.
    ㄴ nohup java -jar (jar 파일 경로) > (로그가 저장될 파일명) 2>&1 &
    예시 nohup java -jar MungPe.main.jar > backend.log 2>&1 &

12.로그를 실시간으로 확인하고 싶다면 이렇게 한다.
ㄴtail -f backend.log

  1. tar.gz 파일을 압축 해제 한다.
    ㄴ tar -xzf (압축 파일) -C (해제 할 경로)
    예시 : tar -xzf mungfront.tar.gz -C ~/mungfront

  2. 압축 해제 한곳으로 이동
    ㄴ cd (이동 할 경로)
    예시 : cd ~/mungfront

  3. npm을 설치한다.
    ㄴnpm install

  4. npm run build를 한다.
    ㄴnpm run build

  5. pm2를 설치한다.
    ㄴsudo npm install -g pm2

  6. pm2를 통해서 tar.gz를 백그라운드 실행한다.
    ㄴpm2 start npm --name "mung-front" -- run start -- -p 3000 -H 0.0.0.0

  7. pm2가 자동실행 되도록 등록해준다.
    ㄴsudo env PATH=$PATH:/usr/bin pm2 startup systemd -u ubuntu --hp /home/ubuntu

  8. pm2의 설정을 저장한다.
    ㄴpm2 save

  9. nginx 파일 생성 nano /경로/파일이름 (파일이 있으면 열고 없으면 생성 후 열음)
    자신의 배포 환경에 맞게 리버스 프록시 설정을 해준다.
    ㄴsudo nano /etc/nginx/sites-available/mungpedia

  10. nginx 활성화
    ㄴsudo ln -sf /etc/nginx/sites-available/mungpedia /etc/nginx/sites-enabled/

  11. nginx 문법 확인 (재실행을 하려면 필수적으로 확인을 해야 함)
    ㄴsudo nginx -t

  12. nginx 재실행
    ㄴsudo systemctl reload nginx

참고
홈 디렉토리 이동
ㄴcd ~/ 

삭제
ㄴ sudo rm -fr 삭제 할 파일이름

포트 실행되는 프로그램 확인 (열린 파일 목록을 보여주는 도구)
ㄴsudo lsof -i :8080

포트 3000을 청취 중인 소켓정보만 필터링해서 보여 줌
ㄴsudo ss -lptn 'sport = :3000'

포트 죽이기
ㄴsudo kill -9 PID

노드 버전 확인
ㄴnode -v

pm2 로그 확인 방법
ㄴpm2 logs mung-front
pm2 실행 리스트 조회
ㄴpm2 list
pm2 에서 특정 인스턴스 정지
ㄴpm2 stop mung-front
pm2 에서 특정 인스턴스 삭제
ㄴpm2 delete mung-front

nginx 문법 확인
ㄴsudo nginx -t
nginx 재실행
ㄴsudo systemctl reload nginx
profile
자바,스프링 백엔드 개발자를 꿈꾸는 초보아빠

0개의 댓글