# pm2

114개의 포스트
post-thumbnail

Ubuntu 20.04 버전에 NVM, Node, mysql,pm2 설치하기

설치하고자 한 이유 > 현재 사이드 프로젝트 안에서 사용할 DB를 배포를 해야 했습니다. 그러기 위해선 nvm, mysql, pm2, node , yarn까지 전부 설치해야 했습니다. 수많은 시행착오 끝에 성공했기 때문에 이렇게 블로그를 작성해봅니다. 혹시나 본인의 우분투 버전이 헷갈린다? 20.04 버전이 맞나..싶다면 mysql 설치 순서대로 진행하시면 mysql 5.7 버전을 설치할 수 있습니다. mysql 5.7 저장소 추가하기. 2.저장소 설치하기. 이 명령어를 입력하면 분홍색 화면이 나옵니다. 당황하지 않고 abort를 누르시면 절!대! 안됩니다. 그러면 5.7버전 설치를 할 수가 없습니다...ㅠ 여기 나온 순서대로 선택 해주시면 되겠습니다. 이 때 비밀번호를 설정하게 되는데 원하는 비밀번호로 잘 설정하시길 바랍니다. 설치가 끝났다면 apt 저장소를 업데이트 합니다. 아래와 같은 오류가 발생할 것입니다.

2023년 8월 28일
·
0개의 댓글
·
post-thumbnail

AWS EC2와 Github Actions로 NEXT.JS 배포하기 (3)

