總述
安裝和配置HyperServer非常簡單、直接。 uniGUI安裝程序在.. \uniGUI\HyperServer\bin\文件夾(\bin64\用於64位二進制文件)下分發了HyperServer預編譯的二進制文件。包含所有可直接部署的二進制文件:ISAPI DLL,獨立服務器和Windows服務:
這些文件是通用的HyperServer服務器二進制文件,配置后可運行任意uniGUI應用程序。 要部署HyperServer,需要將HyperServer二進制文件復制到uniGUI應用程序文件夾。 可以重命名HyperServer二進制文件。 實際上,如果要在不同端口上運行多個HyperServer實例,則需要重命名它。 如果以DLL模式部署,則還可以重命名hyper_server.dll文件以匹配你的應用程序名稱。 HyperServer需要一個配置文件,該文件是為HyperServer提供各種必需的參數。 配置文件的擴展名為.CFG,應該與HyperServer二進制文件保存在同一文件夾中。 如果缺少此文件,將自動創建。 你可以在同一文件夾下找到默認配置文件。
第一步是根據部署方法復制正確的二進制文件。對於獨立服務器使用hyper_server.exe;對於ISAPI DLL,使用hyper_server.dll;對於Windows Service,使用hyper_service.exe。
下一步是對配置文件進行適當的更改。 將hyper_server.cfg文件復制到uniGUI應用程序所在的文件夾,然后使用文本編輯器打開它。
快速配置和測試HyperServer
為了快速測試HyperServer功能,您可以通過在配置文件中配置最小參數來進行快速配置。
- 將hyper_server.exe和hyper_server.cfg復制到應用程序可執行文件所在的文件夾。
- 在獨立服務器模式下編譯uniGUI應用,可能需要更改項目的DPR文件,將其他模式切換到獨立服務器模式。
- 編輯hyper_server.cfg文件並將binary_name參數設置為應用程序的可執行文件名。 例如:如果你的uniGUI應用執行文件名為myapp.exe,則binary_name = myapp.exe
- 編輯hyper_server.cfg文件設置prompt_login = 0,這個參數決定是否顯示登錄窗口,決定在顯示HyperServer控制面板時是否需要登錄。
- 運行hyper_server.exe
- 在瀏覽器地址欄輸入:http://localhost:8077
- 應該能夠在瀏覽器中看到應用程序的主窗口或登錄窗口。
- 要在瀏覽器中顯示HyperServer控制面板,則在地址欄中輸入:http://localhost:8077/server
- 通過HyperServer控制面板,選擇HyperServer選項頁,能夠觀察HyperServer節點和各種其他信息。
- 現在,在這個界面上,還可以測試遠程部署功能。
- 回到項目並更改一個小的視覺細節。
- 重新編譯應用程序。
- 在HyperServer控制面板中,選擇“上載”圖標。
- 選擇新編譯的可執行文件(myapp.exe),然后按“上載”按鈕。
- 完成上傳並確定。
- 所有現有節點都將標記為Discarded。
- 在瀏覽器中啟動新會話,將看到應用程序的新版本,而舊版本的應用程序仍將繼續在其他瀏覽器界面中運行。您已使用HyperServer的遠程部署功能成功更新了應用程序。
HyperServer配置參數
成功使用HyperServer測試應用程序之后,還需要熟悉HyperServer配置文件中的各個參數。如你所見,在配置文件中,將看到各種參數。 其中許多可以保留其默認值。現在來看看這些參數及其作用。
[transport]
pool_size=0
pool_size參數用於確定傳輸句柄池的最大大小。句柄總數不能大於此值。 當設置為0時,HyperServer將嘗試計算最佳值。默認值為0.
command_timeout=20000
HyperServer內部特殊命令,用於在內部與節點通信。 command_timeout設置HyperServer在發送命令后從節點獲得響應之前等待的時間。 在正常情況下,它必須非常快(幾毫秒)。 默認值為20秒。
request_timeout=300000
HyperServer等待節點完成請求的時間。 當Web客戶端發起Ajax請求時,HyperServer會將該請求中繼到相關節點。 HyperServer將等待Node完成請求並發回響應。 通常客戶端只等待AjaxTimeout毫秒,因此request_timeout必須始終大於節點中使用的最大AjaxTimeout值。
默認值為300秒(5分鍾),遠遠高於典型的AjaxTimeout值,默認值為30秒。 您可能需要增加request_timeout值的唯一情況是您的應用程序為節點中的ServerModule的AjaxTimeout參數設置非常高的值。 即當您的應用需要處理可能需要5分鍾以上的任務時。
可以將此參數設置為接近節點的AjaxTimeout參數的值。 當有許多超時條件時,它將有助於更快地釋放傳輸句柄。 如果要調整此參數,請確保將其設置為大於AjaxTimeout參數的值。 添加至少10秒以確保安全。 (AjaxTimeout + 10,000)
connect_timeout=20000
HyperServer將等待無法與節點建立連接的時間。 在正常情況下,他是立即執行完成的。默認值為20秒。
[http_transport]
start_port=16384
start_port參數用於HTTP傳輸。 傳輸是指HyperServer與其節點進行內部通信的通道。每個節點都需要擁有一個唯一的傳輸ID,HTTP傳輸實際上是一個TCP端口號。 HyperServer需要知道端口的起始值。 它將根據此起始值為端口分配端口號。 在Windows中,可以為start_port分配許多不同的值。 默認情況下,范圍(1024 - 49151)中的端口被定義為Windows操作系統中的用戶端口。
為了找出為OS保留的動態端口范圍,可以使用以下命令:
C:\>netsh int ipv4 show dynamicport tcp
Protocol tcp Dynamic Port Range
---------------------------------
Start Port : 49152
在具有默認設置的Windows Server操作系統中,將獲得如上所述的響應,這表示Windows動態端口范圍從49152開始。了解Windows動態端口的啟始端口非常重要,因此它們不會與HyperServer傳輸通道端口犯沖突。
HyperServer默認使用端口16384($4000)作為start_port。 通過此配置,第一節點(節點#0)將被分配端口16384,節點#1將被分配端口16385,依此類推。
如果你計划在同一操作系統上運行多個HyperServer實例,則必須保證每個節點分配到的端口號不會沖突,即HyperServer為所有節點分配唯一的端口號。 這可以通過為每個HyperServer實例留下端口間隙來輕松完成。 它可以使用以下公式計算:
<新HyperServer實例的start_port> = <上一個HyperServer實例的start_port> + ( <上一HyperServer實例的max_nodes> × 3 ) + 8
對於第一個實例,start_port配置為16384(或任何其他所需值)
對於第二個實例,start_port應配置為16384 +(8×3 + 8)= 16416
對於第三個實例,start_port應配置為16416 +(16×3 + 8)= 16472
如您所見,我們在端口起始編號之間留下了一些額外的空白。 這樣做的原因是在某些條件下,節點的總數可以超過max_nodes參數。
默認值= 16384
[hyper_server]
binary_name=
binary_name是節點可執行文件的名稱, 您應該在獨立服務器模式下編譯uniGUI應用程序,此文件應與HyperServer位於同一文件夾中,不要為此文件指定任何路徑,只指定文件名和擴展名。格式為<uniGUI應用程序名> .exe。 例如:acounting_app.exe
initial_nodes=2
initial_nodes是HyperServer啟動時最初創建的節點數。 HyperServer還將使用此值在待機模式下維持最小數量的節點。 當節點數低於此值時,將自動創建新節點以匹配initial_nodes值。
默認值= 2
max_nodes=8
系統中活動節點的最大數量。 所有傳入會話將在活動節點之間分發。 實際上,節點的總數可能高於max_nodes,因為當節點被清除或丟棄時,它們將繼續保留一段時間,直到它們被回收。 在典型情況下,節點總數不會超過(max_nodes×2)
默認值= 8
max_sessions=0
此參數旨在為在HyperServer實例下創建的會話總數設置最大限制。 這是通過調整各個節點的MaxSessions屬性來實現的。 MaxSession的計算方法是將max_sessions除以max_nodes。 顯然,這種方法不能保證會話總數不會超過max_sessions。 對總會話數設置上限只是一種簡單的方法。
max_sessions的默認值為0,這意味着HyperServer不會嘗試為每個節點的MaxSessions屬性設置值。 在這種情況下,每個節點將接受您在uniGUI應用程序中設置的MaxSessions會話。
sessions_per_nodes=0
(此參數尚未實現)
prompt_login=1
設置為1時,服務器監視器將詢問用戶ID和密碼。使用用戶帳戶保護服務器監視器非常重要,HyperServer服務器監視器還嵌入了一個新的控制面板,允許多個附加功能,如遠程部署和節點監控。 您可以在CFG文件中創建最多10個不同的用戶帳戶。 請參閱下面的[login-x]部分。
如果將此參數設置為0,則在訪問服務器監視器時不會詢問憑據,即不顯示登錄窗口。 在開發階段,調試和測試應用程序時,這樣做是合理的,但在生產模式下,prompt_login肯定應設置為1。
persistent_node_zero=0
在前文中,我們引入了一個名為Persistent Node Zero的新術語。
如果您的應用程序需要持久性節點,則必須將此參數設置為1。
port=8077
此參數適用於在獨立服務器和Windows服務模式下運行的HyperServer實例。 您需要為在同一台計算機上運行的每個實例分配不同的端口。 對於ISAPI模塊,此參數無效。
url_path=
url_referer=
ext_root=[ext]\
uni_mobile_root=[unim]\
uni_root=[uni]\
uni_packages_root=[unipack]\
以上所有參數都直接分配給HyperServer的ServerModule組件。 如果需要定義ServerModule的某個屬性(如ExtRoot),則只需指定上面列表中的ext_root參數值。
例如:ext_root=C:\uniserver\extjs\[ext]\
max_requests=500
此參數設置HyperServer處理的最大並發請求。 超過此值的更多請求將排隊。 對於許多典型應用,默認值500足夠大。 建議將其保留為默認值。
[node_recycling]
enabled=1
recycle_after_secs=3600
recycle_after_sessions=0
recycle_after_idle_secs=300
recycle_when_empty=1
以上參數用於微調節點回收行為。 其中一些仍在實施中。 暫時請將所有這些都保留為默認值。
[login-0]
user_name=
password=
admin=0
最多可以創建10個可登錄服務器監視器的用戶帳戶。僅當設置了prompt_login參數等於1時,此帳戶才有效。
admin參數確定帳戶的訪問級別。 如果您設置admin = 0,則帳戶將只有監視器訪問權限,設置admin = 1將授予該帳戶管理權限。
[custom_mimes]
mime_0_ext=
mime_0_type=
mime_1_ext=
mime_1_type=
mime_2_ext=
mime_2_type=
mime_3_ext=
mime_3_type=
mime_4_ext=
mime_4_type=
自定義mimes允許將自定義文件類型添加到HyperServer中。出於安全原因,在正常情況下,只允許從服務器傳輸安全的文件類型。 你可以在這里定義所需的新類型。
通過向CFG文件添加新項目,來簡單地添加新的mime。 例如,要啟用對擴展名為“7z”的文件的訪問。
mime_0_ext=7z
mime_0_type=application/x-7z-compressed