Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@kyamasan

GolangのWebAPIをsupervisorでデーモン化して公開する。

More than 1 year has passed since last update.

GolangのWebAPIをデーモン化して公開する際に役立った情報の備忘録です。

使用環境

Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type (無料使用枠)

デーモン化とは

そもそもGolangのWebAPIを公開する方法を知らず、Linux上で"GO RUN main.go"を実行すればよいのかと考えていた。この方法だと、RLoginなどで接続を閉じたタイミングで処理も終了してしまって上手く行かなかった。

調べるうちに、デーモン(UNIX系OSにおいて、常時待機しているプログラムを指す)というものに行きついた。[Golang デーモン]で検索すると多数ヒットしたので、Golangのmain.goを常駐化させる方針を立てた。

supervisor

Golangのバイナリを常駐化させる為のツール。
Nginx同様にconfファイルで設定を行う必要がある。

supervisor.confの編集

sudo vi /etc/supervisord.conf

supervisor.confの中身

設定項目は複数あるが、基本的に[program:XX]の設定のみで動くはず。

[program:XX]
command=/home/ec2-user/hoge/main

hogeフォルダにバイナリ化したgoプログラムを配置した場合の例。
編集したら、下記の手順で再起動を行えば反映される。

supervisord.confを変更した場合の再読み込み手順

sudo supervisorctl reread

sudo supervisorctl update

sudo supervisorctl restart XX

プログラム内で環境変数を利用している場合の注意

筆者の環境だと、supervisorでデーモン化したプログラムから、環境変数がうまく読み込まれなかった。

デーモンが起動しているプロセス上の環境変数を確認する方法としては以下の通り。
①デーモンが起動しているプロセスを確認

ps ax | grep main
20591 ?        Sl     0:00 /home/ec2-user/hoge/main
20632 pts/1    S+     0:00 grep --color=auto main

②プロセス20591上での環境変数を確認

sudo strings /proc/20591/environ

出てこない場合、環境変数への追加が必要。

環境変数追加方法

.bashrcなどのファイルに直接書き込む方法
OR
supervisord.confに書き込む方法
の2通り存在する。

①~/.bashrcなどに直接書き込み

export DB_USER="sa"
export DB_Name="..."

②supervisord.confに書き込む方法
[program:XX]のenvironmentにカンマ区切りで環境変数をセットする。

[program:XX]
...
environment=DB_USER="sa",DB_Name="..."

supervisord.confを変更した場合の再読み込み手順を実行すれば、環境変数が反映されるはず。

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kyamasan
手を動かしていて詰まった箇所を備忘録として残しておきます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?