ginを使って作成したWebアプリをsystemdを使ってデーモンとして動かす
ginを使って作成したWebアプリをデーモンとして動かす方法について、少し前の記事でsupervisordを用いる方法を延々書いてしまったが、ここではsystemdを使う方法を書いてみる。
1. ログをsyslogに吐くようにする。
デーモン化したらログは画面ではなくファイルに出したいところ。 Linuxで動かす(よね?)なら、syslogを使ってしまうのがお手軽だ。
logger, err := syslog.New( syslog.LOG_NOTICE|syslog.LOG_USER, "SampleWebApp") if err != nil { panic(err) } gin.SetMode(gin.ReleaseMode) gin.DisableConsoleColor() gin.DefaultWriter = logger
2. systemd用のユニットファイルを作成する。
たぶん、これくらいが一番シンプルなんじゃないかな。。
[Unit] Description=Sample Web Application [Service] ExecStart=/usr/local/bin/SampleWebApp KillMode=process Restart=always [Install] WantedBy=multi-user.target
3. sytemctlコマンドで起動する。
systemctl restart サービス名
4. おまけ firewalldでポートを開放する
とりあえず今の状態を確認して、
firewall-cmd --list-all
たとえばこんなコマンドを打って、
firewall-cmd --add-port=3000/tcp --zone=public --permanent
そのあとリロードしてから、
firewall-cmd --reload
再度状態を確認すると、
firewall-cmd --list-all
先ほど追加したポートが開放されていることがわかるはず。