systemdを使用してAWS EC2インスタンスでGoアプリケーションをサービスとして実行する

systemdを使用してAWS EC2インスタンスでGoアプリケーションをサービスとして実行する

クラッシュとシステムの再起動時にGoアプリケーションが再起動されるように、Amazon Linux 2023がインストールされているEC2インスタンスでGoアプリケーションを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

しかし、それも動作しません。

これを行う正しい方法は何ですか?

関連情報