ã“ã‚Œã¾ã§node.jsã®ã‚¢ãƒ—リã®ãƒ‡ãƒ—ãƒã‚¤ã«ã¯Herokuを使ã£ã¦ã„ãŸã®ã§ã™ãŒã€
無料アカウントã§ã¯ä¸Šé™ãŒã‚るらã—ã„ã®ã¨ã€ãã‚‚ãも一ã¤ã®ã‚µãƒ¼ãƒ“スã«ä¾å˜ã™ã‚‹ã®ã‚‚よã‚ã—ããªã„ã®ã§ã€åˆ¥ã®å€™è£œã‚’探ã—ã¾ã—ãŸã€‚
ã„ãã¤ã‹ã‚るよã†ãªã®ã§ã™ãŒã€æ˜”ã¯ç„¡æ–™ã§ã‚‚今ã¯çµ‚ã‚ã£ã¦ã„ãŸã‚Šã€
今も無料ã ã‘ã©ãƒ™ãƒ¼ã‚¿ã‚µãƒ¼ãƒ“スãªã®ã§æœŸé™ãŒã‚ã£ãŸã‚Šã¨ã€
ã‚ã¾ã‚Šã±ã£ã¨ã—ã¾ã›ã‚“。ビジãƒã‚¹ãƒ¢ãƒ‡ãƒ«ã¨ã—ã¦ãƒ•ãƒªãƒ¼ãƒŸã‚¢ãƒ ãŒã¡ã‚ƒã‚“ã¨
ã¾ã‚ã£ã¦ãªã„ã¨æŒç¶šæ€§ãŒãªã„ã§ã—ょã†ã€‚
一番ã€æœ‰æœ›ã‹ãªã¨æ€ã£ãŸã®ãŒRedHatã®
OpenShift
ã§ã™ã€‚
æ£å¼ã‚µãƒ¼ãƒ“スã—ã¦ã‹ã‚‰ã¯ã¾ã é–“ã‚‚ãªã„ã§ã™ãŒã€ç„¡æ–™ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒã‚µãƒãƒ¼ãƒˆãªã—ã¨ã„ã†å½¢ã§æ®‹ã£ã¦ã„ã‚‹ã®ã§ã€ä»Šå¾Œã‚‚継続ã™ã‚‹ã“ã¨ãŒæœŸå¾…ã§ãã¾ã™ã€‚
ãŸã ã€ç„¡æ–™ã§ãƒ›ã‚¹ãƒˆã§ãるアプリã¯2ã¤ã ã‘ã®ã‚ˆã†ã§ã€åŽ³ã—ã„ã§ã™ãŒã€‚
ã•ã¦ã€
Nodeã¨Angularを使ã£ã¦Twitterクãƒãƒ¼ãƒ³ã‚’15分ã§ä½œã‚‹ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚ャスト
ã§ä½œã£ãŸTwitterクãƒãƒ¼ãƒ³ã‚’OpenShiftã®ä¸Šã«ã®ã›ã‚‹ã“ã¨ã«ã—ã¾ã—ãŸã€‚
ã¾ãšã€OpenShiftã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆç™»éŒ²ã€‚ç°¡å˜ã§ã—ãŸã€‚次ã«ã€sshã®å…¬é–‹éµã®ç™»éŒ²ã€‚ã“れもコピペã™ã‚‹ã ã‘ã€ç°¡å˜ã€‚
続ã„ã¦ã€ã‚¢ãƒ—リã®ä½œæˆã€‚
domainãŒç©ºã„ã¦ãªã„ã¨ç™»éŒ²ã§ããªã„ã®ã§ã€ä½•åº¦ã‚‚トライã—ã¾ã—ãŸã€‚
å‹•çš„ã«ãƒã‚§ãƒƒã‚¯ã—ã¦ãれれã°ã„ã„ã®ã«ã€‚ã“ã®ã‚ãŸã‚Šã€ã¾ã ã¾ã ãªæ„Ÿã˜ã§ã™ã。
続ã„ã¦ã€ã‚½ãƒ¼ã‚¹ã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã€‚gitã®URLãŒè¡¨ç¤ºã•ã‚Œã‚‹ã®ã§ã€ãれをã€ãƒªãƒ¢ãƒ¼ãƒˆãƒªãƒã‚¸ãƒˆãƒªã¨ã—ã¦ç™»éŒ²ã—ã¾ã™ã€‚
$ git remote add openshift <URL>
ã§ã€PUSHã—ã¾ã™ã€‚
$ git push openshift master
ã“ã“ã¾ã§å¤§ããªå•é¡Œãªã—。ã“ã®ã‚ã¨å¤§å¤‰ã§ã—ãŸã€‚
ã¾ãšã€ä»Šå›žã®ã‚¢ãƒ—リã¯Facebookã¨é€£æºã™ã‚‹ã®ã§ãã®æƒ…å ±ã‚’å…¥ã‚Œãªã„ã¨ã„ã‘ãªã„ã®ã§ã™ãŒã€ãã‚Œã¯ãƒªãƒã‚¸ãƒˆãƒªã«ã¯ã„れるもã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。
Herokuã§ã¯ç’°å¢ƒå¤‰æ•°ã‚’使ã£ã¦ã„ã¾ã—ãŸã€‚
openshiftã§ã‚‚環境変数を使ãˆã‚‹ã‚ˆã†ã§ã€
$ vi ~/app-root/data/.bash_profile
ã§è¿½è¨˜ã™ã‚Œã°ç’°å¢ƒå¤‰æ•°ã‚’è¨å®šã§ãã¾ã™ã€‚
ã—ã‹ã—ã€ã“ã®ã¾ã¾ã ã¨nodeã‚’èµ·å‹•ã™ã‚‹ã¨ãã«ãã®è¨å®šã¯èªã¿è¾¼ã¾ã‚Œãªã„よã†ã§ã™ã€‚
openshiftã«ã¯pre_startã¨ã„ã†ã‚¹ã‚¯ãƒªãƒ—トãŒã‚ã£ã¦ã€ãれを使ã£ã¦ã€
source .bash_profile
ã™ã‚‹ã‚ˆã†ã«ã—ãŸã®ã§ã™ãŒã€ã†ã¾ãã„ãã¾ã›ã‚“ã§ã—ãŸã€‚
調ã¹ã¦ã„ã‚‹ã†ã¡ã«åˆ¥ã®æ–¹æ³•ã‚’見ã¤ã‘ã¾ã—ãŸã€‚nodeã§ã—ã‹ä½¿ãˆãªã„よã†ãªã®ã§ã™ãŒã€
$ vi ~/nodejs/configuration/node.env
ã§ç’°å¢ƒå¤‰æ•°ã®è¨å®šã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ä¸èº«ã¯ã€.bash_profileã§ã®ç’°å¢ƒå¤‰æ•°ã®è¨å®šã¨åŒã˜ã§ã™ã€‚
ã“ã‚Œã¯ã€ã†ã¾ãè¡Œãã¾ã—ãŸã€‚
次ã®å•é¡Œã¯ã€EACCESエラーã§ã™ã€‚ãªãœã‹ã€webサーãƒã®èµ·å‹•ã§ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã®ã§ã™ã€‚ã“ã‚Œã¯ã€ã©ã‚“ã´ã—ゃã®è¨˜äº‹ãŒã‚ã‚Šã¾ã—ãŸã€‚
https://www.openshift.com/forums/openshift/other-threads-didnt-help-503-service-unavailable
OpenShiftã§ã¯INADDR_ANYã§listenã§ããªã„よã†ã§ã™ã€‚
app.jsを次ã®ã‚ˆã†ã«å¤‰ãˆã¦å¯¾å‡¦ã—ã¾ã—ãŸã€‚
app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3000);
app.set('ipaddr', process.env.OPENSHIFT_NODEJS_IP);
....
http.createServer(app).listen(app.get('port'), app.get('ipaddr'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
ã“ã‚Œã§ã€ã‚¢ãƒ—リãŒæ£å¸¸ã«å‹•ä½œã—ã¾ã—ãŸã€‚
慣れã¦ã—ã¾ãˆã°ã€OpenShiftã§ã‚‚Herokuã¨åŒæ§˜ã®ä½¿ç”¨æ„Ÿã§node.jsã®ã‚¢ãƒ—リをデプãƒã‚¤ã§ããã†ã§ã™ã€‚ãŸã ã€å›°ã‚Šãã†ãªã“ã¨ãŒä¸€ã¤ã ã‘ã‚ã‚Šã¾ã™ã€‚OpenShiftã§ç”¨æ„ã•ã‚Œã¦ã„ã‚‹ã®ã¯ã€node v0.6ãªã®ã§ã™ã€‚ç¾åœ¨ã®å®‰å®šç‰ˆãŒv0.10ãªã®ã§2世代もå‰ã§ã™ã€‚Herokuã§ã¯v0.10ã‚‚v0.8も使ãˆã¾ã™ã€‚開発スピードãŒé€Ÿã„node.jsエコシステムã§ã¯è‡´å‘½çš„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。npmã¨ã‹ãƒ‘ッケージã«ã‚ˆã£ã¦ã¯å‹•ã‹ãªã„ケースãŒã§ã¦ããã†ã§ã™ã€‚
今回ã¯è©¦ã—ã¾ã›ã‚“ã§ã—ãŸãŒã€node.jsカートリッジã¨ã¯åˆ¥ã«ã€DIYカートリッジã¨ã„ã†ã®ãŒã‚るらã—ãã€ãれを使ãˆã°å¥½ããªãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’入れるã“ã¨ãŒã§ãã‚‹ãã†ã§ã™ã€‚ãã‚‚ãã‚‚ã€Herokuã§ã¯ã§ããªã„sshãŒã§ãã‚‹ã®ã§ã„ã‚ã„ã‚自由度ã¯é«˜ãã†ã§ã™ã。
ã‚‚ã†ä¸€ã¤ã€Herokuã¨æ¯”ã¹ã¦ä¸ä¾¿ã‚’æ„Ÿã˜ãŸã®ã¯ã€ãƒ‡ãƒ—ãƒã‚¤ã®é…ã•ã§ã™ã€‚pushã—ã¦ã‹ã‚‰å¾…ã¤ã“ã¨æ•°åˆ†ã‹ã‹ã£ãŸã‚ˆã†ãªæ°—ãŒã—ã¾ã™ã€‚Herokuã£ã¦ã™ã”ã„ã‚“ã ãªãã€ã¨æ€ã£ãŸçž¬é–“。
実際ã«ä»Šå›žãƒ‡ãƒ—ãƒã‚¤ã—ãŸã‚¢ãƒ—リã¯ã“ã¡ã‚‰ã§ã™ã€‚
http://twitterclonesample-nodeangularapp.rhcloud.com/
ãªã‚“ã«ã—ã¦ã‚‚PaaSã®é¸æŠžè‚¢ãŒå¢—ãˆã‚‹ã“ã¨ã¯ã‚ˆã„ã“ã¨ã§ã™ã€‚
興味ã‚ã‚‹æ–¹ã¯è©¦ã—ã¦ã¿ã‚‹ã¨è‰¯ã„ã§ã—ょã†ã€‚
9/10追記。
~/nodejs/configuration/node.env
ã®ãƒ•ã‚¡ã‚¤ãƒ«ã§ã™ãŒã€ã„ã¤ã®ã¾ã«ã‹å‹æ‰‹ã«æˆ»ã£ã¦ã„ã¦ã€ãƒ—ãƒã‚»ã‚¹ãŒ8月後åŠã‹ã‚‰å‹•ã„ã¦ã„ãªã‹ã£ãŸã“ã¨ãŒåˆ¤æ˜Žã—ã¾ã—ãŸã€‚ã¨ã‚Šã‚ãˆãšã€å†åº¦æ›¸ã„ã¦ãŠãã¾ã—ãŸãŒã€ã¾ãŸã€å‹æ‰‹ã«ä¸Šæ›¸ãã•ã‚Œã¦ã—ã¾ã†ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。もã£ã¨ã„ã„方法ãŒã‚ã‚‹ã®ã§ã—ょã†ã‹ã€‚