一部でDynamoDBを使いたかったので、AWS SDK for Node.jsを使用する必要がありました。
ドメインはメインのPHPのAPIと同じにしたかったので、proxyを設定して運用することにしました。
以下が今回設定した環境です。
※リバースプロキシを設定したいので、apache2.4以降のmod_proxy_wstunnel.so
が必要です。
今回はhttp://example.com/socket.io
の、/socket.io
以降アクセスした場合はnode、他は/var/www/html
以下が読み込まれるようにしたいと思います。
expressを使うと楽なので、node_modulesにexpressをインストールします。
npm install express
例ではnode.jsは3000ポートを使用します。
app.js
var port = 3000,
express = require('express'),
app = express(),
http = require('http').createServer(app),
〜
http.listen(port);
実行はバックグラウンドで動いてくれるforever
が便利なので、インストールします。
npm install forever -g
forever start app.js
nodeが実行されたら、apacheの設定をします。
デフォルトに無いので、モジュール読み込みのconfにmod_proxy_wstunnel.so
を追加します。
/etc/httpd/conf.modules.d/00-proxy.conf
〜
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
プロキシ設定をします。
/etc/httpd/conf/httpd.conf
〜
ServerName example.com
DocumentRoot "/var/www/html"
〜
<IfModule mod_proxy.c>
ProxyPass /socket.io http://127.0.0.1:3000/
ProxyPassReverse /socket.io http://127.0.0.1:3000/
</IfModule>
〜
ブラウザにアクセスして以下が表示されれば成功です。
ブラウザ
Cannot GET /
おまけ:サーバー再起動した時用に以下の設定をrc.localに追加すると便利です。
/etc/rc.local
〜
(cd /home/-/-/ && forever start app.js)