systemdを使用してサーバーをサービスとして起動する方法

systemdを使用してサーバーをサービスとして起動する方法

QtWebAppを使用して独自のサーバーを作成しました。

ここで、systemdを使用してUbuntu 15.10ブートでこのサーバーを起動したいと思います。

このサービスファイルを作成しました。

[Unit]
Description=This service maintains a landports server...
After=syslog.target
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=forking
ExecStart=~/LandportsServer
Restart=on-abort

[Install]
WantedBy=multi-user.target

私が走るときsudo systemctl start landports

システム出力systemd Loaded: error (Reason: Invalid argument)

サービスファイルを次のように変更しました。

[Unit]
Description=This service maintains a landports server...

[Service]
Type=forking
ExecStart= /home/wbmanager/LandportsServer

[Install]
WantedBy=multi-user.target

しかし、私が走るときsudo systemctl start landports

何も起こらず、出力も表示されません。ブラウザを使用してサーバーに接続しようとすると、接続が失敗し、サーバーは実行されません。

以前これを実行してサーバーをテストしました。SSH効果があるしかし、サービスとして実行することはできません。

システム出力を待ってから:

Jan 04 22:57:25 yassermyweb LandportsServer[4902]: Pattern handler and tokens:  HttpRequestHandler(0x1018790) ("recent", ":portID")
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: added pattern for path: recent/:portID
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: RootHandler 0xffe820: registering handlers...
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: Pattern handler and tokens:  HttpRequestHandler(0x10183a0) ("")
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: added pattern for path:
Jan 04 22:57:25 yassermyweb LandportsServer[4902]: HttpListener: Listening on port 0
Jan 04 22:58:55 yassermyweb systemd[1]: landports.service: Start operation timed out. Terminating.
Jan 04 22:58:55 yassermyweb systemd[1]: Failed to start This service maintains a landports server from the point the system is started until it is shut down again..
Jan 04 22:58:55 yassermyweb systemd[1]: landports.service: Unit entered failed state.
Jan 04 22:58:55 yassermyweb systemd[1]: landports.service: Failed with result 
'timeout'.

気づく行は次から始まります。モードハンドラとトークン: HttpRequestHandler(0x1018790)("最新", ":portID")

mu=y サーバーの出力です。

答え1

問題はExecStart=~/LandportsServer。代わりに絶対パスを使用してください。 systemdではどのホームディレクトリを使用する必要がありますか?ルートとして実行されます。

Type=forking別の問題は、サービスをに変更Type=simple(またはその行をコメントアウト)したことです。

関連情報