노드의 PM2를 사용하여 CI/CD를 만드는 방법js 프로젝트

10483 단어 pm2nodetutorialcicd

왜?


너는 노드가 하나 있다.js 프로젝트는 로컬 컴퓨터에 있습니다. 그러나 원격 서버에 어떻게 배치하는지 모르거나, FTP를 사용하여 컴퓨터에서 원격 서버로 내용을 복사합니까?
좋아, 너는 PM2*를 사용하여 여기에 hooray gif를 삽입하여 이 과정을 자동화하여 너의 생활을 더욱 가볍게 할 수 있어*

뭐?


PM2는 노드의 프로세스 관리자입니다.js.Windows의 작업 관리자나 macOS의 활성 모니터와 같습니다.
응용 프로그램 관리, 확장, 시작, 정지 등을 포함할 수 있습니다.그러나 우리가 원하는 가장 중요한 기능은 배치다.
본고에서 우리는 응용 프로그램을 원격 서버에 배치하고 단일 컨트롤러 명령으로 실행하거나 구축하는 방법을 배울 것이다.

어떻게 써요?


1단계: 항목 만들기


우선, 우리는 분명히 하나의 항목이 필요하다.
우리는 폴더를 만들고 cd를 그 안에 넣었다.
mkdir pm2-deploy; cd pm2-deploy
그런 다음 폴더를 노드 항목으로 초기화합니다.
npm init -y
그런 다음 노드 환경에서 정적 파일을 제공하기 위해 설치express를 계속할 수 있습니다.
npm i express
코드를 작성하기 위해 JS 파일을 만들어야 하며, 만들어야 할 폴더 public 에 서비스를 제공해야 합니다.
루트 디렉터리에 만들었습니다 index.js.마음대로 이름을 바꿀 수 있지만, main 파일의 package.json 필드를 변경해야 한다는 것을 잊지 마십시오.
공공 폴더에 HTML 파일을 제공해야 합니다.
이제 파일 구조가 다음과 같습니다.

이것은 나의 색인이다.js

express는 public라는 정적 폴더와 3000 포트에 있는 내용에 서비스를 제공하고 있습니다.여기는 별거 없어요





index.html에서 우리는 특별한 일을 하지 않았다





지금
사용 가능



npm start

콘솔을 봐야겠어요.로그 출력은 PM2 Project is now live @ localhost:3000


우리는 그 항구에 가서 효과가 있는지 확인할 수 있다.브라우저에서 localhost:3000 로 이동합니다. YAY! 보시면 정말 좋습니다.p>

Step 2: Install PM2 globally


PM2 npm 패키지를 전 세계에 설치해야 합니다.우리는



npm i -g pm2

이제 3단계로 진입합니다


Step 3: Initialize git


버전 제어 시스템이 없으면 CI/CD를 보유할 수 없습니다. 그렇습니까?그래서 우리는 우리의 프로젝트를git 서비스로 미루어야 한다.Github을 사용하여 이 점을 실현하겠습니다


git 재구매 계약을 만들 때 기존 프로젝트를 어떻게 추진하는지에 대한 필요한 설명을 보실 수 있습니다

만일의 경우를 대비하여 다음과 같은 명령이 필요합니다:



git init
git remote add origin [email protected]:<your_github_username>/<your_repository_name>.git
git add .
git commit -m "Initial Commit"
git branch -M main
git push -u origin main

Note: I strongly recommend using SSH Connection instead of using HTTPS for Github. Your life will get better and securerer :)


Step 4: Configuring the remote machine


이 단계에서 가상 원격 기기를 만들거나 보존하는 방법에 대해 상세하게 설명하지는 않겠지만, EC2(AWS) 기기에서 Ubuntu를 사용하고 있음을 기억하세요


먼저, SSH를 사용하여 원격 기기에 연결해야 합니다


ssh -i path_to_key_file remote_username@remote_ip


nvm, npm가 설치되어 있다고 가정합니다. 없으면 여기서 nvm 리콜을 볼 수 있습니다. https://github.com/nvm-sh/nvm#installing-and-updating


여기서 중요한 일이 하나 있습니다.우리는 nvm가 추가한 회선을 우리의 회선으로 이동해야 한다.bashrc 파일을 맨 위에 놓으십시오.시스템이 사용 중일 수 있습니다.bash 프로필이나 다른 것들.nvm에 설치된 출력만 주의하세요


이것들은 우리가 이동해야 할 노선이다.가장 좋아하는 편집기를 열고 파일의 맨 위로 이동합니다



export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

파일을 저장하고 종료하면 PM2를 2단계처럼 설치할 수 있습니다


npm i -g pm2


설치 후


pm2 startup


는 원격 시스템을 다시 시작할 때마다 PM2를 자동으로 시작하는 방법을 간단하게 가르쳐 줍니다.나는 이렇게 하는 것을 강력히 건의한다


현재 PM2가 설치되어 있습니다. SSH 키를 만들어서 Github에 추가해야 합니다.


원격 기기에서
를 계속 입력할 수 있습니다



