AWS, PM2 및 Github 작업을 사용한 Node.js 앱 지속적 배포.

9332 단어 gitnodeawsgithub
이 node.js 앱이 있습니다. 정적인 것이 아니라 Vue, React, Angular 등에 있습니다. 게시하고 배포할 준비가 되어 있고 안정적입니다. 하지만 어디서, 어떻게? 이 기사에서는 앱을 자동으로 배포하고 지속적으로 제공하는 방법에 대한 몇 가지 단계를 설명합니다.

간략한 요약은 다음과 같습니다.
  • Runing EC2 instance on AWS
  • PM2 setup
  • Deployment script
  • GitHub Action

  • 여담: 앱에 백엔드 관련 기능이 없다면 정적 모드로 빌드할 수 있다고 거의 확신합니다. 따라서 이를 위해 ieNetlify를 사용하고 이 스레드를 건너뛸 수 있습니다. 🙃

    정적 앱은 더 작은 탄소 발자국을 생성합니다.

    좋아, 다시 본론으로 돌아가자.


    1. AWS에서 EC2 인스턴스 실행.

    이 경우 AWS에서 EC2를 사용합니다. 설치 프로세스에 익숙하지 않은 경우 다음 작업만 수행하면 됩니다.
  • create an account on AWS
  • launch your EC2 Instance
  • create EC2 key pairs

  • 걱정하지 마십시오. 매우 간단하며 이동할 필요가 없습니다. 지침을 지켜보면 괜찮을 것입니다. 그러나 아마도 당신에게는 Digital Ocean Droplet이 최고의 솔루션이 될 것입니다. 또는 기타. 가장 좋아하는 것을 사용하십시오. 일반 Ubuntu 인스턴스가 필요합니다. 그러나 아래 구성의 경로는 AWS에 따라 다릅니다.

    이제 새로 만든 인스턴스에 로그인합니다.

    ssh -i key.pem [email protected]
    


    확실히 - 새 컴퓨터의 경우 - Nginx와 같은 웹 서버를 구성해야 합니다. 이에 대한 자세한 내용은 here을 찾거나 미리 정의된 것을 사용할 수 있습니다.

    $ sudo vim /etc/nginx/conf.d/nodejs-basic.conf
    



    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
    
    server {
        listen 80;
    
        server_name your-server-name.com;
    
        location / {
             proxy_pass http://localhost:3000;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection 'upgrade';
             proxy_set_header Host $host;
             proxy_cache_bypass $http_upgrade;
        }
    }
    


    2. PM2 설정.

    PM2, 도대체 뭐야? PM2는 응용 프로그램을 연중무휴 온라인 상태로 유지하고 관리하는 데 도움이 되는 데몬 프로세스 관리자입니다. 따라서 앱을 계속 실행하고 실행하는 데 도움이 됩니다. 설치합시다.

    npm install pm2 -g
    


    그런 다음 홈 폴더에서 간단한 구성 파일을 만듭니다( eccosystem.json ).

    {
      "apps" : [
         {
            "name"          : "App Name",
            "script"        : "npm",
            "args"          : "run start",
            "watch"         : false,
            "cwd"           : "/home/ubuntu/app-name/",
            "out_file"      : "/home/ubuntu/hooker.out.log",
            "err_file"      : "/home/ubuntu/hooker.err.log",
            "merge_logs"    : true,
            "instances"     : 1,
            "exec_mode"     : "cluster"
         }
      ]
    }
    


    3. 배포 스크립트.

    따라서 앱 빌드를 실행하고 그 후에 PM2 프로세스를 호출하는 간단한 bash 스크립트(deploy.sh)가 필요합니다.

    echo "Kill all the running PM2 actions"
    sudo pm2 kill
    
    echo "Jump to app folder"
    cd /home/ubuntu/app-name
    
    echo "Update app from Git"
    git pull
    
    echo "Install app dependencies"
    sudo rm -rf node_modules package-lock.json
    sudo npm install
    
    echo "Build your app"
    sudo npm run build
    
    echo "Run new PM2 action"
    sudo cp /home/ubuntu/ecosystem.json ecosystem.json
    sudo pm2 start ecosystem.json
    

    sh deploy.sh 명령을 사용하여 테스트할 수 있습니다.

    좋습니다. 거의 다 왔습니다. 서버 구성은 비교적 간단하며 거의 쉽게 만들 수 있습니다. 일상적인 환경이 MacOS나 Linux라면 매우 간단할 것입니다.

    이제 테스트를 위해 전체 프로세스를 수동으로 실행할 수 있습니다. 이렇게 하려면 아래 단계를 따르십시오.
  • 웹 서버 구성
  • 인스턴스에서 앱 복제/가져오기
  • 앱 빌드
  • PM2 관리자 설치
  • 달리다 sudo pm2 start npm --name "process" -- start

  • 또는 인스턴스 설정을 위한 간단한 체크리스트로 설정하십시오.

    4. GitHub 작업.

    마지막으로 배포 프로세스를 실행할 GitHub 작업을 만들 수 있습니다. 우리의 경우에는 develop 브랜치에 대한 각 병합에 대해 호출되는 작업을 생성합니다.

    기본 앱 디렉토리에서 .github 폴더 안에 workflows 폴더를 만듭니다. 그런 다음 deploy.yaml 파일을 만듭니다.

    name: Deploying
    
    on:
      push:
        branches:
          - develop
    
    jobs:
      deploy:
        name: Deploy
        runs-on: ubuntu-latest
    
        steps:
          - name: executing remote ssh commands using ssh key
            uses: appleboy/ssh-action@master
            with:
              host: ${{ secrets.AWS_HOST }}
              username: ${{ secrets.AWS_USER }}
              key: ${{ secrets.AWS_KEY }}
              script: sh deploy.sh
    


    보시다시피 여기에 몇 가지 변수가 있습니다. 이들은 GitHub 특정 비밀입니다. 계정 설정에서 정의할 수 있습니다. AWS 관련 자격 증명 값은 콘솔에서 찾을 수 있습니다. Here 자세한 지침이 있습니다.

    기억하다! 민감한 데이터는 항상 리포지토리 외부에 보관하십시오.

    그리고 그게 다야. 워크플로를 리포지토리로 푸시하고 첫 번째 자동 배포를 기다립니다. 몇 분 정도 소요됩니다(최대). 완료.

    건배, 루카스.

    좋은 웹페이지 즐겨찾기