在 AWS EC2 实例中使用 systemd 将 Go 应用程序作为服务运行

在 AWS EC2 实例中使用 systemd 将 Go 应用程序作为服务运行

我正在尝试将我的 Go 应用程序设置为具有 Amazon Linux 2023 的 EC2 实例中的 systemd 服务,以便它在崩溃和系统重新启动时重新启动。

我遵循了以下建议这里:

  1. 我在 /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
  1. 跑步
$ 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

但这也行不通。

使这项工作有效的正确方法是什么?

相关内容