golangで書かれたSlack bot でエンジニアに話題提供しよう
hakobeさんが作ってる、slack botを導入するにあたって、goのWebアプリケーションを動かすのにどういう環境が良いのかなと思って調べた所、Supervisorが良さそうだったので使ってみました。
本当はdeployとかいろいろ検討するポイントがあるのだけど、今回は個人で利用するので、supervisorで動かすところだけやりました。
環境
Ubuntu 14.04
go 1.4
presentのインストール
記事に書かれている通りなので割愛
Supervisorのインストール
sudo apt-get install supervisor
/etc/supervisor/supervidord.conf #こちらは必要に応じて編集
presentの起動設定を追加
ブログに記載されてる内容のコマンドをそのままcommandで指定しても期待通りには動かないので、supervisorのenvironmentに環境変数を記述する必要がある。というぐらいの違い。
/etc/supervisor/conf.d/present.conf
[program:present]
command=present
user=username
environment=PRESENT_SLACK_INCOMMING_URL="https://hooks.slack.com/services/ABCDEFG/HIJKLMN/1234567qwerty",PRESENT_DB_DSN="id:password@hostname/present?parseTime=true&charset=utf8",PRESENT_NAME="engineerkun",PRESENT_WAIT="900",PRESENT_NOOP_LIMIT="3",PORT="8080"
autorestart=true
stdout_logfile=/var/log/supervisor/jobs/present-supervisord.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=5
stdout_capture_maxbytes=1MB
redirect_stderr=true
動かし方
# 起動
sudo service supervisor start
# 確認
sudo service supervisorctl status
# present RUNNING pid 10190, uptime 0:22:45
# 動いてるサービスが確認できる
# 停止
sudo supervisor stop
# 再起動
sudo supervisor restart
# 設定ファイルの読み込み
sudo supervisor reload
# presentの起動
sudo supervisorctl start present
# presentの再起動
sudo supervisorctl restart present
# presentの停止
sudo supervisorctl stop present
まとめ
自分用のメモです。
golangでWebアプリケーション作ったらどうやって運用してるのかなーという辺りを、いろいろ調べるきっかけになって勉強になりました。
普段は公開するほどドキュメントをまとめきれないのでEvernoteに書き留めてストックしてるのですが、試しに書いてみました。
面白いアプリを作ってくれたhakobeさんに感謝。