Linuxサーバーで自作WEBアプリを管理する


GolangのWebパッケージginを用いて作ったWEBアプリをLinuxサーバーで公開するためのメモ。ポートとかの話の続きです。

今回はアプリ永続化のための部分。

一度実行したらアップデートなどで止めるまで動き続けてくれるようにします。

Linux環境: Ubuntu 16.04.5

アプリ実行の基本

コマンドを実行する

実行権限を付けてそのまま実行する。

そのターミナルで他のことはできなくなる(フォアグラウンド実行)。

バックグラウンド実行する

コマンドに&を付けるとバックグラウンド実行になり別処理もできるようになる。

ただしログアウト(ターミナル終了)時にはコマンド処理自体も終了する。

 

普通に実行したコマンドもバックグラウンド実行に切り替えが可能。

ログアウト時に終了させない実行(nohup, disown)

nohupはよく使われるコマンドだと思う。

予期しないエラーで止まることもあるのでその辺は注意して使う必要がある。

エラーが起きない限りずっと実行する。

デーモンを使ったサービス管理

実行中でもアプリのアップデートがしたいし、エラー終了したら再起動してほしいし、なんならサーバー起動時に勝手に起動してほしい。

基本的にデーモン(daemon)と呼ばれるツールを使って管理します。

 

以前にnode.jsでのデーモン化ツールを使ったことがありますが今回はより一般的なsystemdでの管理です。

 

systemdは/etc/systemd/systemにUnit定義ファイルを配置します。

sudo systemctl list-unit-files --type=serviceで追加を確認できます。

今はもう/init.d/にシェル書かなくていいんですね(今更)。

最低限の設定ですが落ちたとき用にRestartの設定と、静的ファイル読み込みのためにWorkingDirectoryの設定をしています。

WEBアプリでシングルバイナリ化してないならWorkingDirectoryは必須。

 

systemdでは基本的にsystemctlコマンドをつかいます。

サービスを扱う場合、systemctlコマンドはほぼserviceコマンドと同じと考えてよさそうです。

わりかし簡単にデーモン化できました。


コメントを残す

メールアドレスが公開されることはありません。