1. Github Secret 등록 깃허브에 AWS 시크릿 키와 시크릿 ACCESS 키를 등록해줘야 한다. git에서 Settings에 들어가면 저장소 키를 등록할 수 있다. 우리는 여기에 등록이 필요하다. ACCESSKEY와 SECRETACCESS_KEY 는 IAM 사용자의 키이다. ![](https://velog.velcdn.com/i

2023년 8월 26일
·
0개의 댓글
·
post-thumbnail

AWS EC2와 Github Actions로 NEXT.JS 배포하기 (2)

1. CodeDeploy Agent 설정하기 CodeDeploy Agent 를 설정해야 자동배포를 사용할 수 있다. AWS 문서에 자세히 나타나있는데 명령어 그대로 사용하면 설치가 끝난다. 먼저 EC2 instance 에 접속한다. 다음 명령어를 차례대로 실행한다. 그 후 ubuntu 폴더에 접근한다. bucket-name과 region-identifier 에 따른 설치 과 는 동적인 값이며 [여기서](http

2023년 8월 26일
·
0개의 댓글
·
post-thumbnail

AWS EC2와 Github Actions로 NEXT.JS 배포하기 (1)

1. AWS IAM 추가하기 가장 먼저 IAM에서 배포를 위해 사용자를 생성해야 한다. AWS에서 배포를 하기 위해 권한을 추가해야 하는데 이를 위해 사용자를 생성해야 한다. 1-1. 사용자 생성 (나는 이미 배포를 했기 때문에 아래처럼 미리 사용자가 생성되어 있다.) '사용자 생성' 버튼을 통해 원하는 이름과 사용자를 만든다. 그후에 직접

2023년 8월 26일
·
2개의 댓글
·
post-thumbnail

[포스코x코딩온] KDT-Web-8 7주차 회고4 토이프로젝트 <슬랙봇을 활용한 스터디 리마인더>

📚 서론 평일에 갑자기 찾아온 휴일 (광복절).. 지난 회고편 이후 달라진 마음가짐으로 블로깅을 하던 찰나 재밌는 생각이 들었다. 지금 ec2, rds 등을 어떻게 쓰는지 배워밨으니 써봐야 하지 않을까? 여기서 ec2와 nodejs 를 사용하는 간단한 토이프로젝트로 뭘 해볼수 있을까? 나는 지금 몇몇 크루원들과 함께 리액트 스터디를 진행중이다. 이 스터디에서의 Ground-Rule 은 주에 2회이상 리액트에 관한 자유주제를 잡고 블로깅등 학습증명을 하자는 것과 위반 2회시 다른 크루원에게 젤라또를 사주자는 것이다. 슬랙에 채널을 하나 만들어서 블로깅 링크를 올리고 [깃허브 레포](https://github.com/S

2023년 8월 15일
·
0개의 댓글
·
post-thumbnail

Nextjs를 github action, EC2, pm2로 CI/CD 구축하기(5)

이번 글에서는 목표는 다음과 같다. CodeDeploy 동작 정의하기 EC2에 pm2, nodejs 설치하기 Swap File을 이용해서 EC2 RAM늘려주기 80번 포트로 EC2에 요청 들어오면 3000번 포트로 연견할도록 포트포워딩 해주기 pm2로 Nextjs App 구동시키기 CodeDeploy의 동작을 정의해보자. CodeDeploy의 동작은 프로젝트 폴더 내에서 appspec.yml이란 파일을 통해 정의한다. 반드시 파일명은 appspec.yml이어야 한다. AWS에는 CodeCommit, CodeBuild, CodeDeploy와 같은 서비스가 있는데 CodeBuild는 buildspec.yml을 통해 동작을 정의하고, CodeDeploy는 appspec.yml을 통해 정의한다. 파일의 위치는 프로젝트 root 폴더에 놓자. ![](https://velog.velcdn.com

2023년 8월 10일
·
0개의 댓글
·
post-thumbnail

Nextjs를 github action, EC2, pm2로 CI/CD 구축하기(4)

이제는 github action을 작성할 차례이다. github action에서는 다음과 같은 동작을 작성할 것이다. Nextjs App 빌드하기 Nextjs App 파일들을 압축해서 S3에 저장하기 - node_modules는 제외 S3에 파일이 올라가면 CodeDeploy 트리거하기 - 동작을 정의한 것이 아님. Github action은 프로젝트 root폴더에 .github/workflows폴더 안에서 작성해준다. 이때 파일 확장자는 yml이다. 어떤 동작을 하는지는 주석으로 작성했으니 vscode에 복붙해서 확인해보자. 이렇게 하면 github action은 작성이 완료되었다. 레포지토리의 action탭에서 결과를 확인해보자 초록색 바탕의 체크 표시가 있다면 성공적으로 작동한 것이다. S3에서도 압축된 파일이 올라간 것을 확인 할 수 있다. ![](https://velog.velcdn.com/images/

2023년 8월 10일
·
0개의 댓글
·
post-thumbnail

React+Node.js 프로젝트 배포하기, mongoDB연결, 환경변수 설정(feat. pm2)

휴우 다시 이어나가보겠습니다. 4. 서버 실행 npm start 잘 실행되는지 확인하고.. pm2 설치하러 갑시다. 5. pm2 로컬에서 계속 서버를 실행하고 있을 순 없습니다. 그래서 Node.js의 프로세스 매니저 pm2가 필요합니다 프로세스를 계속 실행하게 도와주는 프로세스 매니저! 1) pm2 설치 2) pm2 실행 app.js가 있는 폴더로 이동하여 위 명령어를 통해 서버를 실행합니다. index.js면 pm2 start src/index.js로 > pm2 명령어 pm2 list => 리스트 확인 pm2 stop [pm2 name] => pm2 중지 pm2 restart [pm2 name] => pm2 재시작 이제 배포 서버에서 아주 잘 돌아가는 모습을 보실 수 있을 거예요! 앗차차 aws ec2 인스턴스 보안그룹 설정하는 것도 잊지 마세요 앗차차 mongoDB Network Access에 0.0.0.0

2023년 7월 26일
·
0개의 댓글
·
post-thumbnail

aws를 이용한 pm2 실행

시작하기 aws인스턴스 pm2 ubuntu 실행 순서 마무리 [시작하기] 배운것을 복습한다는 의미로 다시 한번 똑같이 했으나 오류가 생겨서 나중에 이를 잊지 않기 위해서 블로그에 남깁니다. [aws인스터스] 이 내용은 많은 곳에서 자세하기 다루고 있기에 검색하여 진행했습니다. pem키를 받으면 따로 폴더에 저장하고, iterm으로 pem이 있는 폴더로 이동 그리고 나서 ssh -i pem이름.pem ubuntu@IPv4주소 를 넣은후 실행 아래와 같은 문제가 뜰 경우에는 Permissions 0644 for ‘pem명.pem’ are too open. (pem 파일의 권한 0644는 너무 많이 오픈되어있다.) 라는 의미이고, 보다 안전하게 관리해야 할 pem 파일에 너무 많은 권한이 주어졌을 경우 발생하는 경고이다. > chmod 400

2023년 7월 1일
·
0개의 댓글
·
post-thumbnail

11. Ubuntu 환경 pm2 / nginx / MongoDB / Next.js 프로젝트 배포

프로젝트 제작의 최종 목표인 서버를 제작해, 해당 서버에서 배포하는 과정을 진행해보고자 한다. 굉장히 중요한 과정이면서도 가장 어려웠던 과정이라고 말할 수 있을 것 같다. Ubuntu 환경을 모르는 것은 아니지만 익숙하지 않았고, 개발 과정에서 에러가 발생하는 것과 달리 배포 과정은 정말 다양한 시행착오가 있기 때문이다. 그럼 어떠한 방식으로 배포 과정이 이루어졌는지 정리해보고자 한다. 최종 결과는 http://www.snuvess.kro.kr 이다. Ubuntu 환경 세팅 Ubuntu 설치 먼저 동아리 방에 서버로 사용될 컴퓨터를 세팅해야 한다. 서버용 컴퓨터를 따로 이용하면 좋겠지만 아쉽게도 동비가 여유롭지는 않아 컴퓨터를 사기는 어려웠다. 따라서 집에서 사용하지 않는 노트북을 가져와서 동아리방에 설치한 뒤에 사용하기로 했다. 기본 노트북의 OS는 윈도우 베이스여서 파티션을 분리하여 Ubuntu를 따로 설치하여

2023년 6월 7일
·
0개의 댓글
·
post-thumbnail

[Nogwari] EC2 서버 포트 번호 지우기 & pm2

▶ :3000 을 지우자! 당연히 내가 3000포트에서 실행주고 있기 때문에 3000포트로 접속해야 페이지 접속이 가능하다. 하지만 보통 웹페이지에 접근할 때는 뒤에 포트번호가 붙지 않는다. 여기서 우리가 알아야 할 건 일반적으로 우리가 웹페이지에 접속할 때는 기본 포트가 뒤에 붙어있는데, http의 경우 : 80 https의 경우 : 443 이다. 기본 포트는 보이지 않도록 설정되있기 때문에 위 포트로 접속하면 포트는 보이지 않는다. http 프로토콜로 접속한 사이트에 :80 을 붙여도 80이라는 포트가 보이지 않게 된다는 것이다. 그렇기에 80 포트로 연결됐을 때 3000 포트로 리다이렉트만 해주면 된다. 아래는 그 명령어이다. sudo iptables

2023년 6월 2일
·
0개의 댓글
·
post-thumbnail

Next.js EC2 배포 + PM2 활용한 무중단 배포

Next.js로 만든 프로젝트는 Vercel을 사용하면 간단하게 배포할 수 있지만 (+ 자동으로 HTTPS, 국내 CDN이 적용된 상태로 배포된다..!) 배포 제한 사항에 걸린다거나(무료 사용자 기준으로 메모리 제한, 하루 당 빌드 개수 제한, Serverless Functions 관련 제한 등이 있다) 좀 더 커스텀 하고 싶다면 자유도가 높은 AWS를 선택할 수 있다. 1. EC2 인스턴스 생성 1. 인스턴스 시작 EC2 대시보드에서 인스턴스 시작 클릭 > 2. AMI(Amazon Machine Image) 선택 용도에 맞는 운영체제와 소프트웨어를 선택한다. 보통 Ubuntu Server 18.04 LTS를 많이 선택하던데 이제는 사라진 것인지 찾을 수가

2023년 5월 17일
·
0개의 댓글
·

pm2 로 Next.js 실행하기

상황 pm2 로 React+Next.js 로 구성된 어플리케이션를 무중단 배포 하고자 함. 방법 build 먼저, 어플리케이션 build를 실행 함. 또는 package.json의 scripts에 prestart를 다음과 같이 추가 해주면 npm start 를 실행 할 때 자동으로 prestart가 먼저 실행되고, prestart의 명령대로 build가 이루어져 npm run build를 따로 실행 안 해도 됨. package.json pm2 등록 package.json cmd 위의 명령어 실행 후 사이트 접속 했을 경우, 페이지가 나타나지 않으면 제대로 실행이 되지 않은 것이다. ( pm2 목록은 생성 되었으나

2023년 4월 18일
·
0개의 댓글
·
post-thumbnail

[Node.js] PM2 실시간으로 업데이트 되지 않는 버그? (pm2 start 명령어)

pm2 버그?(인줄알았던,,, feat.바보) 오늘 Node.js Express 활용 실습을 하다가, pm2라는 매우 유용한 프로세스 관리 도구를 설치해서 사용해보았다. 나는 Node.js를 수정했을 때, 잘 적용되었는지 로컬에서 확인할 때마다 수정된 파일을 저장하고, ctrl + c를 눌러 서버를 종료한 뒤 다시 서버를 실행시켜 수정사항을 확인했었다. 그런데 PM2를 사용하면 서버를 무중단시키고 수정 사항을 반영할 수 있다! 생산성 올라가는 소리 들리시나요..? https://www.npmjs.com/package/pm2 1. 설치 방법 npm install pm2 -g : 전역 설치 만약 권한이 없다는 오류가 뜬다면, sudo install pm2 -g로 설치해보자.

2023년 4월 9일
·
0개의 댓글
·

AWS 배포

1) 인스턴스 시작시 ubuntu server 18.04 LTS 인스턴스 타입 t2.micro(프리티어사용가능) 새 키페어 생성 : 키페어 이름 입력, 잘 보관 +) 인바운드 규칙편집 http anywhere IPv4 80 22는 기본 2) 터미널에서 EC2 접속하기 참고) 리눅스 명령어 3) Node설치 참고) MongoDB 설치 4) EC2 인스턴스에서 서버 프로그램 실행 및 웹사이트 접속 5) pm2 설치 참고: PM2 CLI 명령어 모음 6) 도메인 연결 가비아 마이페이지 -> DNS 관리 -> 도메인 연결 -> DNS 설정 클릭 -> 호스트 이름에 @ IP주소에 EC2 instance의 IP 입력

