サービスで実行されているNodeJSサーバーで「コマンドを実行できません:Exec形式エラー」エラーが発生します。

サービスで実行されているNodeJSサーバーで「コマンドを実行できません:Exec形式エラー」エラーが発生します。

私がサーバー管理がうまくいかず、もし逃した部分がある場合はご了承ください。

稼働中のNode Expressサーバーがあり、それをデプロイしていますが、forever今すぐシステムサービスに移動したいと思います。サービスファイルを作成しました。/lib/systemd/system/myservice.service

[Unit]
Description=website service
After=network.target

[Service]
ExecStart=/home/myuser/.nvm/versions/node/v12.14.0/bin/node /home/myuser/WSProject/src/server/index.js
Type=simple
Restart=on-failure

[Install]
WantedBy=multi-user.target

この構成を得るためにガイドに従いました。ノードパスが正確で、使用時に返されるパスであることを確認しましたwhich node。デーモンを再起動し、サービスを再起動しました。サービスが失敗しました。サービスのJournalctlを確認すると、次のエラーが表示されます。

Jul 30 12:55:03 psjqw2q9h systemd[1]: Started Run the encore server.
Jul 30 12:55:03 psjqw2q9h systemd[22298]: myservice.service: Failed to execute command: Exec format error
Jul 30 12:55:03 psjqw2q9h systemd[22298]: myservice.service: Failed at step EXEC spawning /home/myuser/WSProject/src/server/index.js: Exec format error
Jul 30 12:55:03 psjqw2q9h systemd[1]: myservice.service: Main process exited, code=exited, status=203/EXEC
Jul 30 12:55:03 psjqw2q9h systemd[1]: myservice.service: Failed with result 'exit-code'.
Jul 30 12:55:03 psjqw2q9h systemd[1]: myservice.service: Service hold-off time over, scheduling restart.
Jul 30 12:55:03 psjqw2q9h systemd[1]: myservice.service: Scheduled restart job, restart counter is at 1.
Jul 30 12:55:03 psjqw2q9h systemd[1]: Stopped Run the encore server.

これが私が得たものです。この問題をさらに解決する方法がわかりません。これに似た質問がありますが、nodejs関連や設定ファイルの空白などの小さな問題があります。ある記事で述べたように、さまざまな形式のExecStartコマンドを引用符で囲んで使用してみました。ある時点でユーザーラインがありましたが、rootにするか別のものにするか、完全に残すかどうかは違いはありませんでした。

ベストアンサー1

回避策は、myservice.serviceファイルの権限を調整し、ノードアプリケーションを実行する必要がある場所にWalkingDirectory値を追加することです。

おすすめ記事