LoginSignup
12
12

More than 5 years have passed since last update.

Bluemix PaaSでNode.js+Express4アプリケーションを動かす

Last updated at Posted at 2014-11-05

IBMのPaaS Bluemixでnode.js+express4のアプリケーションを動かす基本的な方法をまとめました。

前提

手順の概要

  1. アプリケーションの作成
  2. アプリケーションの修正
  3. Bluemixへのプッシュ
  4. 起動確認

アプリケーションの作成

ここでは、単純なexpress4アプリケーションを作成します。ローカル環境では以下のバージョンを使用しています。

  • node: 0.10.33
  • npm: 1.4.28
  • express: 4.9.0

以下のようにして、expressアプリケーションを作成し、ローカルでの動作確認をします。

express nodesample
cd nodesample
npm install
npm start # test from browser: "http://localhost:3000/"

アプリケーションの修正

Bluemixは、node.jsでlistenするポート番号を環境変数VCAP_APP_PORTで与えますので、該当部分を変更する必要があります。Express4では、bin/wwwを修正します。

*** nodesample.orig/bin/www 2014-11-05 21:18:15.684411184 +0900
--- nodesample/bin/www  2014-11-05 21:19:17.448408741 +0900
***************
*** 2,8 ****
  var debug = require('debug')('nodesample');
  var app = require('../app');

! app.set('port', process.env.PORT || 3000);

  var server = app.listen(app.get('port'), function() {
    debug('Express server listening on port ' + server.address().port);
--- 2,8 ----
  var debug = require('debug')('nodesample');
  var app = require('../app');

! app.set('port', process.env.VCAP_APP_PORT || 3000);

  var server = app.listen(app.get('port'), function() {
    debug('Express server listening on port ' + server.address().port);

アプリケーションの修正は以上です。

Bluemixへのプッシュ

次にアプリケーションをBluemixにプッシュします。

# Cloud Foundryの対象APIに`bluemix.net`を設定
$ cf api https://api.ng.bluemix.net

# Bluemixにログイン
$ cf login -u <ユーザ名>

# Bluemixにカレントディレクトリ以下のアプリケーションをプッシュ
#   アプリケーション名: node-express-sample
#   ランタイム(buildpack): sdk-for-nodejs
#   メモリ上限: 128M (デフォルトは64M)
$ cf push node-express-sample -m 128M -b sdk-for-nodejs

今回はRDBMSなどのサービスを特に利用せず、"SDK for node.js"のみを使用します。"SDK for node.js"はダッシュボードでは"runtimes"のひとつとして確認できますが、CLIでは、cf marketplace(利用できるserviceの一覧)ではなくcf buildpacks(利用できるbuildpackの一覧)に含まれます。Buildpackはcf create-serviceを必要とせず、cf push-bオプションで直接指定してプッシュします。(この段落の説明は、今回試した動作に基づいており、Cloud Foundryの詳細な仕様を確認したわけではありませんのでご了承ください)

なお、アプリケーションのメモリですが、デフォルトの64MBではメモリ不足でうまく動作しませんでしたので、メモリを128Mに拡張しています。ここではcf pushのオプションで指定していますが、もちろんmanifest.ymlに記述しても構いません。

起動確認

ブラウザで http://node-express-sample.mybluemix.net/ を開くと、アプリケーションが起動していることを確認することができます。

node-express-sample.mybluemix.net.png

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12