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

概要: 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

nyarlaが大体

Scrapbox.io でコメントや意見を書く