영원히 사용하여 systemd 서비스를 시작하는 nodejs 애플리케이션

영원히 사용하여 systemd 서비스를 시작하는 nodejs 애플리케이션

다음과 같은 NodeJs 애플리케이션이 있습니다.app.jLinux RHEL 시스템에서 실행 중입니다. 노드를 사용하여 서비스를 시작합니다영원히응용 프로그램이 있는 디렉터리의 명령줄에 있는 모듈입니다.


> cd /usr/app/dir
> forever start app.js

이것은 잘 작동하지만 이제 우리는app.js시스템 재부팅 후 시작되므로체계화된작동하지 않는 것 같은 서비스 파일.
나는 누군가가 내가 보지 못하는 몇 가지 노골적인 문제를 지적할 수 있기를 바랐습니다.

/etc/systemd/system/fulltext.service파일


[Unit]
Description=FullText Server NodeJS Script app.js
After=network.target

[Service]
Environment="NODE_ENV=lint"
Environment="PATH=/usr/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/slsuser/.local/bin:/home/slsuser/bin"
WorkingDirectory=/usr/share/eBSE/current/
ExecStart=/usr/bin/forever start  /usr/app/dir/app.js
ExecStop=/usr/bin/forever  stop   /usr/app/dir/app.js
User=root
Group=root

[Install]
WantedBy=multi-user.target

실행시 다음과 같은 오류가 발생함시스템 전체 텍스트 시작


fulltext.service - FullText Server NodeJS Script app.js
   Loaded: loaded (/etc/systemd/system/fulltext.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Oct 30 17:07:21 edc-v-slsftx01i04 forever[23421]:     uid  command       script                         forever pid   id logfile                 uptime
Oct 30 17:07:21 edc-v-slsftx01i04 forever[23421]: [0] gMOv /usr/bin/node /usr/app/dir/app.js 23415   23427    /root/.forever/gMOv.log 0:0:0:0.59
Oct 30 17:08:00 edc-v-slsftx01i04 systemd[1]: Started FullText Server NodeJS Script app.js.
Oct 30 17:08:00 edc-v-slsftx01i04 systemd[1]: Starting FullText Server NodeJS Script app.js...
Oct 30 17:08:01 edc-v-slsftx01i04 forever[23514]: warn:    --minUptime not set. Defaulting to: 1000ms
Oct 30 17:08:01 edc-v-slsftx01i04 forever[23514]: warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
Oct 30 17:08:01 edc-v-slsftx01i04 forever[23514]: info:    Forever processing file: /usr/app/dir/app.js
Oct 30 17:08:01 edc-v-slsftx01i04 forever[23530]: info:    Forever stopped process:
Oct 30 17:08:01 edc-v-slsftx01i04 forever[23530]:     uid  command       script                         forever pid   id logfile                 uptime
Oct 30 17:08:01 edc-v-slsftx01i04 forever[23530]: [0] dX9T /usr/bin/node /usr/app/dir/app.js 23524   23536    /root/.forever/dX9T.log 0:0:0:0.53

답변1

나는 이것이 오래된 질문이고 OP에 더 이상 답변이 필요하지 않다는 것을 알고 있습니다. 하지만 다른 사람이 나처럼 우연히 발견할 경우를 대비해...


영구 프로세스는 실제 프로세스를 시작한 후 종료됩니다 node app.js.

서비스를 지정하지 않았으므로 Type=기본값은 ExecStart=기본 프로세스가 계속 실행될 것으로 예상하는 "단순"입니다. 따라서 기본 "영원한" 프로세스가 삭제되면 systemd는 하위 프로세스가 생성되었음을 인식하지 못하기 때문에 실패했다고 생각합니다.

Type=forking아래에 추가해 보세요 [Service].

다음과 같이systemd.service 문서상태:

분기로 설정되면 ExecStart=로 구성된 프로세스가 시작의 일부로 fork()를 호출할 것으로 예상됩니다.상위 프로세스가 종료될 것으로 예상됩니다.시작이 완료되고 모든 통신 채널이 설정되면.아이는 계속해서 뛰어다닌다기본 서비스 프로세스로 간주되며 서비스 관리자는 상위 프로세스가 종료될 때 해당 장치가 시작된 것으로 간주합니다.

관련 정보