Node.js로 FCM 푸시 서버를 만들어 항상 백그라운드에서 동작하도록 하려면 여러 가지 방법이 있다. 가장 일반적인 방법은 forever나 pm2와 같은 프로세스 관리 도구를 사용하는 것으로 이러한 도구를 사용하면 서버가 비정상적으로 종료되더라도 자동으로 다시 시작되도록 설정할 수 있다.
일단 pm2를 전역으로 설치한다. 이때 반드시 su 계정으로 로그인하여야 한다. 다시 일반 계정으로 복귀하고자 한다면 su - 일반계정이름 엔터를 치면 된다.
npm install -g pm2 그런 다음, Node.js 애플리케이션을 pm2로 실행할 수 있다.
bash Copy code pm2 start your_fcm_server.js 이제 your_fcm_server.js는 백그라운드에서 계속 실행된다.
만약 서버를 중지하려면 다음 명령어를 사용한다. pm2 stop your_fcm_server.js
또는 모든 프로세스를 중지하려면 pm2 stop all
더 나은 안정성을 위해, 서버가 리부팅될 때 자동으로 시작되도록 만들 수 있다. 이를 위해서는 다음 명령어를 실행한다.
pm2 startup 이 명령어를 실행하면 pm2가 서버 리부팅 시에도 자동으로 시작되도록 설정된다. 이렇게 하면 Node.js 애플리케이션이 항상 백그라운드에서 실행되도록 할 수 있다.
기본적으로 pm2는 로그와 관련된 다양한 기능을 제공하므로, 서버의 상태를 모니터링하고 문제를 디버깅하는 데 도움이 된다. pm2 logs
특정 프로세스의 로그만 확인하려면 프로세스 이름 또는 ID를 지정할 수 있다.
pm2 logs your_fcm_server
로고 출력 설정: pm2에서는 로그의 출력을 여러 가지 형식으로 설정할 수 있다. 예를 들어, JSON 형식으로 출력하려면 다음과 같이 명령어를 사용한다.
pm2 logs --json
로그 위치 확인 pm2는 각 프로세스의 로그를 파일로 저장한다. 로그 파일은 기본적으로 ~/.pm2/logs/ 디렉토리에 저장되며, 특정 프로세스의 로그 파일 위치를 확인하려면 다음과 같이 명령어를 사용한다.
pm2 show your_fcm_server 이 명령어는 프로세스의 상세 정보를 보여주는데, 그 중에서 "log_path" 항목이 로그 파일의 경로를 나타낸다.
로그 파일을 삭제하려면 pm2 flush 명령어를 사용한다. pm2 flush
실시간 로그 모니터링 중지인 pm2 logs 명령은 실시간 로그 모니터링을 위한 것이기 때문에 Ctrl+C를 누르면 모니터링이 중지된다.
결론은 node.js가 설치된 서버에 별도의 client를 설치해줘야만 한다. 또한 6.2버전을 thick 모드를 지원하는 5.2.0으로 다운그레이드를 해줘야 한다. 아니면 초장부터 5.2.0으로 설치 하던지 이렇게 말이다. npm install oracledb@5.2.0
여기서 자신의 오라클 DB 버전에 맞는걸 다운받아 주면 된다. 내 경우 oracle 11g이므로 version 11.2.0.4.0을 눌러 Instant Client Package (RPM)을 다운 받았다. RPM은 Redhat Package Manager의 약자로 Windows를 예를들면 setup.exe와 비슷하다고 볼 수 있다 그래야 yum으로 리눅스에서 install이 가능하기 때문인데 YUM은 Yellowdog Update Manager의 약자로 RPM의 단점인 의존성 문제를 해결하기 위해서 제공되는 것으로 특정 패키지를 설치할 때 의존성이 있는 다른 패키지들을 자동으로 먼저 설치해주는 지능적인 툴이다.
다운받은 파일을 적당한 곳에 복사해 두고 해당 디렉토리에서 yum을 이용해 rpm파일을 설치한다. yum install oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
혹시 다른 rpm파일을 잘못 설치했다면 리스트로 확인도 가능하고 제거도 가능하니 당황하진 말자 yum list installed
제거하는 방법은 yum remove 패키지이름
마지막으로 환경변수를 설정해줘야 한다.
vi ~/.bashrc 를 입력하자
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:${LD_LIBRARY_PATH} 이렇게 입력해주고 :wq로 저장 후 나가준다. 제대로 설정되었는지 확인하려면 echo $LD_LIBRARY_PATH 를 입력해보자 /usr/lib/oracle/11.2/client64/lib: 이렇게 뜬다면 정상이다.
이제 클라이언트 설치와 환경변수까지 모두 다 설정해줬다. 다시 node.js로 dbconnect 파일을 실행해보면 정상 접근이 가능한 걸 확인 할 수 있을것이다.
MobaXterm이 훌륭한 툴이긴 하나 "나랏말싸미 듕귁에 달아 문자와로 서르 사맛디 아니할쎄 이런 전차로 어린 백셩이 니르고져 홇베이셔도" 의 상황임에 한글이 깨져나오는 서버들이 존재한다.
더 웃긴건 어떤 서버는 한글이 나오는데 어떤 서버는 안 나온다. -_- PC마다 또 다 다르다. 누구는 유럽으로 하니 나온다카고 그대로 따라해도 안 나온다.
솔까 상단메뉴로 아무리 설정을 바꿔한들 삽질이다. 여러 블로그 글들 보며 따라해봤지만 웃기지 말아라 안 된다. 하지 말라
참고로 난 전역설정(?)의 폰트는 아래와 같이 설정해뒀다.
각설하고 MobaXterm에서 한글을 지원하게 하려면 각 서버마다 설정을 달리 해줘야 한다. (별표로 즐겨찾기 해둔 서버 리스트에서) 마우스 오른쪽을 누르면 Edit session이 나오면 선택하여 설정으로 들어간다.
거기서 SSH를 누르면 중간에 Terminal settings 탭을 누른다.
그리고 Terminal font settings를 누르면 폰트설정을 서버마다 할 수 있다.
여기서부터가 중요하다. 일단 폰트는 한글폰트를 선택한다. 난 굴림체를 쓰겠다.
그리고 Font charset은 HANGEUL (Korean/Wansung)을 선택한다. 여기까진 공통이다.
이제부턴 실험정신이 필요하다. Term charset을 바꿔가며 한글이 깨지는지 잘 나오는지 테스트를 해봐야 하는데 Use font encoding, eucKR, UTF-8 을 번갈아 가며 설정 OK를 해가며 저장 후 접속해서 SU를 입력해보자 그럼 어떤 서버는 Use font encoding로 해야 한글이 나오는 서버가 있고 어떤 서버는 eucKR 등 다 다르다.