我正在尝试将我的 Go 应用程序设置为具有 Amazon Linux 2023 的 EC2 实例中的 systemd 服务,以便它在崩溃和系统重新启动时重新启动。
我遵循了以下建议这里:
- 我在 /etc/systemd/system 处创建了一个到 /home/ec2-user/mygoapp.service 的符号链接,内容如下:
[Unit]
Description=My app
After=network.target
[Service]
Restart=always
RestartSec=3
ExecStart=/home/ec2-user/path/to/binary
[Install]
WantedBy=multi-user.target
- 跑步
$ sudo systemctl enable mygoapp
$ sudo systemctl start mygoapp
但它不会启动我的应用程序。
我也尝试了这个 mygoapp.service 内容:
[Unit]
Description=My app
ConditionPathExists=/home/ec2-user/path/to/folder/containing/go/source/files
After=network.target
[Service]
Restart=always
RestartSec=3
WorkingDirectory=/home/ec2-user/path/to/folder/containing/go/source/files
ExecStart=/usr/local/go/bin/go run .
[Install]
WantedBy=multi-user.target
编辑 mygoapp.service 后,我运行:
$ sudo systemctl daemon-reload
$ sudo systemctl stop mygoapp
$ sudo systemctl start mygoapp
但这也行不通。
使这项工作有效的正确方法是什么?