2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

フロントエンジニアがgoのAPIサーバーをサクッとsystemdで自動起動させてみた

Last updated at Posted at 2020-10-16

systemdでサービス化した方がいいと言われたので、とりあえずやってみた。

①プロジェクトファイル(ここではsample)でgo build
②etc/systemd/systemにapp.serviceを作ります
③app.serviceに下記を記述

[Unit]
Description=Automatic start server demon

[Service]
ExecStart=/home/ec2-user/sample/sample
WorkingDirectory=/home/ec2-user/sample
Restart=always
Type=simple
User=ec2-user

[Install]
WantedBy=multi-user.target

【解説】
ExecStartで実行ファイルを指定
go buildしたらファイル名と同じバイナリが生成されるので、それを指定

WorkingDirectoryで実行するディレクトリを指定

Restart=always alwaysにすることで落ちても自動再起動してくれる

Type=simple 実行完了と判別するタイミングを指定

simple=コマンドが実行されたら
Type=forking=実行したコマンドが終了したら
Type=oneshot=コマンドが完了したら

User 実行するUser

WantedBy=multi-user.target enable時にこのユニットの.wantsディレクトリにリンクを作成する
これはよくわからなかった。

sudo systemctl daemon-reloadを実行
app.serviceの内容を更新

sudo systemctl enable /home/ec2-user/etc/systemd/system/app.serviceを実行
サービスの自動起動を有効にする
*絶対パスで指定すること

sudo systemctl start app.serviceを実行

これで自動起動されます

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?