OpenShiftでnode.jsを動かすときに注意すること

  • 投稿日:
  • by

node.jsで作ったサンプルアプリをOpenShiftで動かそうとして、苦労した話を以前紹介したのですが、その後プロセスが落ちてしまうことが2度ありました。クラウドなのに。

一度目は、

~/nodejs/configuration/node.env

の環境変数の設定が書き戻ってしまう問題でした。 おそらく、OpenShift側のシステム更新のタイミングかなにかで、~/nodejsが丸ごと置き換わっているのだろ思われます。 このときは、症状は分かったもののそんなに頻繁に起こらないだろうと思って、またそのファイルを手動でいじって、プロセスを再起動して動かしました。

ところが、二度目が来たのです。 しかも今回はnode.envが書き換わるだけでなく、他にも問題がありました。 色々調べた(結局、起動スクリプトを読んだ)結果、以前はpackage.jsonに

"script": { "start": "node app.js"}

と書いておけばよかったのですが、今回の更新(?)でその設定は読まれなくなり、代わりに、

"main": "app.js"

を書かなければいけなくなりました。 これで一件落着。

しかし、また次の更新タイミングで、node.envが書き換わってしまうことは目に見えています。そこで、別の方法を探しました。ドキュメントを読んでみると、どうやら、クライアント側のコマンドツールであるrhcを使うとrhc set-envのようにすることで、環境変数が設定できるらしいのです。でも、rhcを入れて試すのは面倒なので、なんとかsshでファイルを編集するだけでできないか調べました。

そして、見つけました。前回調べた時は見つからなかったのですが、ありました。

~/.env/user_vars/

です。ここに環境変数ごとにファイルを作成しておくと、ちゃんと読み込まれるようです。~/.env/直下のファイルを参照すると分かります。直下のファイルはroot権限でしか変更できないのですが、user_varsの下は書き込み権限があるのです。

ぜひ、お試しください。

ところで、起動スクリプトを読んでいるときに、node010という文字列を見つけました。どうやら、OPENSHIFT_NODEJS_VERSIONという環境変数が0.10のときはnode010になるようで、もしかしたらnode-v0.10.*が動くのか、と期待します。試してみる?どうする?またの機会にしましょう。

しかし、こういう話ってどこかのドキュメントをちゃんと読めば載っているのでしょうか。