해결된 질문
작성
·
165
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 인턴입니다.
두뇌풀가동님의 질문과 관련하여, 배포 과정 중에 npm install
시 Tracker "idealTree" already exists
와 같은 npm 관련 오류가 발생하는 경우와 PM2 관련하여 프로세스가 정상적으로 찾지 못하는 문제를 겪고 계신 것 같습니다.
npm install
오류: 이는 대부분의 경우 하나의 인스턴스에서 여러 npm 프로세스가 동시에 실행되어 발생할 수 있습니다. 또는 특정 오류로 인해 npm 내부적인 충돌이 발생했을 수도 있습니다.pm2 list
에서 에러를 발견: pm2로 Node.js 애플리케이션을 관리하는 과정에서 정상적으로 애플리케이션 실행에 실패하였거나, pm2 설정 자체에 문제가 있는 경우일 수 있습니다.이와 유사한 문제를 해결한 기존의 답변을 참조하시면 도움이 될 것 같습니다. 아래는 그런 경우에 대한 해결책의 예시입니다:
npm 오류 해결: npm 오류와 관련한 구체적인 해결 방안에 대한 질문은 제가 직접적인 링크를 제공드리기 어렵지만, 일반적으로 npm cache clean --force
명령어 실행 후 다시 npm install
시도를 권장합니다. 이러한 방법은 npm 관련 오류 시 흔히 시도하는 해결책 중 하나입니다.
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
파일 내 경로명을 일치시켜 주시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0
감사합니다~!! 경로도 문제였지만.. cache부분도 문제가 되어서 배포시 ApplicationStart가 무한 진행이 있었습니다. cache clean을 통해 해결하였습니다~!!