systemd 종료 create-react-app

systemd 종료 create-react-app

Node 애플리케이션(구체적으로 create-react-app을 사용하여 구축된 React 애플리케이션)을 실행하기 위해 systemd 서비스를 사용하려고 합니다. frontend.service( /etc/systemd/system/적어도) 다음 내용을 포함하는 파일이 있습니다 .

[Unit]
Description=React Web Application

[Service]
ExecStart=/usr/local/bin/npm start --prefix=<path to app>

[Install]
WantedBy=multi-user.target

서비스를 시작한 후 브라우저에 nginx bad gateway오류가 표시되고 ps aux | grep node해당 프로세스가 표시되지 않습니다. journalctl -u frontend"React 웹 애플리케이션 시작" 및 마지막으로 "개발 서버 시작..."과 같은 성공적인 단계의 출력을 보고합니다 . 그러나 systemctl status frontend보고 서비스가 로드되었지만 비활성/비활성 상태(편집: 또는 활성/종료)입니다.

.service파일, 특히 Type=forking, RemainAfterExit=true및 를 일부 조정 해 보았습니다 KillMode=process. 그러나 문제는 남아 있습니다. 무슨 일이야? 이 문제를 어떻게 해결하나요?

npm start셸에서 직접 응용 프로그램을 실행하면 제대로 작동합니다. 또한 다른 (노드가 아닌) 웹 서버는 유사한 시스템 스크립트에서 잘 작동합니다.

이것은 systemctl 상태 출력입니다:

wm-frontend.service - React Web Application
   Loaded: loaded (/etc/systemd/system/wm-frontend.service; enabled; vendor preset: enabled)
   Active: active (exited) since Mon 2020-08-10 14:40:59 UTC; 32min ago
  Process: 4033 ExecStart=/usr/local/bin/npm start --prefix=/home/mw/wm-ax/frontend/blog --scripts-prepend-node-path (code=exited, status=0/SUCCESS)
 Main PID: 4033 (code=exited, status=0/SUCCESS)

Aug 10 14:40:59 localhost systemd[1]: Started React Web Application.
Aug 10 14:41:00 localhost npm[4033]: > [email protected] start /home/mw/wm-ax/frontend/blog
Aug 10 14:41:00 localhost npm[4033]: > react-scripts start
Aug 10 14:41:04 localhost npm[4033]: ℹ 「wds」: Project is running at http://0.0.0.0:3000/
Aug 10 14:41:04 localhost npm[4033]: ℹ 「wds」: webpack output is served from
Aug 10 14:41:04 localhost npm[4033]: ℹ 「wds」: Content not from webpack is served from /home/mw/wm-ax/frontend/blog/public
Aug 10 14:41:04 localhost npm[4033]: ℹ 「wds」: 404s will fallback to /
Aug 10 14:41:04 localhost npm[4033]: Starting the development server...

답변1

에서 언급했듯이이 답변, 2020년 2월 기준 start.js프로세스는 다음 과 같습니다.탈퇴 요건의 끝에 도달하면 stdin. 프로세스가 비대화형(예: 시스템 서비스를 통해)으로 실행되면 stdin즉시 종료되므로 위에서 설명한 대로 스크립트가 종료됩니다.

관련 정보