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

読了まで:約4分


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

アバターアイコン兼ロゴ

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

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

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