개발 과정에서 기존에 사용하던 코드를 사용하기 위해서 코드를 가져와 실행시키는 과정에서 에러가 발생했다. pm2라는 node 프로세스 매니저를 활용하는 과정에서 발생한 문제이다.
우선 로그를 살펴보았다. 그러나 어떠한 로그도 찍혀있지 않았다
pm2 logs --err
다음으로 홈 디렉토리에 있는 .pm2/logs에서 로그 파일을 전부 열어보았으나 어떠한 로그도 찍혀있지 않았다.
그러던중 .pm2/pm2.log를 열어보니 다음과 같은 로그가 찍혀있었다.
app.js had too many unstable restarts (16). Stopped. "errored"
구글링에서는 2가지 이유가 있다고 했다.
- 서버 측면의 js파일의 endpoint를 잘못 지정한 경우
- node의 모듈이 오래되거나 나쁜 버전의 라이브러리가 설치된 경우
그러나 해당 문제로는 해결이 되지 않았다. js 파일 설정과 관련된 파일을 전부 열어보았다. package.json을 열어보던중 scripts 부분에서 start node ./bin/www 실행시키는 것을 찾았고 해당 명령어를 실행시키니 다음과 같은 에러를 찾을수 있었다. 즉 ssl 인증 설정과 같은 파일이 찾을수 없기에 발생한 문제였다.
```
Error: ENOENT: no such file or directory, open '/etc/letsencrypt/live/fullchain.pem' at Object.openSync (node:fs:603:3) at Object.readFileSync (node:fs:471:35) at Object. (/app.js:15:12) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Module.load (node:internal/modules/cjs/loader:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) at Module.require (node:internal/modules/cjs/loader:1143:19) at require (node:internal/modules/cjs/helpers:119:18) at Object./ bin/www:7:11) { errno: -2, syscall: 'open', code: 'ENOENT', path: '/etc/letsencrypt/live/fullchain.pem' }
```
ssl 인증서를 적용하고 있는 .js 파일을 찾아 정상적으로 경로를 주입함으로서 해당 문제를 해결했다.
https://www.inflearn.com/questions/1052270/pm2-status-에러
https://holystory-dev.com/173
'문제해결' 카테고리의 다른 글
Git rebase가 잘못 수행된 경우 (0) | 2024.09.09 |
---|---|
pm2 start시 pem 권한 문제 (0) | 2024.06.08 |
[AWS] EC2 Nginx host not found in upstream ELB (0) | 2023.08.18 |
[SpringBoot] JSON과 image 동시에 값 보내기 (0) | 2023.08.18 |
[SpringBoot] JPA 테이블 또는 필드를 찾지 못할 때 (0) | 2023.08.18 |