概要: ngnxbrew というものを作った
こんにちま!
とは言っても朝っぱらですが、さっきこの記事書いてたら Emacs がクラッシュして、 さっきまで書いていた内容が全部パーになった、にゃるらコト岡村 直樹(24)です。 皆様おはようございます。
この前の記事で、うつになってどうこう、とか言っておりましたが、 最近では抗うつ薬のおかげですっかり元気なり、どれくらい元気かっていうと、 朝早くに目が覚めてから、 パソコン(Macbook Air)に病的にのめり込んで Rackhub の環境構築をする、 ということができるぐらい元気になりました。 あれ、それヤンでるんじゃね。別の意味で。
で、近状報告は良いとして、このたび、 大量のアクセスも軽快に捌くということで人気の HTTP サーバ、
を気軽にインストールできるインストールマネージャ、
https://github.com/nyarla/ngxbrew/ngxbrew
というものを作りました。
これは何するものかっていうと、
perlbrew
とかnodebrew
とかpythonbrew
とかみたいに、
複数のバージョン、あるいは個別のコンパイルオプションを指定したnginx
を、
気軽にインストール and 管理できるようにしたものです。
なんでこんなもん作ったかというと、
- 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
か
https://github.com/nyarla/ngxbrewngxbrew
のREADME.md
を読むか、あるいはソース読むかをしてください。
今のところ、ngxbrew
は作ったばかりで、ドキュメント等は整備してないので、
その辺りちょっとハードルが高いかもしれませんが。
ちなみにngxbrew
には僕があると良いなーと思う機能のみを実装していて、
他の必要な機能等が思いついてないので、もしこういう機能欲しい!
とかあったら、
Tweets by Nyarla Twitter: @nyarla
か、github の issue を立てるかでお知らせください。 僕が必要と判断し、かつ実装可能であれば実装したいと思ってます。
とまあそんな感じです
とりあえず今回作ったngxbrew
については今のところそんな感じです。
これ大体一日か二日で作った急ごしらえなソフトウェアなので、 まだまだ未熟な面があるかと思いますが、基本的な機能はそろってるので、 結構使えるんじゃないかなーと思います。
あと僕はngxbrew
を使って、実際に Rackhub に WebDAV 環境を整えてあったりします。
なんで Rackhub に WebDAV 環境を整えてるかはまた別の機会に紹介したいと思いますが、
とりあえず今日の所はそんな感じです。
という訳で以上、nginx を気軽にインストールできるソフトウェア、
ngxbrew
を作ったよーというお話でした。
ngxbrew
、良かったら使ってみてください。
それでは。
ノシ