NodeJS React Systemd 서비스가 작동하지 않습니다.

NodeJS React Systemd 서비스가 작동하지 않습니다.

간단한 반응 애플리케이션을 위한 시스템 서비스를 설정하려고 합니다. 애플리케이션은 /home/myuser/test에 호스팅됩니다. npm과 node는 모두 PATH에 있고 /usr/bin에 하드 링크되어 있습니다. 모든 파일에는 myuser:myuser 사용자 및 그룹의 권한이 있습니다. 수동으로 시작하면 npm start올바르게 시작되고 다음에서 응용 프로그램을 제공합니다.http://localhost:3000

    Compiled successfully!

You can now view test in the browser.

  Local:            http://localhost:3000
  On Your Network:  http://myipaddress:3000

Note that the development build is not optimized.
To create a production build, use npm run build.

systemd를 통해 애플리케이션을 시작하려고 하면 이유를 설명하지 않고 실패합니다. 동일한 사용자를 사용하여 동일한 경로에서 시작하고 상상할 수 있는 모든 ExecStart 조합을 시도했습니다.

ExecStart=npm start
ExecStart=/usr/bin/npm start
ExecStart=/usr/bin/node /home/myuser/test/node_modules/react-scripts/scripts/start.js

그들은 모두 동일한 결과를 생성합니다. 즉, 정상적으로 "시작"된 다음 곧 실패합니다. 분명히 Journalctl에서는 아무런 이유도 없습니다.

 $sudo systemctl status node-client   
 ● node-client.service - Node-React Frontend Server
   Loaded: loaded (/etc/systemd/system/node-client.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-04-08 09:46:10 UTC; 679ms ago
 Main PID: 18165 (node)
   CGroup: /system.slice/node-client.service
           └─18165 /usr/bin/node /home/myuser/test/node_modules/react-scripts/scripts/start.js

Apr 08 09:46:10 hostname systemd[1]: Started Node-React Frontend Server.
Apr 08 09:46:10 hostname systemd[1]: Starting Node-React Frontend Server...

몇 초 후...

$sudo systemctl status node-client
● node-client.service - Node-React Frontend Server
   Loaded: loaded (/etc/systemd/system/node-client.service; disabled; vendor preset: disabled)
   Active: activating (auto-restart) since Wed 2020-04-08 09:46:00 UTC; 3s ago
  Process: 18142 ExecStart=/usr/bin/node /home/ec2-user/test/node_modules/react-scripts/scripts/start.js (code=exited, status=0/SUCCESS)
 Main PID: 18142 (code=exited, status=0/SUCCESS)

Journalctl에 다음 메시지가 계속 나타납니다.

    -- Logs begin at Tue 2020-03-17 15:04:59 UTC, end at Wed 2020-04-08 09:48:23 UTC. --
Apr 08 09:48:22 hostname systemd[1]: Starting Node-React Frontend Server...
Apr 08 09:48:22 hostname systemd[1]: Started Node-React Frontend Server.
Apr 08 09:48:22 hostname systemd[1]: node-client.service holdoff time over, scheduling restart.
Apr 08 09:48:12 hostname nodeclient[18390]: Starting the development server...
Apr 08 09:48:12 hostname nodeclient[18390]: ℹ 「wds」: 404s will fallback to /
Apr 08 09:48:12 hostname nodeclient[18390]: ℹ 「wds」: Content not from webpack is served from /home/myuser/test/public
Apr 08 09:48:12 hostname nodeclient[18390]: ℹ 「wds」: webpack output is served from
Apr 08 09:48:12 hostname nodeclient[18390]: ℹ 「wds」: Project is running at http://myipaddress/
Apr 08 09:48:10 hostname systemd[1]: Starting Node-React Frontend Server...
Apr 08 09:48:10 hostname systemd[1]: Started Node-React Frontend Server.
Apr 08 09:48:10 hostname systemd[1]: node-client.service holdoff time over, scheduling restart.
Apr 08 09:48:00 hostname nodeclient[18368]: Starting the development server...
Apr 08 09:48:00 hostname nodeclient[18368]: ℹ 「wds」: 404s will fallback to /
Apr 08 09:48:00 hostname nodeclient[18368]: ℹ 「wds」: Content not from webpack is served from /home/myuser/test/public
Apr 08 09:48:00 hostname nodeclient[18368]: ℹ 「wds」: webpack output is served from
Apr 08 09:48:00 hosntame nodeclient[18368]: ℹ 「wds」: Project is running at http://myipaddress/

시스템 서비스 파일은 시간이 지남에 따라 변경되었지만 ExecStart 및 기타 변경 사항에 관계없이 오류는 동일하며 현재는 다음과 같습니다.

[Unit]
Description=Node-React Frontend Server
After=syslog.target network.target

[Service]
ExecStart=/usr/bin/node node_modules/react-scripts/scripts/start.js
Restart=always
RestartSec=10s
TimeoutSec=900
User=myuser
Group=myuser
Environment=PATH=/usr/bin:/usr/local/bin
WorkingDirectory=/home/myuser/test/
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodeclient

[Install]
WantedBy=multi-user.target

운영체제는 Centos7입니다. 모든 테스트는 sudo 없이 동일한 사용자를 사용하여 수동으로 그리고 systemd를 통해 동일한 명령을 실행하여 수행되었습니다. 수동 시작은 작동하지만 systemd는 작동하지 않습니다.

마지막으로, systemd를 통해 Express-NodeJS 애플리케이션이 있고 동일한 systemd 구성을 사용하여 올바르게 시작됩니다. React에서만 실패합니다.

어떤 도움이라도 대단히 감사하겠습니다!

감사해요

멋진

답변1

섹션 StandardInput=tty-force에 추가해 보세요[Service]

관련 정보