서버가 켜져있지 않으면, 웹페이지로 접속이 불가능하다.
하지만 노드는 foreground process여서 터미널을 끄면 같이 꺼진다.
터미널에서 노드를 실행하면 로그만 볼 수 있을 뿐, 다른 명령어를 입력할 수 없었던 것도 이것때문이다.
foreground process 대신 background process로 바꾸어 주면, 터미널을 종료해도 서버는 종료되지 않는다.
pm2를 사용하여 background process로 바꾸어주자.
pm2 설치
vim package.json
package.json 파일을 vim 에디터로 연다.
start: pm2 start app.js 로 바꿔준다.
sudo npm start 를 입력하면 다음과 같은 화면이 뜬다.
**1024번 미만 포트는 root가 아닐 때는 실행이 되지 않는다.
80번 포트를 사용하려면 root계정으로 접속하거나 (sudo su)
명령어 앞에 sudo를 입력해야한다. sudo npm start로 접속하면 그 다음 pm2 명령어에도 sudo를 붙여야한다.
pm2는 백그라운드 프로세스이기 때문에, 서버를 실행하면서 명령어도 입력할 수 있다.
npx pm2 monit : 상태 불러오기. (list, logs, custom metrics, metadata 등이 나옴)
npx pm2 logs : 모든 로그 불러오기.
npx pm2 logs --error : 에러 로그 불러오기.
npx pm2 list : 리스트(npm start 하면 나왔던 표) 불러오기.
npx pm2 kill : pm2 종료
npx pm2 start app.js : app.js 실행
npx pm2 reload all : 서버 재시작
lsof -i tcp:포트번호 : 포트로 실행중인 서버가 있는지 정보를 알려줌. (없으면 아무것도 뜨지 않는다.)
-
백엔드를 배포용 설정으로 바꿔주자.
aws는 ip를 고정해주지 않으면 ip가 주기적으로 바뀐다. 탄력적ip를 사용하면 ip가 고정됨 (비용 발생)
ip가 변하면 연결방법이 바뀐다.
내 컴퓨터 파일에서 배포용으로 설정해주자.
package에서 환경을 배포용으로 설정하기위해(.env를 사용하기위해) cross-env를 사용하자.
그리고 보안을 위해 helmet과 hpp를 설치한다.
환경설정이 배포용(production)일때는 자세하게 로그를 기록해주는 combined를 사용하자.
그리고 보안을 위해 hpp와 helmet을 사용한다.
pakcage.json 설정
npm start : 배포용일때 pm2로 app.js를 실행한다.
위와 같이 설정을 마친 후 커밋한다.
-
ssh 서버로 돌아와 git pull을 해주자.
만약 아래와 같이 Aborting 에러가 뜬다면(app.js에서 포트번호를 바꾼후 push하지 않아 생기는 에러)
git reset --hard를 입력한 후 다시 git pull 해준다.
다시한번 app.js에서 포트가 80인지 확인해주고,
sudo npm start
하면 서버가 정상적으로 실행됨을 볼 수 있다!
AWS :: 도메인 연결 및 cookie 설정 (0) | 2021.01.28 |
---|---|
ubuntu :: PM2를 사용하여 프론트 서버 실행하기 (0) | 2021.01.28 |
ubuntu :: port 바꿔주기 (0) | 2021.01.26 |
ubuntu :: mySQL 설치 및 실행하기 (0) | 2021.01.26 |
ubuntu :: 노드 설치하기 (0) | 2021.01.26 |
댓글 영역