このセクションでは、 ソースコードからのWindows版Zabbix agent バイナリファイル作成方法(TLS対応有/無)について説明します。
以下の手順は、MSのWindows 10(64ビット)でソースからOpenSSLをコンパイルするのに役立ちます。
OpenSSLをコンパイルするために、Windowsマシンでは以下のものが必要です: 1. C compiler (e.g. VS 2017 RC), 2. NASM (https://www.nasm.us/), 3. Perl (e.g. Strawberry Perl from http://strawberryperl.com/), 4. Perl module Text::Template (cpan Text::Template).
OpenSSLのソースをhttps://www.openssl.org/から取得します。ここではOpenSSL 1.1.1 を使います。
OpenSSL のソースを、例えば E:\openssl-1.1.1 に解凍します。
コマンドラインウィンドウを開きます。例:VS 2017 RC の x64 Native Tools Command Prompt
OpenSSL のソースディレクトリ(例:E:\openssl-1.1.1 )に移動します。 1. NASMがあることを確認する:`e:\㏌openssl-1.1.1> nasm --version NASM バージョン 2.13.01 コンパイル日:2017年5月1日
OpenSSLの設定を行います。 例: e:\openssl-1.1.1> perl E:\openssl-1.1.1:\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method · --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static
- オプション 'no-shared' に注意してください。
'no-shared'オプションを使用すると、OpenSSLスタティックライブラリlibcrypto.libとlibssl.libは「自己充足」し、 <br>
ZabbixバイナリにはOpenSSL が含まれ、外部のOpenSSL DLLは必要ありません。 <br>
Advantage: Zabbix binaries can be copied to other Windows <br>
machines without OpenSSL libraries. Disadvantage: when a new <br>
OpenSSL bugfix version is released, Zabbix agent needs to <br>
recompiled and reinstalled. <br>
- If 'no-shared' is not used, then the static libraries <br>
libcrypto.lib and libssl.lib will be using OpenSSL DLLs at <br>
runtime. Advantage: when a new OpenSSL bugfix version is <br>
released, probably you can upgrade only OpenSSL DLLs, without <br>
recompiling Zabbix agent. Disadvantage: copying Zabbix agent to <br>
another machine requires copying OpenSSL DLLs, too. <br>
e:\openssl-1.1.1> nmake
e:\openssl-1.1.1> nmake test
...
All tests successful.
Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + · 0.61 sys = · 1.28 CPU)
Result: PASS
e:\openssl-1.1.1> nmake install_sw
`'install_sw' installs only software components (i.e. libraries, PCREまたはPCRE2(Zabbix6.0以降サポート)ライブラリをpcre.orgリポジトリからダウンロードします。
(https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.zip)
ディレクトリ E:\pcre2-10.39 に解凍します。
CMakeをhttps://cmake.org/download/からインストールします。
cmakeにパスが通っていることを確認してください (バージョン3.9.4で確認しました)。
ソースディレクトリのサブディレクトリとして、空のビルドディレクトリを作成します。
例: *E:\pcre2-10.39**build*.
コマンドラインウィンドウを開きます。
例:x64 Native Tools Command Prompt を開き、そのシェル環境からcmake-guiを実行します。
この時、WindowsのスタートメニューからCmakeを起動しようとすると、エラーが発生する可能性があります。
ソースディレクトリに E:\pcre2-10.39 、ビルドディレクトリに E:\pcre2-10.39build を入力します。
”Configure"ボタンをクリックします。
このプロジェクトのジェネレータを指定する場合は、”NMake Makefiles "を選択します。
空のインストールディレクトリを新規に作成します。
例 : E:\pcre2-10.39-install
GUIにいくつかの設定オプションが表示されます。以下のオプションが選択されていることを確認します。
もう一度 "Configure"ボタンをクリックします。これで、隣の "Generate"ボタンが有効になります。
”Generate"ボタンをクリックします。
エラーが発生した場合、CMake ビルドプロセスを繰り返す前に CMake キャッシュを削除することをお勧めします。
CMake GUI では、キャッシュは"File > Delete Cache" を選択することで削除できます。
ビルドディレクトリには、使用可能なMakefile が含まれているはずです。
コマンドラインウィンドウ(例:VS 2017のx64 Native Tools Command Prompt)を開き、上記のMakefileに移動します。
NMakeコマンドを実行します。
E:\pcre2-10.39build> nmake install
以下の手順で、Windows 10(64ビット)上でソースからZabbixをコンパイルすることができます。
ZabbixをTLSサポートあり/なしでコンパイルする場合の大きな違いは、手順4のみです。
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --enable-agent --enable-ipv6 --prefix=
pwd` アーカイブ(zabbix-4.4.0.tar.gz)を Windows マシンにコピーし、解凍します。
ここでは、ソースが e:.0 にあると仮定します。コマンドラインウィンドウ
(the x64 Native Tools Command Prompt for VS 2017 RC. )を開いて、E:\zabbix-4.4.0\project に移動します。
zabbix_get、zabbix_sender、zabbix_agent をコンパイルします。
OpenSSLでコンパイルするのと同じような手順ですが、build\win32\project
ディレクトリにあるファイルを少し変更する必要があります。
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
/DHAVE_OPENSSL_WITH_PSK</code>and replace it with
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO
/PDB:$(TARGETDIR)\$(TARGETNAME).pdb</code>and replace it with
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT