▶ forground process (node app.js
실행 시) : 터미널 끄면 같이 꺼짐
▶ background process : 터미널 꺼도 안 꺼짐 (pm2
)
[prepare/back
]
sudo node server.js
▶ ubuntu는 80번 포트로 접속할 권한이 없음(sudo su
나 root
로 진행해야 함)
▶ 결과 2) 배포 후 로그인 시 로그인은 되나 바로 로그인이 풀려버리는 것이 그 이유
(참고 : 로그인할 때 쿠키가 안 들어가집니다.)
sudo su
후 진행npm i -g pm2
vim package.json
"start": "node server.js"
에서 "start": "pm2 start server.js
npm start
npx pm2 monit
npx pm2 kill
server.js
if (process.env.NODE_ENV === "production") {
app.use(morgan("combined"));
app.use(hpp());
app.use(helmet());
app.use(
cors({
origin: [ "가비아에서 산 주소", "http://localhost:3000"],
credentials: true,
})
);
} else {
app.use(morgan("dev"));
app.use(
cors({
origin: "http://localhost:3000",
credentials: true,
})
);
}
package.json
"start": "cross-env NODE.ENV=production pm2 start server.js"
* git 오류 : git pull 시 Aborting
(참고 : 로컬 브랜치와 충돌로 인해 pull 오류 발생 시 대처법)
1. HEAD 되돌리기
git reset --hard HEAD
git pull
2. git stash로 스택 쌓고(임시 저장) 이후 수정한 내용 복구 가능
git stash
git pull
▶ 했던 작업 다시 가져오기 (참고 블로그)
git stash apply
▶ 했던 작업 제거하기
git stash drop
▶ stash 되돌리기
git stash show -p | git apply -R
3. git reset --hard
사용하기(이걸 주로 이용함)
▶ 현재 작업 위치인 HEAD의 포인터를 특정 위치로 변경
npx pm2 list
lsof -i tcp:80
npx pm2 kill
npx pm2 reload all
(다시 재시작)npm i
npm start
자동 할당된 IP 주소
로 주소 확인하기sudo su
후 진행(prepare/front
에서 진행)▶ server side props 등이 백엔드에서 데이터를 갖고와 보여주기 때문
▶ 문제 sagas/rootSaga.js
내 axios 주소가 localhost:3005로 되어 있음
axios.defaults.baseURL = "http://localhost:3005";
▶ 백엔드 서버주소를 관리하는 config/config.js
생성
(saga 말고도 컴포넌트 단에서 백엔드와 호출하는 것들이 존재하기 때문)
git pull
npm run build
npx pm2 start npm -- start
sudo npx pm2 monit
sudo npx pm2 logs //에러 확인하기 위함
▶ npm run build는 정상적으로 동작
▶ npm start(cross-env NODE_ENV=production pm2 next start -p 80) 시 오류남
npx pm2 start npm -- start
로 pm2를 실행하므로 package.json
내 start
에서 pm2
삭제수정 전 : start": "cross-env NODE_ENV=production pm2 next start -p 80"
수정 후 : start": "cross-env NODE_ENV=production next start -p 80"
▶ backend와 연결 시 front의 퍼블릭 주소가 없다면 연결되지 않음
(prepare/back/server.js
속 app.use.cors
내 origin
에 front 퍼블릭 주소 추가)
▶ 아직 탄력적 IP 발급하지 않음
//수정 전
app.use(
cors({
origin: [
"가비아 발급 주소",
"http://localhost:3000",
],
credentials: true,
})
);
//수정 후
app.use(
cors({
origin: [
"가비아 발급 주소",
"http://localhost:3000",
"인스턴스 퍼블릭 IPv4 주소",
],
credentials: true,
})
);
▶ 해결책 : 참고 블로그)
▶ 감사합니다... 감사합니다....
▶ 80번 포트를 사용해야 하는데 이미 사용하고 있었기 때문에 생긴 오류
//오류코드
Access to XMLHttpRequest at 'http://15.165.15.241/user' from origin 'http://43.201.108.146' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value 'http://localhost:3000' that is not equal to the supplied origin.
pm2로 실행 시 서버 켜짐과 동시에 모니터링을 해야 함
front쪽
npx pm2 start npm -- start && npx pm2 monit
npm start && npx pm2 monit (혹은
npm start && npx pm2 logs
)
▶ 확인한 내용
Error: listen EADDRINUSE: address already in use :::80
sudo lsof -i :80
//만약 포트가 있다면 나올 결과
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 18869 root 21u IPv6 104078 0t0 TCP *:http (LISTEN)
kill -9 18869
sudo lsof -i :80 //결과가 아무것도 안 나와야 정상
next_engword
파일을 삭제하고 다시 생성하고 싶을 경우mysql > drop database
next_engword
;
mysql > show databases; //next_engword 없음
root# npx sequelize db:create
root# npm start && npx pm2 logs
mysql > show databases; //next_engword 있음