🐋 목차
1. AWS 회원 가입 & 로그인
https://portal.aws.amazon.com/billing/signup
AWS Console - Signup
portal.aws.amazon.com
이메일 인증, 주소 등록, 카드 등록, 본인 인증 등의 절차를 거쳐 회원가입을 진행한
로그인 한다 !
2. EC2 설정
왼쪽 위 검색창에서 ec2 를 입력 후 선택
ec2 화면에서 ‘인스턴스’ 를 선택
인스턴스 시작 버튼 클릭
인스턴스 생성
- 이름 : my-server
- Amazon Machine Image(AMI) : Amazon Linux 2023 AMI
- 인스턴스 유형 : t2.micro
키 페어 생성
- ‘새 키 페어 생성’ 클릭
- 키 페어 이름 : my-server-keypair
- 키 페어 유형: RSA
- 프라이빗 키 파일 형식: pem
- ‘키 페어 생성’ 후 다운로드
네트워크 설정
- 보안 그룹 생성 선택
- Allow SSH traffic from , ‘위치 무관’ 선택
- 인터넷에서 HTTPS 트래픽 허용 선택
- 인터넷에서 HTTP 트래픽 허용 선택
인스턴스 시작 클릭 !
3. 서버 설정
ec2 접속
- .pem 파일 권한 설정 (chmod 400)
- ssh 로 접속
ssh -i test-server.pem ec2-user@{퍼블릭 IPv4 DNS 주소}
ec2 에 jdk 설치
sudo yum install -y java-17-amazon-corretto-devel
ec2에 docker, docker-compose 설치
sudo yum install docker
# Docker 서비스 시작
sudo systemctl start docker
# Docker 서비스 작동 상태 확인
sudo systemctl status 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
4. github repository 설정
새로운 repository 생성 !
- Settings > Secrets and variables > Actions 로 이동
- Repository secrets 에 key 추가
- SSH_KEY: .pem 파일 내용 복사
- SSH_HOST: 퍼블릭 IPv4 DNS 주소 복사
5. 프로젝트 설정
https://github.com/gajicoding/cicd-aws/tree/11f4a77a9db8cb029a07f870be1f329dcd704a6d
GitHub - gajicoding/cicd-aws
Contribute to gajicoding/cicd-aws development by creating an account on GitHub.
github.com
.github/workflows/deploy.yml 파일 추가
name: Deploy
on:
workflow_dispatch:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
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: |
sudo yum update -y && sudo yum install -y java-21-amazon-corretto
for pid in $(pgrep java); do
if ps -p $pid -o args= | grep -q 'java -jar'; then
echo "Java process with 'java -jar' found (PID: $pid). Terminating..."
kill -9 $pid
fi
done
echo "nohup java -jar ~/*.jar > ~/app.log 2>&1 &" | at now
* 작업 순서
- 코드 checkout
- JDK 설정
- gradlew 실행
- jar 파일 전송
- jar 파일 실행
6. EC2 인바운드 규칙 설정
인스턴스 > 보안 > 보안 그룹 > 인바운드 규칙 편집
7. 배포 확인
8. 인스턴스 중지
AWS를 사용하는 것은 비용이 발생할 수 있으니 주의해야 한다 !!!
사용하지 않는 EC2 서버는 ‘중지’ 상태로 변경. 서버를 없애려면 위해선 ‘종료’ 선택
번외
docker 로 배포하기 !
강의에서 ec2 에 docker 환경 설정은 해주었지만, docker 를 사용하여 배포하지는 않았다...
궁금한건 직접 해보기
https://github.com/gajicoding/cicd-aws/tree/cad62e7622af1fae48c4a3db98017bdae13f2339
GitHub - gajicoding/cicd-aws
Contribute to gajicoding/cicd-aws development by creating an account on GitHub.
github.com
'Backend > 강의' 카테고리의 다른 글
[🐋 Docker + CI/CD] 3-2. Docker 모니터링과 로깅 (0) | 2025.07.02 |
---|---|
[🐋 Docker + CI/CD] 3-1. Dockerfile 과 Docker Compose (0) | 2025.07.02 |
[🐋 Docker + CI/CD] 2. Github actions를 활용한 CI/CD 파이프라인 (1) | 2025.07.01 |
[🐋 Docker + CI/CD] 1. CICD와 Docker 이해 (5) | 2025.07.01 |