Skip to content

Ubuntuにnode.js入れてApacheからProxyさせてみた

|

最近流行ってるようなので、流行に乗っかって。
インストールして試してみました。

環境

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

二度目の正直。ブラウザからアクセス。
出来たー!

http://nodejs.mitukiii.jp/

参考リンク

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

  1. [...] か面倒くさかったので、ApacheからProxyさせました。 これだとloggerの:remote-addressにIPが出ないんですけどね・・・ 近々改善予定。 » mitukiii.jp | Ubuntuにnode.js入れてApacheからProxyさせてみた [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*