Node.js와 Express.js를 활용한 AWS EC2 CI/CD 파이프라인 구축 가이드
KUKJIN LEE • 5개월 전 작성
CI/CD(Continuous Integration/Continuous Deployment) 파이프라인은 현대 소프트웨어 개발에서 필수적입니다. Node.js와 Express.js로 작성한 애플리케이션을 AWS EC2에 배포하고, CI/CD 파이프라인을 구축하는 방법입니다.
※ 기존 EC2 배포를 진행 후 파이프라인만 구축하는 경우 설정 및 설치를 생략합니다.
1. AWS EC2 인스턴스 설정
AWS 콘솔에서 EC2 인스턴스를 설정합니다.
1.1. EC2 인스턴스 생성
-
AWS Management Console에 로그인합니다.
-
"EC2" 서비스를 선택합니다.
-
"Launch Instance"를 클릭합니다.
-
Amazon Linux 2 AMI를 선택합니다.
-
인스턴스 유형을 선택합니다 (t2.micro 무료 티어를 사용할 수 있습니다).
-
인스턴스 세부 정보를 구성하고 "Next"를 클릭합니다.
-
스토리지를 추가하고 "Next"를 클릭합니다.
-
태그를 추가하고 "Next"를 클릭합니다.
-
보안 그룹을 구성합니다. SSH(포트 22)와 HTTP(포트 80)를 허용합니다.
-
인스턴스를 검토하고 "Launch"를 클릭합니다.
-
기존 키 페어를 선택하거나 새 키 페어를 생성합니다.
1.2. EC2 인스턴스에 접속
ssh -i "your-key-pair.pem" ec2-user@your-ec2-public-dns
2. Node.js 및 Git 설치
EC2 인스턴스에 Node.js와 Git을 설치합니다.
sudo yum update -y
sudo yum install -y gcc-c++ make
curl -sL https://rpm.nodesource.com/setup_14.x | sudo -E bash -
sudo yum install -y nodejs
sudo yum install git -y
3. 애플리케이션 배포
EC2 인스턴스에 애플리케이션을 배포합니다.
3.1. 애플리케이션 클론
git clone https://github.com/your-repo/myapp.git
cd myapp
3.2. 의존성 설치 및 서버 실행
npm install
node app.js
4. CI/CD 파이프라인 설정
GitHub Actions를 사용하여 CI/CD 파이프라인을 설정합니다.
4.1. GitHub Actions 워크플로우 파일 생성
프로젝트 루트에 .github/workflows/deploy.yml
파일을 생성 후 아래 코드를 작성합니다.
key값은 본인이 입력해야지 아래 코드를 붙여넣는다고 해결 될 문제가 아닙니다.
name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
- name: Deploy to EC2
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: 'us-west-2'
EC2_HOST: 'your-ec2-public-dns'
KEY_FILE: ${{ secrets.KEY_FILE }}
run: |
sudo apt-get install -y jq
scp -i $KEY_FILE -o StrictHostKeyChecking=no -r . ec2-user@$EC2_HOST:~/myapp
ssh -i $KEY_FILE -o StrictHostKeyChecking=no ec2-user@$EC2_HOST << 'EOF'
cd ~/myapp
npm install
pm2 restart all || pm2 start app.js
EOF
5. 애플리케이션 자동 실행 설정
PM2를 사용하여 애플리케이션이 항상 실행되도록 설정합니다.
5.1. PM2 설치 및 설정
sudo npm install -g pm2
pm2 start app.js
pm2 startup systemd
pm2 save
결론
이제 Node.js와 Express.js 애플리케이션이 AWS EC2에서 CI/CD 파이프라인을 통해 자동으로 배포되고 실행됩니다. GitHub Actions를 사용하여 배포 프로세스를 자동화하고, PM2를 통해 서버가 항상 실행되도록 설정할 수 있습니다.