不能 运行 将二进制作为 systemctl 守护进程
Cannot run go binary as systemctl daemon
我有一个在路径 /home/me/go/src/myapp
上的 go web 应用程序。
当我 运行 在 bash 终端上使用 ./myapp
的可执行文件时,它工作正常。
然而,这需要一个开放的终端才能继续 运行ning,这是不切实际的,所以我尝试在我的 Debian 服务器的 /etc/systemd/system/myapp.service
上创建一个 systemd 守护进程,如下所示:
[Unit]
Description=MyApp Daemon
StartLimitIntervalSec=0
[Service]
Type=simple
User= me
Group=www-data
ExecStart=/home/me/go/src/myapp/myapp
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
我已经启用并启动了守护进程:
systemctl enable myapp
开始吧:
systemctl start myapp
但是 运行 守护进程失败了,我得到了这个错误:
# systemctl status myapp
● myapp.service - MyApp Daemon
Loaded: loaded (/etc/systemd/system/myapp.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2020-07-17 05:42:18 CDT; 4s ago
Process: 19058 ExecStart=/home/me/go/src/myapp/myapp (code=exited, status=127)
Main PID: 19058 (code=exited, status=127)
CPU: 2ms
Jul 17 05:42:18 front systemd[1]: Started Myapp Daemon.
Jul 17 05:42:18 front systemd[1]: myapp.service: Main process exited, code=exited, status=127/n/a
Jul 17 05:42:18 front systemd[1]: myapp.service: Unit entered failed state.
Jul 17 05:42:18 front systemd[1]: myapp.service: Failed with result 'exit-code'.
我想知道可能出了什么问题,我该如何解决?
经过大量试验和错误后,此配置对我有用:
[Unit]
Description=Sai Go webapp Daemon
#After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
User= me
Group=www-data
WorkingDirectory=/home/me/go/src/myapp/
ExecStart=/home/me/go/src/myapp/myapp
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
显然 WorkingDirectory
是必要的。
我有一个在路径 /home/me/go/src/myapp
上的 go web 应用程序。
当我 运行 在 bash 终端上使用 ./myapp
的可执行文件时,它工作正常。
然而,这需要一个开放的终端才能继续 运行ning,这是不切实际的,所以我尝试在我的 Debian 服务器的 /etc/systemd/system/myapp.service
上创建一个 systemd 守护进程,如下所示:
[Unit]
Description=MyApp Daemon
StartLimitIntervalSec=0
[Service]
Type=simple
User= me
Group=www-data
ExecStart=/home/me/go/src/myapp/myapp
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
我已经启用并启动了守护进程:
systemctl enable myapp
开始吧:
systemctl start myapp
但是 运行 守护进程失败了,我得到了这个错误:
# systemctl status myapp
● myapp.service - MyApp Daemon
Loaded: loaded (/etc/systemd/system/myapp.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2020-07-17 05:42:18 CDT; 4s ago
Process: 19058 ExecStart=/home/me/go/src/myapp/myapp (code=exited, status=127)
Main PID: 19058 (code=exited, status=127)
CPU: 2ms
Jul 17 05:42:18 front systemd[1]: Started Myapp Daemon.
Jul 17 05:42:18 front systemd[1]: myapp.service: Main process exited, code=exited, status=127/n/a
Jul 17 05:42:18 front systemd[1]: myapp.service: Unit entered failed state.
Jul 17 05:42:18 front systemd[1]: myapp.service: Failed with result 'exit-code'.
我想知道可能出了什么问题,我该如何解决?
经过大量试验和错误后,此配置对我有用:
[Unit]
Description=Sai Go webapp Daemon
#After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
User= me
Group=www-data
WorkingDirectory=/home/me/go/src/myapp/
ExecStart=/home/me/go/src/myapp/myapp
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
显然 WorkingDirectory
是必要的。