‘MinGW’ タグのついている投稿

nginxのWindows版バイナリをビルドする

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

zlib Home Site

OpenSSL: Source, Tarballs

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

で起動できます。

これでやっと追加モジュールをインストールできるというもの。