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