最近流行ってるようなので、流行に乗っかって。
インストールして試してみました。
環境
Ubuntu 10.10
Apache/2.2.16
nodejs 0.1.97
インストール
他の記事を見ていると、Githubから最新版を取ってきてコンパイルしてインストールしているようです。
取り敢えずは動かしてみることが目的なのでaptからインストールします。
$ sudo apt-get install nodejs $ nodejs -v 0.1.97
動かしてみる
$ touch http.js $ vim http.js
http.js
var sys = require('sys'),
http = require('http'),
port = 8000;
http.createServer(function(request, response) {
response.writeHead(200, {
'Content-Type': 'text/html'
});
response.end(request.url + ' - Hello World\n');
}).listen(port);
sys.puts('Server listening on port ' + port);
起動してアクセスしてみる。
$ nodejs http.js & $ curl localhost:8000 / - Hello World
ApacheからProxyさせる
defaultからVirtualHostの設定をコピーして編集。
$ cd /etc/apache2/sites-available $ sudo cp default nodejs $ sudo vim nodejs
nodejs
... RewriteEngine on RewriteRule /(.*) http://localhost:8000/$1 [P,L] ...
Directoryディレクティブの下あたりにでも適当に追加しておきましょう。ProxyさせるためにPオプションをオンにします。
VirtualHostを有効にし、apache2を再読込しましょう。
$ sudo a2ensite nodejs $ sudo /etc/init.d/apache2 reload
mod_proxyとmod_proxy_httpをオンにする
さて、ひと通りの設定しました。
いざ、ブラウザからアクセス…あれ…404エラー…。
エラーログ見てみる。
「attempt to make remote request from mod_rewrite without proxy enabled: proxy:http://localhost:8000/」
mod_proxyが有効になってなかったようです。有効にします。
$ sudo a2enmod proxy $ sudo /etc/init.d/apache2 reload
気を取り直して、ブラウザからアクセス…あれ…500エラー…だと…?
エラーログ見てみる。
「proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.」
httpプロトコルのproxyをハンドリングするためのモジュールが読み込まれてないようです。これはmod_httpになります。有効にしましょう。
$ sudo a2enmod proxy_http $ sudo /etc/init.d/apache2 reload
二度目の正直。ブラウザからアクセス。
出来たー!
参考リンク
node.js
Home – node – GitHub
node.jsの公式サイトとGithubのwikiです。
engineer blog in sikaku-chat: apache と nginx から node.js に proxy させる方法
インストールとapachdでproxyさせる方法はここを参考にさせて頂きました。
Route 477 – パッケージマネージャを備えたサーバサイドJavaScript環境、node.js , CommonJS準拠の依存関係解決ライブラリについて
node.js のホスティングサービスまとめ – 自分の感受性くらい
合わせて読みましょう。
mod_rewrite – Apache HTTP Server
mod_proxy – Apache HTTP サーバ
mod_rewriteとmod_proxyのドキュメントです。
One Trackback/Pingback
[...] か面倒くさかったので、ApacheからProxyさせました。 これだとloggerの:remote-addressにIPが出ないんですけどね・・・ 近々改善予定。 » mitukiii.jp | Ubuntuにnode.js入れてApacheからProxyさせてみた [...]
Post a Comment