nginxを気軽にインストールできるインストールマネージャ、ngxbrewを作りました!

読了まで:約5分


概要: ngnxbrew というものを作った


こんにちま!

とは言っても朝っぱらですが、さっきこの記事書いてたら Emacs がクラッシュして、 さっきまで書いていた内容が全部パーになった、にゃるらコト岡村 直樹(24)です。 皆様おはようございます。

この前の記事で、うつになってどうこう、とか言っておりましたが、 最近では抗うつ薬のおかげですっかり元気なり、どれくらい元気かっていうと、 朝早くに目が覚めてから、 パソコン(Macbook Air)に病的にのめり込んで Rackhub の環境構築をする、 ということができるぐらい元気になりました。 あれ、それヤンでるんじゃね。別の意味で。

で、近状報告は良いとして、このたび、 大量のアクセスも軽快に捌くということで人気の HTTP サーバ、

を気軽にインストールできるインストールマネージャ、

というものを作りました。

これは何するものかっていうと、 perlbrewとかnodebrewとかpythonbrewとかみたいに、 複数のバージョン、あるいは個別のコンパイルオプションを指定したnginxを、 気軽にインストール and 管理できるようにしたものです。

なんでこんなもん作ったかというと、

  1. [[Rackhub http://rackhub.net/]] で nginx 使って WebDAV したい!
  2. システムの nginx は使いたくないなー
  3. nginx ってモジュール組み込むのに再コンパイルが必要なのか!
  4. _ 手動インストールめどい_
  5. そうだ!  perlbrew とか参考にしてngxbrewっというのを作れば良いんじゃね!?

っていうのが大体の流れ。まあアレだ、楽するために全力でコード書くという、 プログラマーの三大美徳的な感じです。

で、このngxbrew、実際に作る際に、

を多大に参考に致しました。ngxbrewは nodebrew が無かったら、 多分完成してなかったと思います。hokaccha++

さて、経緯とか謝辞とかその辺にして、実際の使い方を紹介したいと思います!

ngxbrewのインストール

ngxbrewをインストールするには、ワンライナーで、

$ curl https://raw.github.com/nyarla/ngxbrew/master/ngxbrew | perl - setup

すれば、一発で多分入ると思います。

あとその際に環境変数NGXBREW_ROOTが指定されていると、 任意のディレクトリにngxbrewをインストールできます。 ちなみにデフォルトは~/.ngxbrew/です。

で、その後に$NGXBRW_ROOT/binにパスを通しておきます。 確認はwhich ngxbrewでパスが表示されれば OK。

これで準備は完了です。簡単でしょ?

ngxbrewを使った nginx のインストール

んで、次が本番、ngxbrewを使った nginx のインストール方法。

ngxbrewで nginx をインストールするには、大体、

$ ngxbrew install <version> <name> --enable="<modA>,<modB>"

と言った感じでインストールします。

引数に関しては、

<version>   - インストールしたいnginxのバージョン
<name>      - インストールするnginxのラベル
--enable    - 有効にしたいnginxのコアモジュール。複数指定可能
例えば`--enable=http_dav`と指定すると、
./configre --with-http_dav_moduleと指定したのと同等になる。
--disable   - 無効にしたいnginxのコアモジュール。
指定方法は`--enable`と同等
--module    - 追加したいnginxの3rd party moduleの指定。後述
--configure - ./configureに直接渡す引数

という感じです。

引数が足りなかったり、あるいは間違ってたりすると、 nginx の./configureで止まるので、そこらあたりは大丈夫です。

ngxbrewでコアモジュール以外のモジュールをインスコする方法

さて、さっきの引数の説明で、

  • --module

という指定がありましたが、これは、nginx のコアでは提供されていない、 第三者が作ったモジュールを組み込む際に指定します。

この--moduleという引数を使うには、ちょっとした事前準備が必要で、 ngxbrewをインストールしたディレクトリ以下のmodulesディレクトリに、 拡張モジュールの一式が展開されている必要があります。

例えば、ngxbrewのインストール先が~/.ngxbrewで、 WebDAV 用の拡張モジュールである、

を組み込みたい場合には、

$ cd ~/.ngxbrew/modules
$ git clone git://github.com/arut/nginx-dav-ext-module.git
$ ls -F
nginx-dav-ext-module/

した後に、

$ ngxbrew install 1.2.1 webdav --enable="http_dav" --module="nginx-dav-ext-module"

という感じで指定してインストールすると、 指定した拡張モジュールがインストールできます。

本当はこの辺り自動化すると良いかな? とは思うのですが、 拡張モジュールの配布方法が、github だったり tmercurial だったりして、 色々とバラバラなので、その辺りは手作業でやりましょう、 ということに今のところなってます。

ngxbrewでインストールした nginx を使う

んで、ngxbrewでインストールした nginx を使うには、

$ ngxbrew use <name>

を指定すると、自動的に$NGXBREW_ROOT/bin以下に、 nginx へのシンボリックリンクが張られます。

その他色々

他のコマンド等については、

$ ngxbrew help

README.mdを読むか、あるいはソース読むかをしてください。

今のところ、ngxbrewは作ったばかりで、ドキュメント等は整備してないので、 その辺りちょっとハードルが高いかもしれませんが。

ちなみにngxbrewには僕があると良いなーと思う機能のみを実装していて、 他の必要な機能等が思いついてないので、もしこういう機能欲しい! とかあったら、

か、github の issue を立てるかでお知らせください。 僕が必要と判断し、かつ実装可能であれば実装したいと思ってます。

とまあそんな感じです

とりあえず今回作ったngxbrewについては今のところそんな感じです。

これ大体一日か二日で作った急ごしらえなソフトウェアなので、 まだまだ未熟な面があるかと思いますが、基本的な機能はそろってるので、 結構使えるんじゃないかなーと思います。

あと僕はngxbrewを使って、実際に Rackhub に WebDAV 環境を整えてあったりします。 なんで Rackhub に WebDAV 環境を整えてるかはまた別の機会に紹介したいと思いますが、 とりあえず今日の所はそんな感じです。

という訳で以上、nginx を気軽にインストールできるソフトウェア、 ngxbrewを作ったよーというお話でした。

ngxbrew、良かったら使ってみてください。

それでは。

ノシ

#FIXME

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。