概要: ngnxbrew というものを作った
こんにちま!
とは言っても朝っぱらですが、さっきこの記事書いてたら Emacs がクラッシュして、 さっきまで書いていた内容が全部パーになった、にゃるらコト岡村 直樹(24)です。 皆様おはようございます。
この前の記事で、うつになってどうこう、とか言っておりましたが、 最近では抗うつ薬のおかげですっかり元気なり、どれくらい元気かっていうと、 朝早くに目が覚めてから、 パソコン(Macbook Air)に病的にのめり込んで Rackhub の環境構築をする、 ということができるぐらい元気になりました。 あれ、それヤンでるんじゃね。別の意味で。
で、近状報告は良いとして、このたび、 大量のアクセスも軽快に捌くということで人気の HTTP サーバ、
を気軽にインストールできるインストールマネージャ、
というものを作りました。
これは何するものかっていうと、
perlbrew
とかnodebrew
とかpythonbrew
とかみたいに、
複数のバージョン、あるいは個別のコンパイルオプションを指定したnginx
を、
気軽にインストール and 管理できるようにしたものです。
なんでこんなもん作ったかというと、
- [[Rackhub http://rackhub.net/]] で nginx 使って WebDAV したい!
- システムの nginx は使いたくないなー
- nginx ってモジュール組み込むのに再コンパイルが必要なのか!
- _ 手動インストールめどい_
- そうだ! 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