Github Actions, github repository 그리고 AWS ec2 간단 사용법.
( AWS를 사용하는 것은 비용이 발생할 수 있으니 주의해 주세요. )

1. 회원 가입 밑 ec2 만들어야 합니다.
참
https://sehuncodingjournal.tistory.com/category/AWS
'AWS' 카테고리의 글 목록
sehuncodingjournal.tistory.com
그래도 ec2 만드는거는 복습 한다 치고


키페어 !

비밀키 이고 잃어 버리면 복구가 안됨.!!!!
생성 하면 , 다운로드


이제 비밀키 있는 곳으로 이동

chmod 400 적용

퍼블릭 ipv4 DNS 가져와서 ssh 실행 해보기

ssh -i {비밀키} ec2-users@ { 퍼블릭 ipv4 DNS }

그.... 우번투가 아니라 aws linux 이기 때문에 yum 커맨드 사용
ec2 에 jdk 설치
sudo yum install -y java-17-amazon-corretto-devel

도커 설치
sudo yum install docker

# Docker 서비스 시작
sudo systemctl start docker

# Docker 서비스 작동 상태 확인
sudo systemctl status docker
# Docker 서비스를 운영체제 부팅시 자동 시작하도록 설정
sudo systemctl enable docker

# Docker 서비스를 운영체제 부팅시 자동 시작하도록 설정
sudo systemctl enable docker

# docker 명령어를 sudo 없이 사용하기 위해 계정을 docker 그룹에 소속 (계정 재접속 필요)
sudo usermod -aG docker ec2-user
# docker-compose 설치
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

# 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
Github repository 설정
시크릿 키 설정. (비밀키 pem 파일에 있는거 (메모장으로 열면 보임) 키로 들록)

1 번 SSH_KEY

2 번 SSH_HOST
Public Ipv4 DNS


우선 앞서서 프로젝트 안에

boot jar 로 jar 파일이 빌드 안에 생성 되는것을 볼수 있습니다.

작업 순서
- 코드 checkout
- JDK 설정
- gradlew 실행
- jar 파일 전송
- jar 파일 실행
.github/workflows/deploy.yml 생성

name: Deploy
on:
workflow_dispatch:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
- name: gradlew bootJar
run: ./gradlew bootJar
- name: copy jar to server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ec2-user
key: ${{ secrets.SSH_KEY }}
port: 22
source: "./build/libs/*.jar"
target: "~"
strip_components: 2
- name: SSH Commands
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.SSH_HOST }}
username: ec2-user
key: ${{ secrets.SSH_KEY }}
port: 22
script_stop: true
script: |
kill -9 $(ps -ef | grep java | head -n 1 | awk '{print $2}')
nohup java -jar *.jar 1> /dev/null 2>&1 &
( 윈도우에서 문제가 있는 경우, script: | 를 변경해 주세요 → script: \ )
서버 접속이 안되는 경우 확인 필요
- 해당 인스턴스에 연결된 보안그룹에서 8080 포트를 open 하고 있는지 확인

- 배포하는 동안 scp 로 copy 할 때 서버 접속이 안되는 경우,
- DNS 와 IP 가 변경되지 않았는지 다시 한 번 확인
(고정 ip 설정 해놓지 않으면 인스턴스 재실행 할때 마다 ip 주소 바껴요!!!!!!)
AWS를 사용하는 것은 비용이 발생할 수 있으니 주의해 주세요. 당분간 사용하지 않는 EC2 서버는 ‘중지’ 상태로 변경해 주세요. 서버를 없애기 위해선 ‘종료’를 선택해 주세요.
