일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MySQL
- error
- Git
- mariadb
- JS
- MSSQL
- AWS
- build
- Ai
- 설정
- 영어
- docker
- sample
- nodejs
- unity
- ChatGPT
- Kibana
- s3
- Windows
- logstash
- JavaScript
- 유니티
- API
- elasticsearch
- 구글
- Linux
- ssh
- Python
- 엘라스틱서치
- Today
- Total
가끔 보자, 하늘.
nodejs 앱 자동 실행 설정 본문
nodejs로 개발된 앱들을 관리하는데 pm2 는 꽤 편리한 툴입니다. 특히나 마이크로 서비스로 개발된 앱들은 역할이 분명하고 특수한 임무만을 수행하기 때문에 보수할 일이 거의 없기도 합니다. 저도 9년전에 만들어 둔 서비스를 아직 그대로 쓰는 경우도 있습니다. 각종 보안 업데이트 문제로 코드 수정이 된 적은 있으나 임무 자체가 변경되지는 않으니까요.
그러다보니 OS를 재시작 될 경우 하나하나 재실행하기 번거롭게, 내가 아닌 다른 사람이 OS를 재시작 하는 문제라도 발생하면 문제가 될 수도 있습니다. 이런 경우에 대한 해답이 바로 "pm2 startup 스크립트"입니다.
그냥 service로 해당 스크립트를 바로 실행할 경우 혹시라도 버그로 다운된다면 재실행 안되는 문제가 있습니다. 그렇다고 pm2 start your_app.js 을 service에 등록하면 pm2 특성상 실행 후 종료되므로 serivcectl status로 보면 항상 inactive로 표기되어 service로 관리하는 의미도 없어집니다. 그래서 pm2 startup 스크립트를 사용해 관리하는 방법이 가장 좋습니다.
pm2를 설치했다고 startup 스크립트를 바로 사용할 수 있는게 아니고 이를 service에 등록하는 절차가 필요합니다.
$ pm2 startup -u your_account --hp /home/your_account# 이렇게 실행하면 아래와 같은 내용이 출력됩니다.
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u your_account --hp /home/your_account
배포판에 따라 출력되는 결과가 다를 수 있습니다. 위 결과는 debian 계열의 ubuntu에서 실행한 내용입니다. 위 출력 내용 중 "udo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u your_account --hp /home/your_account" 을 복사해서 별도로 실행해야 합니다. (your_account는 사용하시는 계정명으로 대체해야 합니다.)
그러면 pm2 -ubuntu라는 service가 등록되고 이를 시스템 시작 시 실행할 수 있도록 아래와 같이 실행합니다.
$ sudo systemctl enable pm2-ubuntu
이제 pm2-ubuntu라는 서비스가 시스템 시작 시 실행됩니다. 이 서비스가 pm2 에 등록된 앱들을 시스템 시작 시 관리하는 서비스라고 보시면 됩니다.
이제 사용하는 앱들을 startup에 등록합니다. 현재 실행이 안되어 있다면 먼저 실행하세요.
# 여기서는 당신의 계정 home 디렉토리에 apps라는 폴더안에 daemon_a.js라는 스크립트를 실행한다고 가정합니다.
$ pm2 start /home/your_account/apps/daemon_a.js
필요한 서비스가 모두 정상적으로 실행되었다면 현재 내용을 저장합니다.
$ pm2 save # 현재 서비스 중인 스크립트를 모두 저장해 시스템 시작 시 실행할 수 있게 저장합니다.
만약 제거하고 싶은 앱이 있다면 서비스를 중지 후 다시 pm2 save를 실행하면 됩니다.
상세한 옵션에 대해서는 pm2 메뉴얼-startup script 페이지를 참고하세요.
CentOS(redhat 계열)에서 Ubuntu(debian 계열)로 넘어오고 나니 자잘한 작업들이 자꾸 생기네요. 귀찮...
연말이네요. 모두 행복한 연말되세요. :)
'개발 이야기 > 개발 및 서비스' 카테고리의 다른 글
mac에서 https로 localhost 테스트하기 (0) | 2023.11.27 |
---|---|
Elasticsearch 7.x에서 8.x로 업그레이드 중 주의사항 (2) | 2023.11.24 |
My GPTs - GPT Builder로 만든 앱들 (0) | 2023.11.13 |
import error: unsupported operand type(s) for |: ‘dict’ and ‘dict’ (0) | 2023.03.07 |
mixpanel 연동 절차 in 5 steps (0) | 2023.03.07 |