nextjs pm2를 이용하여 배포 해보았습니다 .
package.json 설정
"scripts": {
"dev": "next",
"build": "cross-env ANALYZE=true NODE_ENV=production next build",
"start": "cross-env NODE_ENV=production next start -p 80"
},
Aws 로그인 Ec2 -> 인스턴스 시작

Ubuntu Server 20.04 LTS (HVM), SSD Volume Type 선택하였습니다.

보안 그룹 구성에서 HTTP, HTTPS 추가 검토 및 시작 버튼 을 클릭 !

새 키페어를 생성해서 키페어를 다운로드 합니다 . 하나의 이름으로 딱 한번만 다운 받을 수 있으니 (주의)
다운을 받으면 .pem 파일이 생성된다 → github에 절대 올라가면 안됩니다!
다시 인스턴스 목록이 보이는 페이지로 돌아와 선택 후 상단에 연결 버튼을 누릅니다.

ec2 인스턴스 연결 or ssh를 통하여 접속한다. (ssh로 접속하려면 해당 프로젝트 폴더에 .pem 폴더가 있어야함)
aws의 ec2 -> 해당 프로젝트 -> 연결 버튼을 누르면 SSH 클라이언트 쪽에서 ssh로 시작되는 주소를 복사해서 프로젝트 경로에서맥북이면 sudo + ssh로 시작하는 복사한 코드를 붙여 넣어준다
이제 서버에 node를 설치해준다.
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install curl
curl -sL <https://deb.nodesource.com/setup_16.x> | sudo -E bash --
sudo apt-get install -y nodejs
설치 후 git clone 을 하여 레파지토리를 가져와서 npm run build
실행해도 안되는 경우 죽이고 해본다 .. ! sudo npx pm2 kill
sudo npx pm2 start npm -- start && sudo npx pm2 monit
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /usr/bin/npm in fork_mode (1 instance)
[PM2] Done.
//이게 나와야 백그라운드로 실행되는 것이다 무중단
삽질을 너무 많이했다 ...
1. env 파일이 없다는 걸 인지하지 못하고 왜 배포된 사이트가 api requset 주소가 이상하지 ..? 라고 생각했다 vim 으로 env를 설정하자
2. 빌드하다가 에러가 발생을 하면 에러를 해결해서 다시 빌드를 해줘야하는 데 에러 찾는게 너무 힘들었다 .
3. Error: EACCES: permission denied, mkdir '/root/.pm2/logs' -- 해결하는데 오래걸렸다.. 검색하여 다 해보았지만 되지 않아 노드재설치 후 해결
-참고자료-
'React > nextjs' 카테고리의 다른 글
정적 페이지 업데이트하기 - ISR (0) | 2023.02.15 |
---|
nextjs pm2를 이용하여 배포 해보았습니다 .
package.json 설정
"scripts": {
"dev": "next",
"build": "cross-env ANALYZE=true NODE_ENV=production next build",
"start": "cross-env NODE_ENV=production next start -p 80"
},
Aws 로그인 Ec2 -> 인스턴스 시작

Ubuntu Server 20.04 LTS (HVM), SSD Volume Type 선택하였습니다.

보안 그룹 구성에서 HTTP, HTTPS 추가 검토 및 시작 버튼 을 클릭 !

새 키페어를 생성해서 키페어를 다운로드 합니다 . 하나의 이름으로 딱 한번만 다운 받을 수 있으니 (주의)
다운을 받으면 .pem 파일이 생성된다 → github에 절대 올라가면 안됩니다!
다시 인스턴스 목록이 보이는 페이지로 돌아와 선택 후 상단에 연결 버튼을 누릅니다.

ec2 인스턴스 연결 or ssh를 통하여 접속한다. (ssh로 접속하려면 해당 프로젝트 폴더에 .pem 폴더가 있어야함)
aws의 ec2 -> 해당 프로젝트 -> 연결 버튼을 누르면 SSH 클라이언트 쪽에서 ssh로 시작되는 주소를 복사해서 프로젝트 경로에서맥북이면 sudo + ssh로 시작하는 복사한 코드를 붙여 넣어준다
이제 서버에 node를 설치해준다.
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install curl
curl -sL <https://deb.nodesource.com/setup_16.x> | sudo -E bash --
sudo apt-get install -y nodejs
설치 후 git clone 을 하여 레파지토리를 가져와서 npm run build
실행해도 안되는 경우 죽이고 해본다 .. ! sudo npx pm2 kill
sudo npx pm2 start npm -- start && sudo npx pm2 monit
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /usr/bin/npm in fork_mode (1 instance)
[PM2] Done.
//이게 나와야 백그라운드로 실행되는 것이다 무중단
삽질을 너무 많이했다 ...
1. env 파일이 없다는 걸 인지하지 못하고 왜 배포된 사이트가 api requset 주소가 이상하지 ..? 라고 생각했다 vim 으로 env를 설정하자
2. 빌드하다가 에러가 발생을 하면 에러를 해결해서 다시 빌드를 해줘야하는 데 에러 찾는게 너무 힘들었다 .
3. Error: EACCES: permission denied, mkdir '/root/.pm2/logs' -- 해결하는데 오래걸렸다.. 검색하여 다 해보았지만 되지 않아 노드재설치 후 해결
-참고자료-
'React > nextjs' 카테고리의 다른 글
정적 페이지 업데이트하기 - ISR (0) | 2023.02.15 |
---|