リリース時の環境設定

土日は、疲れたやら休めたやら???

さて、クロスコンパイルやって、それからって所で止めてました。
○ラゴン○ールのように、引っ張りまくっても良いのですが、オリジナルストーリー(回想?)さえショボイという事態を招きたくないので、サクッと。

まず、どうも

$ ./run.sh 
Listening on :9000...

という状態は、良くないらしい。

バックグランド実行されていないじゃなくて、バックグランド実行さえされていないというのが正しいみたいです。
http://www.snip2code.com/Snippet/208713/Go-Revel-init-script-for-CentOS-6-x
スクリプトをコピペしてstart実行→status実行
とすると、"Process dead but pidfile exists."とかでて、プロセスが死亡している模様。


ひとしきり悩む・・・。


そう言えば、Railsだと、productionモード時の定数参照先がかわってたなぁと。
GoRevelも当然そういったのが有ったはずで、調査する。
$GOPATH/app_name/conf/app.conf

[prod]
mode.dev = false
.
.
db.spec   = "host=localhost port=5432 dbname=******"

ほっほう、どうも[prod]の部分がリリース環境で、そこに設定値を書けば良さげです。
尚、そうすれば良いという確信めいたHP、ブログが見当たらず、この時点では推測。
やっぱ、リリース環境で一番変化するのは、DBと言うことで、接続先変数について、書き直しておく。

ちなみに、既に書いて有る変数を消す必要がないようで、指定キーのエリアにあると、既にある変数を上書きするようです。
一応、devモードとの混在でも問題なかった事は確認しています。


そして、再度コンパイルして、アップロードして、解凍して、先のスクリプトにてstart実行、status確認すると・・・

# ./app_name.sh start
Starting app_name...                               Ok. (pid=7377)
# ./app_name.sh status
Checking app_name...                               Running. (pid=7377)

動いているぽ。
このあと、NGINXとの連動をば。

補足

シェルスクリプトの実行には、実行権限が必要です。
一応755を付与しておけば、動きますが、/var/run/app_name.pid を作成出来る実行者が必要です。
先のディレクトリにファイル作成権限がないユーザーだと、プロセスがあるけど、pidが無いという状況になってスクリプトによる実行制御がアレになります。
なので、私の場合は、rootによる実行をしています。