Sukoshi. Fuzoroi

某フリーPGの技術っぽいブログ。

CentOS 6.3 (64bit) に JS Bin をインストールする

CentOS 6.3 (64bit) に JS Bin をインストールする際にいくつかハマったので記録しておきます。

基本的なインストールの流れは Running a local copy of JS Bin の通り。
いかにも「ね、簡単でしょ?」的に書いてありますが…ハマりましたw

Node経由で一気に入れるかとPHPのソースを展開して入れるか…
正直どちらでもよかったんですが、Node環境も作りたかったのでNode経由で入れることにしました。


まずNodeのインストール。

yum install npm

yum install node ではないんですねw
npmを入れて依存でnodeも入るという雰囲気です。けっこうたくさん依存パッケージがあります。

nodeを入れたらあとは簡単♪npmでjsbinをサクッと入れてしまいましょう♪

npm install -g jsbin

そう…サクッと…さく…s…

サクッといかないね!
で、原因を最初にバラしてしまうと…サーバー時間が大幅に遅れていたために様々なビルトが失敗してたんでした…

時間あわせは大事だよ…ローカル環境だから気づかなかった。



そんなこともいざ知らず…

いくつか抜粋してエラーを調べてみると node-gyp.js のビルドに失敗している模様。

gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/lib/node_modules/jsbin/node_modules/sqlite3
gyp ERR! node -v v0.10.12
gyp ERR! node-gyp -v v0.9.5
gyp ERR! not ok 

(中略)

gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/lib/node_modules/jsbin/node_modules/bcrypt
gyp ERR! node -v v0.10.12
gyp ERR! node-gyp -v v0.9.5
gyp ERR! not ok 

node-gyp.js でいろいろググってみると、pythonのバージョンが古いとダメっぽいという記事を見つけたので、python のバージョンアップ。
でもyumでは既存の ver 2.6.6 までしかないので、ソースから。下記のサイトを参考にしました。

忘れるためのメモ: CentOS 6.2 に Python 2.7.2をインストールする

で、結構高スペックの開発環境なのに Python の make がいつまでたっても終わらない。よく見てみるとログがループしている。

make[2]: ディレクトリ `/root/src/Python-2.7.5' に入ります
make[2]: 警告: ファイル `Makefile.pre.in' の修正時刻が 3.1e+06 秒分未来の時刻です

この段階で時刻ズレに気づきました。あぁ!

ともかく時刻を直して、Python インストール完了。
あとは npm をアップデートして…

npm update -g

もう一度 JS Bin のインストール。

npm install -g jsbin

(中略)

jsbin@3.2.17 /usr/lib/node_modules/jsbin
├── soak@0.3.0
├── commander@1.0.0
├── flatten.js@0.1.0
├── async@0.1.22
├── grunt-contrib-concat@0.1.3
├── asyncjs@0.0.7
├── hogan.js@2.0.0
├── less@1.3.0
├── lynx@0.0.11 (mersenne@0.0.3, statsd-parser@0.0.4)
├── jade@0.26.3 (commander@0.6.1, mkdirp@0.3.0)
├── stylus@0.28.2 (debug@0.7.2, mkdirp@0.3.5, cssom@0.2.5)
├── grunt-contrib-uglify@0.1.2 (uglify-js@2.2.5, grunt-lib-contrib@0.5.3)
├── bcrypt@0.7.5 (bindings@1.0.0)
├── mysql@0.9.6 (hashish@0.0.4)
├── grunt-contrib-jshint@0.1.1 (jshint@0.9.1)
├── grunt@0.4.1 (which@1.0.5, dateformat@1.0.2-1.2.3, colors@0.6.0-1, hooker@0.2.3, eventemitter2@0.4.12, coffee-script@1.3.3, underscore.string@2.2.0-rc, nopt@1.0.10, iconv-lite@0.2.10, lodash@0.9.2, glob@3.1.21, minimatch@0.2.12, rimraf@2.0.3, findup-sync@0.1.2, js-yaml@2.0.5)
├── nodemailer@0.3.20 (simplesmtp@0.3.3, mailcomposer@0.2.0)
├── express@3.0.6 (methods@0.0.1, fresh@0.1.0, cookie-signature@0.0.1, range-parser@0.0.4, buffer-crc32@0.1.1, cookie@0.0.5, debug@0.7.2, commander@0.6.1, mkdirp@0.3.3, send@0.1.0, connect@2.7.2)
└── sqlite3@2.1.7

インストール完了。あっけないです。はい。
…ね、簡単でしょ?

あとは設定ファイルのひな形を config.local.json としてコピーして設定。最低限hostのURLさえ指定していれば確認はできます。

cd /usr/lib/node_modules/jsbin
cp config.default.json config.local.json

起動。

$ jsbin
JS Bin v3.2.17 is up and running on port 3000. Now point your browser at http://local-dev:3000