カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

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

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


こんにちま!

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

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

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

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

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

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

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

  1. Rackhubで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、良かったら使ってみてください。

それでは。

ノシ