AWS, PM2 및 Github 작업을 사용한 Node.js 앱 지속적 배포.
간략한 요약은 다음과 같습니다.
여담: 앱에 백엔드 관련 기능이 없다면 정적 모드로 빌드할 수 있다고 거의 확신합니다. 따라서 이를 위해 ieNetlify를 사용하고 이 스레드를 건너뛸 수 있습니다. 🙃
정적 앱은 더 작은 탄소 발자국을 생성합니다.
좋아, 다시 본론으로 돌아가자.
1. AWS에서 EC2 인스턴스 실행.
이 경우 AWS에서 EC2를 사용합니다. 설치 프로세스에 익숙하지 않은 경우 다음 작업만 수행하면 됩니다.
걱정하지 마십시오. 매우 간단하며 이동할 필요가 없습니다. 지침을 지켜보면 괜찮을 것입니다. 그러나 아마도 당신에게는 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라면 매우 간단할 것입니다.
이제 테스트를 위해 전체 프로세스를 수동으로 실행할 수 있습니다. 이렇게 하려면 아래 단계를 따르십시오.
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 자세한 지침이 있습니다.
기억하다! 민감한 데이터는 항상 리포지토리 외부에 보관하십시오.
그리고 그게 다야. 워크플로를 리포지토리로 푸시하고 첫 번째 자동 배포를 기다립니다. 몇 분 정도 소요됩니다(최대). 완료.
건배, 루카스.
Reference
이 문제에 관하여(AWS, PM2 및 Github 작업을 사용한 Node.js 앱 지속적 배포.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lukasborawski/node-js-app-deployment-with-aws-pm2-and-github-actions-31o2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)