CentOS 5.5にpython26を入れてnode.js 0.5.7を入れる
CentOS 5のpythonは2.4なので、node.jsのlatest(現時点では 0.5.7)を入れようとすると以下のようなエラーとなってしまう。node.jsの公式installationでも「2.6 or higher」とある。
File “/home/***/.nave/src/0.5.7/wscript”, line 222
“-pre” if node_is_release == “0” else “”
^
SyntaxError: invalid syntax
Failed to configure 0.5.7
fail
そこでpython 2.6を入れる。まず拡張リポジトリを登録する。
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
と思ったら自分の環境ではもう入ってた。たぶん以前にやったんだろう、、
気を取り直して python 2.6を入れる。
# yum install python26 —enablerepo=epel
そのままだとnode.jsの最新を入れられないので、pythonをpython26を見るように手を入れる。
$ mkdir ~/bin
$ ln -s `which python26` ~/bin/python
あとはPATHの順序を $HOME/binを最優先にして
$ .nave/nave/nave.sh install latest
とするとOK.
node.js: http-proxyとdaemon化
※ node.js 0.4.12
apacheやnginxはリバースプロキシとして使うとWebSocketを通さないので、node.jsのhttp-proxyとdaemonを使ってポート80で動かすことにした。(nginxではpatchがあるので出来ないこともないが、patchを当てたものは経験上メンテが大変なので、、)
$ npm install -g http-proxy
$ npm link http-proxy
$ npm install -g daemon
$ npm link daemon
そして色んなとこから切り貼りして作ったプロキシがこれ。後ろではポート3001で動かしている。
var util = require(‘util’), daemon = require(‘daemon’);
var options = {
hostnameOnly: true,
router: {
‘<ホスト名>’: ‘127.0.0.1:3001’,
}
}
var httpProxy = require(‘http-proxy’);
var proxyServer = httpProxy.createServer(options);
proxyServer.listen(80);
var logfile = ‘/var/log/node-proxy’;
var pidfile = ‘/var/run/node-proxy.pid’;
daemon.daemonize(logfile, pidfile, function(err, pid) {
// We are now in the daemon process
if (err) return sys.puts(‘Error starting daemon: ’ + err);
util.log(“Daemon started successfully: ” + pid);
});
これをsudoで普通に動かしておいてもいいのだが、init.dに登録してみた。そのうちmonitで監視するようにしたい。
node.jsアプリのプロセス管理: forever
ポート3000番とかのアプリのプロセス管理のためにforeverを入れる。
$ npm install -g forever
そして
forever start <アプリ名/app.js>
で起動。もうシェルから抜けてOK.
他にも以下のような感じで。
$ forever list
$ forever stop <アプリID(listの結果から)>
ただしこれを使って80番では動かせない。ので、daemonとinit.dを使う。(別エントリー)
参考
node.jsのフレームワーク: express
expressとjadeをグローバルインストール。
$ npm install -g express jade
$ express -v
2.4.6
ひな形作成は
$ express <アプリ名>
ただしこのまま動かすと
Error: Cannot find module ‘express’
となるので、
$ npm link express
としてやる。
node.jsのinstall
naveを使い、現在の安定板の0.4.12を入れる。latestを指定すると開発版が入ってしまうので注意。
$ mkdir ~/.nave
$ cd ~/.nave/
$ git clone git://github.com/isaacs/nave.git
$ ~/.nave/nave/nave.sh install 0.4.12
ここでしばらくビルドが走るので、終わったら使うバージョンを指定する。
$ ~/.nave/nave/nave.sh use 0.4.12
Already installed: 0.4.12
using 0.4.12
これでOK.
$ node -v
v0.4.12
さらにnpmも入れておく。
$ curl http://npmjs.org/install.sh | sh
$ npm -v
1.0.30