nginx + node.js でバーチャルホストなサイトを作成


前回とほとんど同じ内容になってしまいました。node といえば nginx!! だと思うので順序は反対になっちゃいましたが。

今回は以下の記事で紹介された dochub というプロダクトを nginx + node.js で公開してみます。例によって環境は OS X Mountain Lion です。

多数の言語のAPIドキュメントを一元管理「DocHub」 – MOONGIFT|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデザイナー向けブログ
http://www.moongift.jp/2012/07/20120728-2/

dochub のインストール

dochub は node.js で動きます。node.js についての詳しい説明は省きますが、要するに昨今流行しているサーバーサイド Javascript の先駆けとなったものです。

一応 node.js のインストールから手順を載せておきます。

# homebrew で node.js をインストール
$ brew -v install node
# npm (Perl で言う、cpanm みたいなもの)をインストール
$ curl https://npmjs.org/install.sh | sh
# dochub をダウンロード
$ git clone [email protected]:rgarcia/dochub
$ cd dochub
# 依存モジュールをインストール
$ npm install
# 試しに起動してみる
$ node web.js
# http://localhost:5000/ でアクセスできるはず

node.js 自体のコンパイルに結構時間がかかりますが、dochub のインストール自体は簡単ですねー。

dochub の起動スクリプト

launchctl で自動起動させる起動スクリプトを書きます。

#!/bin/sh
DIR=$(cd $(dirname $0);pwd)
PORT=18522
NODE=/usr/local/bin/node
APP=/Library/WebServer/Applications/dochub/web.js
cd $DIR
PORT=$PORT $NODE $APP

パスやポート番号は適宜変えてください。実行権限も忘れずに。

launchctl の設定

.plist ファイルを用意します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>delphinus.dochub-run</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Library/WebServer/Applications/dochub/web.run</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

前回の記事のものを一部修正しただけです。

nginx の設定

前回とほとんど同じなので、更に省略します。

(省略)

http {

    (省略)

    upstream dochub {
        server 127.0.0.1:18522;
    }

    (省略)

    server {
        listen       80;
        server_name  dochub.remora.cx;

        access_log /var/log/nginx/dochub-access.log;
        error_log /var/log/nginx/dochub-error.log;

        location / {
            proxy_pass http://dochub;
            break;
        }
    }
}

サーバーの起動/再起動

dochub を起動し、nginx を再起動します。

# node の起動
$ sudo launchctl load /Library/LaunchDaemons/delphinus.dochub-run.plist
# nginx の再起動
$ sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
$ sudo pkill nginx
$ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

後は、DNS の設定で dochub.remora.cx のサブドメインを使えるようにすれば、http://dochub.remora.cx が開けるようになっているはずです。

まとめ

というわけで、サーバーの公開まであっという間に出来てしまいました。

尤も、このプロダクトは最初の記事にありますと折り、社内 LAN などでドキュメント置き場として利用するために作られており、インターネットに公開するサーバーに置く意味は余りありません。(ネットに繋がるんだったら本家のドキュメントページを見ればいいしね)

まあ練習ってことで。

コメントを残す