인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

두뇌풀가동님의 프로필 이미지

작성한 질문수

비전공자도 이해할 수 있는 CI/CD 입문·실전

[실습] 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법

배포는 성공하지만, pm2 list를 확인해보면 에러가 발생이 되어있습니다.

해결된 질문

작성

·

308

0

해당 부분을 응용해서, aws linux / next.js를 진행하고 있었습니다.

앞선 강의는 잘 되었으나, 해당 강의해서 어려움을 겪게되어 질문을 남기게 되었습니다.

우서 배포를 확인해보니 성공, s3버킷에는 압춗파일이 잘 올라갔습니다.

ls를 통해서 디렉토리까지 생성이 되는것을 확인하였습니다.

하지만 node_modules가 설치가 안되어 log를 확인해보니,

아래와 같은 에러가 발생합니다. 혹시 설정에 문제가 있을까요?

 

cd: /home/ec2-user/instantgram-server: No such file or directory
2024-08-12 15:00:19 [stderr]npm ERR! Tracker "idealTree" already exists
2024-08-12 15:00:19 [stderr]
2024-08-12 15:00:19 [stderr]npm ERR! A complete log of this run can be found in: /home/ec2-user/.npm/_logs/2024-08-12T15_00_19_547Z-debug-0.log
2024-08-12 15:00:20 [stdout][PM2] Spawning PM2 daemon with pm2_home=/home/ec2-user/.pm2
2024-08-12 15:00:20 [stdout][PM2] PM2 Successfully daemonized
2024-08-12 15:00:20 [stderr][PM2][WARN] No process found
2024-08-12 15:00:20 [stdout][PM2] [v] All Applications Stopped
2024-08-12 15:00:20 [stdout][PM2] [v] PM2 Daemon Stopped
2024-08-12 15:00:21 [stdout][PM2] Spawning PM2 daemon with pm2_home=/home/ec2-user/.pm2
2024-08-12 15:00:21 [stdout][PM2] PM2 Successfully daemonized
2024-08-12 15:00:21 [stdout][PM2] Starting /usr/bin/npm in fork_mode (1 instance)
2024-08-12 15:00:21 [stdout][PM2] Done.
#appspec.yml
version: 0.0
os: linux

files:
  # S3에 저장한 파일들 중 destination(AWS EC2)으로 이동시킬 대상을 지정한다.
  # / 이라고 지정하면 S3에 저장한 전체 파일을 뜻한다.
  - source: /
    # EC2의 어떤 경로에 저장할 지 지정한다. 
    destination: /home/ec2-user/instagram-server

permissions:
  - object: /
    owner: ec2-user
    group: ec2-user

hooks:
  ApplicationStart:
    - location: scripts/start-server.sh
      timeout: 60
      runas: ec2-user
#deploy.yml
name: Deploy To EC2

on:
  push:
    branches:
      - master

jobs:
  Deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Github Repository 파일 불러오기
        uses: actions/checkout@v4 # Github Repository의 파일을 가져오는 Action

      - name: Node.js 설치
        uses: actions/setup-node@v4 # Node.js를 설치하는 Action
        with:
          node-version: 18.x # Node.js 버전

      - name: 의존성(라이브러리) 설치
        run: npm ci # npm ci는 package-lock.json에 있는 의존성을 설치하는 명령어

      - name: .env 파일 만들기
        run: |
          echo '${{ secrets.ENV }}' > .env

      - name: 테스트 코드 실행
        run: npm run test

      - name: 빌드
        run: npm run build # 빌드

      - name: 압축하기
        run: tar -zcvf $GITHUB_SHA.tar.gz appspec.yml scripts public .next .env package.json package-lock.json # 압축

      - name: AWS Resource에 접근할  있게 AWS credentials 설정
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-region: ap-northeast-2
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCRESS_KEY }}

      - name: S3에 프로젝트 폴더 업로드하기
        run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.tar.gz s3://instagram-server-s3/$GITHUB_SHA.tar.gz

      - name: Code Deploy를 활용해 EC2에 프로젝트 코드 배포
        run: aws deploy create-deployment
          --application-name instagram-server
          --deployment-config-name CodeDeployDefault.AllAtOnce
          --deployment-group-name Production
          --s3-location bucket=instagram-server-s3,bundleType=tgz,key=$GITHUB_SHA.tar.gz
#start-server.sh
#!/bin/bash

echo "-----------------서버 바로 배포 시작-----------------"
cd /home/ec2-user/instantgram-server
npm i
pm2 kill
pm2 start npm --name "my-next-app" -- start
echo "-----------------서버 바로 배포 끝-----------------"

답변 2

1

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

두뇌풀가동님의 질문과 관련하여, 배포 과정 중에 npm installTracker "idealTree" already exists와 같은 npm 관련 오류가 발생하는 경우와 PM2 관련하여 프로세스가 정상적으로 찾지 못하는 문제를 겪고 계신 것 같습니다.

문제점 정리:

  1. npm install 오류: 이는 대부분의 경우 하나의 인스턴스에서 여러 npm 프로세스가 동시에 실행되어 발생할 수 있습니다. 또는 특정 오류로 인해 npm 내부적인 충돌이 발생했을 수도 있습니다.
  2. pm2 list에서 에러를 발견: pm2로 Node.js 애플리케이션을 관리하는 과정에서 정상적으로 애플리케이션 실행에 실패하였거나, pm2 설정 자체에 문제가 있는 경우일 수 있습니다.

이와 유사한 문제를 해결한 기존의 답변을 참조하시면 도움이 될 것 같습니다. 아래는 그런 경우에 대한 해결책의 예시입니다:

  1. npm 오류 해결: npm 오류와 관련한 구체적인 해결 방안에 대한 질문은 제가 직접적인 링크를 제공드리기 어렵지만, 일반적으로 npm cache clean --force 명령어 실행 후 다시 npm install 시도를 권장합니다. 이러한 방법은 npm 관련 오류 시 흔히 시도하는 해결책 중 하나입니다.

  2. PM2 문제 해결: PM2와 관련하여, PM2 공식 문서를 참고하시면 기본적인 사용법 및 문제 해결 팁을 얻으실 수 있습니다. 특히, pm2 list에서 에러를 발견하는 경우, pm2 logs를 통해 상세 로그를 확인하고, 올바른 디렉토리에서 PM2를 시작했는지 확인하는 것이 중요합니다.

또한, start-server.sh 스크립트에 나타난 cd /home/ec2-user/instantgram-server 명령어가 있으나, appspec.yml 파일 내 destination 경로는 /home/ec2-user/instagram-server로 설정되어 있습니다. 경로명이 일치하지 않아 발생하는 문제일 수 있으므로, 스크립트와 appspec.yml 파일 내 경로명을 일치시켜 주시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

두뇌풀가동님의 프로필 이미지

감사합니다~!! 경로도 문제였지만.. cache부분도 문제가 되어서 배포시 ApplicationStart가 무한 진행이 있었습니다. cache clean을 통해 해결하였습니다~!!

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 두뇌풀가동님!

해결하셨다니 다행이네요👍

나중에 또 궁금한 점 생기시면 언제든 질문 남겨주세요~