dev memo
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.

Tumblr3.0の新機能解説にあるように、Disqusを使って、コメント欄が付くようにしてみました。

まずはDisqusでメールアドレスを登録してアカウントを作ります。

そうすると、掲示板用のURL(???.disqus.comの???に好きな名前を付けられる)と掲示板に付けるタイトルを聞いてくるので、適当なのを入力します。 この時、自分のサイトのURLを入力できるので、tumblrのページのURLでも入れておくといいでしょう。

やってみた。

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