작성
·
57
0
name: Deploy TO EC2
on:
push:
branches:
- main
jobs:
Deploy:
runs-on: ubuntu-latest
# SSH로 접속하는 명령어를 쳐주자.
# 일일이 다 쳐도 되지만 불편하기때문에 github actions의 라이브러리를 사용하면 편하다
# uses는 내가 어떤 라이브러리를 쓸 건지 기재하는 곳이다.
steps:
# SSH는 다른 원격 컴퓨터로 접속하는 프로토콜이다.
# Github Actions도 하나의 컴퓨터고, EC2도 하나의 컴퓨터이므로 SSH를 통해서 원격 접속을 진행해주자.
- name: SSH(원격 접속)로 EC2에 접속하기
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.HOST }} # IP 주소를 말함
username: ${{ secrets.EC2_USERNAME }} # EC2를 연결할 때 사용자 이름
key: ${{ secrets.EC2_PRIVATE_KEY }} # EC2에 접근할 때 사용하는 키 페어
script_stop: true
# run이 아닌 script로 실행하는 라이브러리도 있으니 예제파일을 참고하자
# EC2에 접속해서 실행한 명령어들을 차례대로 작성해주자
# 1. 프로젝트의 해당 경로로 이동
# 2. github에서 프로젝트 pull
# 3. gradlew 재 빌드
# 4. 포트번호 8080서버를 끄거나 서버가 이미 꺼져있어도 true
# 5. SNAPSHOT.jar로 끝나는 파일을 실행. 로그는 output이라는 파일에 남김
script: |
cd /home/ubuntu/personal-cicd-server
git pull origin main
./gradlew clean build
sudo fuser -k -n tcp 8080 || true
sudo java -jar /personal-cicd-server/build/libs/*SNAPSHOT.jar > ./output.log 2>&1 &
메모리 부족 문젠가 싶어서
위 링크를 보며 메모리 용량 증설도 해주었으나, 이후에도 안되어서 t3.small로 인스턴스 유형을 변경하였습니다.
근데 계속 Killed이 뜨네요..ㅠㅠ 다시 서버를 실행시키면 코드가 변경은 되어있구요..
왜 계속 프로세스가 죽는걸까요..??
답변 1
0
안녕하세요 냠냠님~ 질문 잘 해주셨습니다!
말씀해 주신 내용들을 보니 메모리 증설과 t3.small을 사용하시는데도,
실행 도중 Killed 메시지가 뜨면서 서버가 강제 종료되는 문제가 발생하셨네요 !
Killed가 발생하는 대표적인 이유는 메모리 부족(Out of Memory, OOM) 상황이에요 ~
로그상에서는 딱히 명확한 에러 메시지는 없고, 실행 도중 EC2에서 프로세스가 죽는 것 같네요 !
조금 더 많은 로그와 메시지들을 확인해봐야 정확히 어떤 원인인지 파악할수 있을 것 같아요 !
아래 명령어들을 사용해 보시며 더 자세하게 디버깅 해보시는걸 추천드려요 !
sudo dmesg
tail /var/log/syslog
sudo journalctl -xe
free -h
htop
로그와 에러 메시지를 확인하신 뒤에도 어떤 게 문제이신지 모르겠다면
댓글로 에러 메시지도 같이 공유해주세요 !
리눅스 환경에서 에러 디버깅하는 데 도움되실 것 같아 아래 링크도 같이 남겨둘게요!
추가로 궁금한 점 있으시면 편하게 알려주세요 😊