2012年5月30日

【AWS】EC2のCentOS6.0にnode.jsでproxy serverを立ててapacheと共存させる


環境
サーバ:Amazon EC2 Tokyo Region micro instance
OS:CentOS 6.0 (rightimage_centos_6.0_x86_64_20110810.1_ebs)

翻訳作業に疲れたのでサーバを触っていたdommyです。

今回は新しいInstanceを立てて、node.jsでproxyサーバを立ててみました。
ついでに、ApacheのListenを8080番ポートへ変更し、
そちらへリクエストを送るようにしてみました。


node proxyの立ち上げ


最初に、shellはbashに切り替えます。面倒なのでrootになっちゃいます。
dommy$ sudo su -
root# bash

ついでに必要モジュールのインストール
root# yum install openssl-devel

まずはnode.jsのインストール。
root# cd /usr/local/src
root# wget http://nodejs.org/dist/v0.6.18/node-v0.6.18.tar.gz
root# tar xvzf node-v0.6.18.tar.gz
root# cd node-v0.6.18
root# ./configure
root# make
root# make install
はい、node.jsのインストールが完了しました。

ここからnpmのインストール
root# curl http://npmjs.org/install.sh | sh

そしてforeverのインストール
root# npm install forever -g

さらにnode-devのインストール
root# npm install node-dev -g

あと、proxyのプロジェクト作成とnode-http-proxyのインストール
root# mkdir -m 755 /proxy
root# cd /proxy
root# npm install http-proxy
root# vi server.js

やっと、プログラムを書き始めます。
var httpProxy = require('http-proxy');

var options = {
  router : {
    // apache
    'apache.shonanshachu.com' : 'localhost:8080',
  }
}

var proxyServer = httpProxy.createServer(options);
proxyServer.listen(80);

これをforeverコマンドとnode-devを利用してdeamon化します。
root# forever start -c node-dev /proxy/server.js
root# forever list

すると、proxyサーバが立ち上がります。
すごい簡単に出来ました。

Apacheのインストール


続きましてApache側の作業になります。

普通にapacheのインストール
root# yum -y install httpd
root# vi /etc/httpd/conf/httpd.conf

設定ファイルの編集
# Listen 80
↓
Listen 8080

# <VirtualHost *:80>
↓
<VirtualHost *:8080>
ポート変更はこれだけ。

Apacheの起動と自動起動設定
root# apachectl configtest
root# /etc/rc.d/init.d/httpd start
root# chkconfig httpd on

最後にEC2のポート開放ですが、
80番だけ開ければapacheの8080へアクセス出来ます。