2023년 4월 8일
·
0개의 댓글
·

PM2 ↔ NginX 504 Gateway Time-out

프론트에서 Ajax jQuery 이용해서 POST 요청 보내는 도중에 504 Gateway Time-out이 발생했었다 Text는 아무 문제 없었는데 유독 Image를 이용한 POST 요청만 Timeout이 나서 찾아봤는데 PM2와 NginX 사이가 잘 작동하지 않아서 일어나는 문제라고 한다 Stack Overflow에 따르면 이 두 줄을 NginX 설정에 추가해주면 된다고 하나 나는 이 두 줄을 추가해도 해결되지 않았고 아래 다섯 줄을 추가해서 해결할 수 있었다 설정에 참고한 문서 stack overflow [serverfault](https://serverfault.com/questions/943810/nginx-pm2-nodejs-reverse-proxy-with-ssl-gives-http-50

2023년 3월 29일
·
0개의 댓글
·

EC2 용량 관리하기

Saas프로젝트를 진행하며 PM들이 마케팅을통해 유저를 유입시켜 동시사용자수가 200여명을 넘어갈때쯤 다음과같은 문제가 발생했다. 인스턴스의 디스크가 꽉 찬것으로보이나 프리티어를 사용하고있는상황이고 스펙업을하기에는 개인적으로 부담해야하는 금액이 커져서 최대한 용량을 확보해보기로했다. 먼저 PM2에 쌓이는 로그를 정리하기로했다. (비활성화하는방법은X) 순서대로 size는 log용량을 제한하는 옵션. 로그 파일을 매일 회전. 7일 동안 로그 파일을 보관. 오래된 로그 파일을 압축. 현재 로그 파일이 아닌 이전 로그 파일만 압축. 로그 파일이 없으면 무시하고 진행. 로그 파일이 비어 있으면 회전하지 않음. 이제 PM2 이외의 디스크 공간을 정리해보자. 디스크용량 확인 이 명령어는 루트 디렉토리에서 시작하여 모든 디렉토리와 파일의 디스크 사용량을 계산하고, 사용량이 가장 큰 항목 10개를 내림차순으로 출력한다. 로그 파일이 많

2023년 3월 26일
·
0개의 댓글
·
post-thumbnail

[AWS EC2] 배포를 해야 하는데, 막막할 때 (feat. pm2, NGINX, Certbot, Route53)

이번에 개인 프로젝트 배포를 어떻게 하였는지, 배포할 때 마주쳤던 것들을 위주로 적을 예정이다. 필자는 NextJS를 이용한 개인 프로젝트를 배포해야 했고, 가비아에서 도메인을 구입한 상황이다. https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home 위 링크에 들어가서 인스턴스 시작을 할 것이다. 1. 인스턴스 생성 인스턴스 시작을 누르면 생성창으로 이동하게 되는데, 이 부분은 사실 다른 글들과 유사하다. 그저 따라오기만 하면 되는 부분이라고 볼 수 있다. > ### 1-1. 이름과 OS 설정 ![](https://velog.velcdn.com/images/sung-je-kim/post/95baaab9-a602-48a7-

2023년 3월 22일
·
4개의 댓글
·
post-thumbnail

next.js 프로젝트를 pm2 + ec2를 활용해서 배포하기

개요 next.js 기반으로 만든 프로젝트를 ec2상에 배포하면서 백그라운드 배포를 위해 pm2를 사용하였다. pm2 start 명령어로 배포하는것 까지는 쉽게 가능 하였는데, pm2의 deploy를 활용하는 과정중 여러 트러블을 겪어 정리하고자 한다 SSH 연결 가능하게 하기 > 맥 OS 기준으로 작성된 문서 입니다 pm2 deploy에서는 ssh 연결을 사용해서 git과 ec2에 접속하기 때문에 사전 설정을 해줄 필요성이 있다. ec2상에서 배포가 진행되어야 하니 ec2에 접속해야 한다. (접속하는 방법은 관련 리소스가 많으니 생략) 접속 후 첫번째로 git repo에 ssh 공개키를 등록하여야 하므로 ssh-keygen을 통해 키를 생성해준다 $ ssh-keygen -t ed25519 -C "your_email@example.com" ed25519를 지원하지 않는 레거시 시스템에서는 다음과 같은 명령어를 입력해준다 `$ ssh-keygen -t rsa -b

2023년 3월 22일
·
0개의 댓글
·

20210109 - 포트폴리오 프로젝트가 뻗었다.

EC2 인스턴스가 뻗었다... 고치려고 건드리다가 종료를 눌러버렸다. 아니 이게 삭제인 걸 좀 알려주면 안 되나? 하여튼 인스턴스를 새로 만들었다.. pm2를 깔아서 실행시키는 건 기억나는데 의외에 어떤 세팅을 했었는지 기억이 안 난다. 좀 더 상세하게 기록해둘 걸 그랬다. 당시에 오류를 고치기 너무 급급해서 이것저것 썼었는데 머리가 어질어질하다... 다시 하면서 생각난 게 ec2 인스턴스를 깔고 노드를 업데이트해줘야 한다. 웬만한 요즘 프로젝트에서 쓰는 노드는 10.x니까 8.x인 ec2 인스턴스의 노드는 못 써먹는다. > curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - > sudo apt-get install -y nodejs 노드 업데이트 > sudo npm install -g npm npm 업데이트 permission denied error <- 이거 너무 당황하지 말자 그냥 sudo 안써서 그럴 확률이

2023년 3월 21일
·
0개의 댓글
·