Node.js와 Express.js를 활용한 AWS EC2 CI/CD 파이프라인 구축 가이드

KUKJIN LEE's profile picture

KUKJIN LEE5개월 전 작성

CI/CD(Continuous Integration/Continuous Deployment) 파이프라인은 현대 소프트웨어 개발에서 필수적입니다. Node.js와 Express.js로 작성한 애플리케이션을 AWS EC2에 배포하고, CI/CD 파이프라인을 구축하는 방법입니다.

 

※ 기존 EC2 배포를 진행 후 파이프라인만 구축하는 경우 설정 및 설치를 생략합니다.

 

1. AWS EC2 인스턴스 설정

AWS 콘솔에서 EC2 인스턴스를 설정합니다.

 

1.1. EC2 인스턴스 생성

  1. AWS Management Console에 로그인합니다.

  2. "EC2" 서비스를 선택합니다.

  3. "Launch Instance"를 클릭합니다.

  4. Amazon Linux 2 AMI를 선택합니다.

  5. 인스턴스 유형을 선택합니다 (t2.micro 무료 티어를 사용할 수 있습니다).

  6. 인스턴스 세부 정보를 구성하고 "Next"를 클릭합니다.

  7. 스토리지를 추가하고 "Next"를 클릭합니다.

  8. 태그를 추가하고 "Next"를 클릭합니다.

  9. 보안 그룹을 구성합니다. SSH(포트 22)와 HTTP(포트 80)를 허용합니다.

  10. 인스턴스를 검토하고 "Launch"를 클릭합니다.

  11. 기존 키 페어를 선택하거나 새 키 페어를 생성합니다.

 

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를 통해 서버가 항상 실행되도록 설정할 수 있습니다.

New Tech Posts