오늘은 배포를 하는 방법에 대해서 알아 볼 것이다.
1.ec2 인스턴스를 만든다.
ㄴ 보안 그룹에서 필요한 포트를 열어두고 ubuntu를 기반으로 생성한다.
2.가비아에서 dns 설정을 함.
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:~/
MungPe.main.jar 파일을 ec2로 옮긴다.
ㄴscp -i mungpedia-keypair.pem MungPe.main.jar ubuntu@43.203.90.39:~/
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 -
node 설치
ㄴsudo apt install -y nodejs
폴더를 생성한다.(프론트를 따로 폴더에 압축 해제 해서 돌리려고 하기 때문)
ㄴmkdir (폴더 이름)
예시 : mkdir mungfront
9.이 상태가 되었다면 ec2 서버에서 ls -l을 했을때
ㄴdocker-compose.yml, spring.jar, next.js.tar.gz 파일이 3개가 나온다.
docker 컨테이너를 생성 및 실행 한다.
ㄴdocker compose up -d
백그라운드에서 jar 파일을 실행 시킨다.
ㄴ nohup java -jar (jar 파일 경로) > (로그가 저장될 파일명) 2>&1 &
예시 nohup java -jar MungPe.main.jar > backend.log 2>&1 &
12.로그를 실시간으로 확인하고 싶다면 이렇게 한다.
ㄴtail -f backend.log
tar.gz 파일을 압축 해제 한다.
ㄴ tar -xzf (압축 파일) -C (해제 할 경로)
예시 : tar -xzf mungfront.tar.gz -C ~/mungfront
압축 해제 한곳으로 이동
ㄴ cd (이동 할 경로)
예시 : cd ~/mungfront
npm을 설치한다.
ㄴnpm install
npm run build를 한다.
ㄴnpm run build
pm2를 설치한다.
ㄴsudo npm install -g pm2
pm2를 통해서 tar.gz를 백그라운드 실행한다.
ㄴpm2 start npm --name "mung-front" -- run start -- -p 3000 -H 0.0.0.0
pm2가 자동실행 되도록 등록해준다.
ㄴsudo env PATH=$PATH:/usr/bin pm2 startup systemd -u ubuntu --hp /home/ubuntu
pm2의 설정을 저장한다.
ㄴpm2 save
nginx 파일 생성 nano /경로/파일이름 (파일이 있으면 열고 없으면 생성 후 열음)
자신의 배포 환경에 맞게 리버스 프록시 설정을 해준다.
ㄴsudo nano /etc/nginx/sites-available/mungpedia
nginx 활성화
ㄴsudo ln -sf /etc/nginx/sites-available/mungpedia /etc/nginx/sites-enabled/
nginx 문법 확인 (재실행을 하려면 필수적으로 확인을 해야 함)
ㄴsudo nginx -t
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