nginxのWindows版バイナリは公式で配布されていますが、nginxに追加のモジュールを入れたい場合、どうしても自分でビルドする必要がでてきます。
ビルド方法は公式のドキュメントに書かれています。
How to build nginx on the Win32 Platform with Visual C
が、色々ハマるのでメモしておきます。ビルド環境はWindows7 Professional x64です。
必要なのは以下。
- Microsoft Visual C++ Compiler
 - Microsoft Windows SDK
 - MinGW/MSYS
 - ActivePerl
 - PCRE
 - zlib
 - OpenSSL
 
まず、VCコンパイラが必要なので、Microsoft Visual C++ Expressをインストールします。
Microsoft Visual Studio Express
上記ページのVisual C++ 2010 ExpressのWebインストールをクリックすればvc_web.exeがダウンロードできるので、それを実行してあとは言われるままにインストールすればOKです。
続いてMicrosoft Windows SDK(旧Platform SDK)をインストールします。
Windows SDK: Download the Windows SDK for Windows 7 and More | MSDN
「Install Now」を押せばインストールできます。こちらもそのままインストールすればOK。
OpenSSLのコンパイルにPerlが必要なので、ActivePerlをインストールします。32bit版と64bit版がありますが、僕は64bit版をインストールしました。
ActivePerl Downloads – Perl Binaries for Windows, Linux and Mac | ActiveState
続けてMinGW/MSYSのインストールをします。
MinGW – Minimalist GNU for Windows – Browse Files at SourceForge.net
「Looking for the latest version?」と書かれている隣のファイルをダウンロードします。
インストールが終わったら環境変数の設定をします。
MinGW Shellを起動して、パスを設定します。
$ export LIB="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\lib;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib"   
$ export INCLUDE="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\include;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Include"    
$ export PATH="$PATH:/c/Perl64/bin:/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin:/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE:/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin"    
nginxのソースコードをダウンロードしましょう。tarボールで提供されているものには、Windows用のConfigureが入っていないらしいので、svnから取得します。
svnコマンドが使えるのであれば、   
svn co svn://svn.nginx.org/tags/release-(バージョン番号)    
でチェックアウトできます。僕はrelease-1.0.10を使いました。
なぜかTortoiseSVNではtags/release-1.0.10が表示できませんでした。
ダウンロードしたソースコードはMSYSのHOMEディレクトリに置きます。
C:\MinGW\msys\1.0\home\(ユーザー名)\nginx   
としました。
PCRE、zlib、OpenSSLをダウンロードします。
PCRE – Browse /pcre at SourceForge.net
pcre-8.20.zip、zlib-1.2.5.tar.gz、openssl-1.0.0e.tar.gzをダウンロードしました。
nginxディレクトリの下にobjs/libディレクトリを作成します。ここに、先ほどダウンロードした3ファイルを解凍したものを設置します。
これで準備はできたので、ビルドします。
公式のビルド方法に載っているConfigureを実行します。が、PCREのバージョンは8.20になっていたので、–with-pcreの引数は変更します。あとは適宜合わせてください。
$ auto/configure –with-cc=cl –builddir=objs –prefix= \   
–conf-path=conf/nginx.conf –pid-path=logs/nginx.pid \    
–http-log-path=logs/access.log –error-log-path=logs/error.log \    
–sbin-path=nginx.exe –http-client-body-temp-path=temp/client_body_temp \    
–http-proxy-temp-path=temp/proxy_temp \    
–http-fastcgi-temp-path=temp/fastcgi_temp \    
–with-cc-opt=-DFD_SETSIZE=1024 –with-pcre=objs/lib/pcre-8.20 \    
–with-zlib=objs/lib/zlib-1.2.5 –with-openssl=objs/lib/openssl-1.0.0e \    
–with-select_module –with-http_ssl_module –with-ipv6
Configureが成功したら、nmakeでビルドします。
$ nmake -f objs/Makefile
これで、何も問題がなければnginx/objsディレクトリにnginx.exeファイルが出来上がっているはずです。
このnginx.exeファイルを、ひとつ上のディレクトリ(nginx)に設置して、
$ mkdir logs   
$ mkdir temp
として、
$ start nginx.exe
で起動できます。
これでやっと追加モジュールをインストールできるというもの。
タグ: MinGW, nginx, Visual Studio, Windows

                HOMMA Teppei
                
