google-code-prettify

2019年11月25日 星期一

編譯 HAProxy for Windows

HAProxy 官網並沒有提供編譯好的 Windows 軟體,
使用者必須在官網下載 Source Code 後,自行編譯。

我使用 Cygwin 進行編譯,
下載 Cygwin 安裝檔安裝,
安裝過程中,會讓使用者選擇要安裝的額外編譯環境套件,
例如: cmake、gcc-core、cygwin32-gcc-core 等

安裝好之後,Cygwin 安裝檔先不要刪除,
因為後續編譯過程如有缺少編譯環境需要的工具套件,
還是會需要用到它把工具套件安裝進來。

我使用的是 HAProxy 2.0.8 版,
若要使用其他版本可至官網下載。
將下載來的 source code tar 解壓縮並放置在  Cygwin 安裝目錄下的 home 目錄內。
路徑如:
C:\cygwin64\home\haproxy-2.0.8
開啟 Cygwin64 Terminal,這是一個類 Linux 的環境,
可以使用一些 Linux 的指令,如: ls 。
切換目錄到 /home/haproxy-2.0.8
RYAN.CHEN@TWTY3NB ~
$ pwd
/home/RYAN.CHEN
RYAN.CHEN@TWTY3NB ~
$ cd ..
RYAN.CHEN@TWTY3NB /home
$ ls
haproxy-2.0.8  haproxy-2.0.8.tar.gz  RYAN.CHEN
RYAN.CHEN@TWTY3NB /home
$ cd haproxy-2.0.8

使用 make 指令開始編譯 HAProxy,我的電腦大概花了 十幾、二十分鐘才編譯好。

$ make TARGET=cygwin
$ make install

編譯完成後,到 haproxy-2.0.8 目錄將 產生出來的 haproxy.exe 及 在 C:\cygwin64\bin\cygwin1.dll  複製出來,
新開一個目錄置放這兩個檔案。
在執行 haproxy 時,需要先建立一個 haproxy.cfg 配置 haproxy 運行的設定。
以下是一個簡單範例:

global
 
defaults
    timeout connect 90s
    timeout client 90s
    timeout server 90s

frontend dashboard
    bind *:80 
    mode http
    default_backend dashboard_back
    
backend dashboard_back
    mode http
    server dashboard_node_1 10.13.15.10:18083 
    server dashboard_node_2 10.13.15.11:18083 

但是使用這樣的預設值編譯出來的結果,
在配置 SSL 時,
啟動 HAProxy 會發生問題,
才知道沒有含 SSL 的模組被編譯進去。

使用指令查看 HAProxy 在編譯時,有什麼選項可以使用將選擇的套件編譯進去

$ make help

從顯示的說明,有四個套件是建議啟用:
  USE_PCRE             : enable use of libpcre for regex. Recommended.
  USE_REGPARM          : enable regparm optimization. Recommended on x86.
  USE_STATIC_PCRE      : enable static libpcre. Recommended.
  USE_OPENSSL          : enable use of OpenSSL. Recommended, but see below.


所以在使用 make 指令時,需要給它啟用這四個模組的參數:
$ make TARGET=cygwin USE_PCRE=1 USE_REGPARM=1 USE_STATIC_PCRE=1 USE_OPENSSL=1
$ make install
然後,你會發現可能發生錯誤,大致是編譯環境缺少需要的工具套件,



所以這時候需要在使用 Cygwin 安裝軟體,將缺少的套件安裝進來。
我因為先前已經單獨安裝 Git 工具,而它內含了 openssl 工具,
所以我不需要在 Cygwin 在安裝 openssl,
過程中,一邊 try make 一邊補缺少的套件,
最後我安裝了如下的套件:



但仍無法安裝 USE_STATIC_PCRE ,
最後將其剔除,

$ make TARGET=cygwin USE_PCRE=1 USE_REGPARM=1 USE_OPENSSL=1
$ make install

另外,需要從 Cygwin 目錄中,增加複製 dll 供 HAProxy 執行檔使用:
cygcrypto-1.1.dll
cygpcre-1.dll
cygssl-1.1.dll
cygwin1.dll
cygz.dll


沒有留言:

張貼留言