安装和配置HyperServer
总述
安装和配置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控制面板中,选择“Upload”图标。
- 选择新编译的可执行文件(myapp.exe),然后按“Upload”按钮。
- 完成上传并确定。
- 所有现有节点都将标记为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