ssh-keygen -t ed25519 -C "<your_github_email>"

Further reading on how to create ssh key https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent


keygen이 열쇠 이름을 물어볼 거예요.만약 당신이 그것을 바꾸고 싶다면 (그렇게 하지 말라고 강력히 건의합니다) 당신은 여기에 완전한 경로를 제시해야 합니다


암호를 묻는 동안 Enter 키를 누르기만 하면 됩니다


키를 만든 후 공개 키의 내용을 복사해야 합니다



cat /home/ubuntu/.ssh/id_ed25519.pub

보신 텍스트를 계속 복사합니다. ssh- 로 시작하고, 전자 우편 (포함) 으로 끝냅니다.


Github에 로그인할 때 https://github.com/settings/keys로 이동한 다음 New SSH Key 단추를 누르십시오.제목을 지정하고 복사된 텍스트를 키 필드에 붙여넣을 수 있습니다


Github에 원격 기기를 연결할 수 있는 권한을 부여했습니다.그러나 Github에 한 번 만 연결하면 원격 기기의 신뢰받는 연결을 표시할 수 있습니다.이렇게 하려면 저장소를 원격 시스템으로 복제할 수 있습니다



git clone [email protected]:T410/pm2-deploy.git

물론, 이것은 당신의 사용자 이름과 당신의 환매 프로토콜 이름입니다

콘솔에서 연결을 계속할 것인지 물어볼 것입니다.입력yes종료 클릭하여 리턴


Note: We cloned the repo into the user folder. /home/ubuntu for me. Now the full project path is /home/ubuntu/pm2-deploy. We will use this path to update the ecosystem.config.js file in the next step.


이제 서버와의 원격 연결을 닫을 수 있습니다


Step 5: Configuring the ecosystem.config.js file


이제 원격 서버 &실행 중이며 프로젝트를 저장소로 푸시했기 때문에 PM2의 프로젝트가 어디에 있는지, 어떻게 처리되는지, 어디로 푸시되는지 알려주는 파일ecosystem.config.js이 올바르게 구성되어야 합니다


파일은 다음과 같습니다.





두 부분을 내보낼 것입니다:


  • 어플리케이션
  • 배포

name 부분의 apps 필드는 저희 프로젝트의 이름입니다. PM2 공정 목록에 표시됩니다


script 필드는 프로젝트를 원격 서버에 배치할 때 PM2가 실행하는 스크립트입니다.이 예에서는 main 파일의 package.json 필드와 같습니다


나머지 필드는 모두 자명합니다


  • user는 SSH
  • 를 사용하여 원격 서버에 연결하는 사용자 이름입니다.
  • host 원격 서버
  • 의 IP
  • path 프로젝트를 원격 서버의 어디에 배치하시겠습니까?원격 서버에 리포를 복제했다는 것을 기억하십시오.우리는 여기에 이 경로를 쓸 수 있다
  • repo는 저장소 URL이며 유사한 형식git:github.com:/user/repo.git
  • ref는 참고 지점이다.원격 서버에서 어떤 Spoke를 사용하길 원합니까
  • key는 SSH
  • 로 기기를 연결하는 키의 로컬 경로입니다.
  • "post-deploy" Github
  • 에서 리포를 추출한 후 원격 기기에서 실행될 명령을 수신

Step 6: Deploying


우리는 이미 기계와 PM2를 배치했다.이제 원격 시스템에 프로젝트를 배포할 수 있습니다


배치하기 전에 변경 사항을 제출하고 추진해야 합니다.그런 다음 첫 번째 실행에 대해 프로젝트를 설정해야 한다는 사실을 PM2에 알려야 합니다



pm2 deploy ecosystem.config.js production setup

이 명령을 통해 PM2는 원격 장치에 연결되며 Github 클론 리포에서 실행됩니다.우리는 이제 이 프로젝트를 배치할 수 있습니다



pm2 deploy ecosystem.config.js production




지금 당신은 자신에게 묻는다:지금 어떻게 해요

응, 우리는nginx와 같은 서버를 설치하지 않았지만, 프로젝트가 curl와 함께 작동하는지 테스트할 수 있어.물론 이 일을 하기 전에 우리는 원격 기계에 연결해야 한다



curl http://localhost:3000

색인을 보신다면.화면에 있는 html 출력은 좋은 소식입니다!네가 해냈어


이 명령으로 실행되는 프로그램 PM2



pm2 ls

Conclusion


우리는 이곳에서 매우 큰 진보를 이루었다.우리는 하나의 명령으로 우리의 프로젝트를 배치하는 방법을 배웠다


다음은 환매 협의의 예:





Description


이 자습서의 PM2 구성 방법ecosystem.config.js 파일을 보여 주는 예제 항목입니다.






nginx를 설치하고 우리 프로젝트에 사용할 포트에 서비스를 제공하는 방법을 알려주지 않았지만, 머지않아 이렇게 하고 여기서 업데이트할 것입니다


질문이 있으면 언제든지 댓글에 질문이 있는지 알려주세요

좋은 웹페이지 즐겨찾기