• 安装和配置HyperServer


    总述

    安装和配置HyperServer非常简单、直接。 uniGUI安装程序在.. uniGUIHyperServerin文件夹(in64用于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:uniserverextjs[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

     

  • 相关阅读:
    要离职了。
    上海找工作经历
    1.6. 三基色LED
    1.5. 板载LED PWM模式
    1.4. 板载LED控制
    1.3. 硬件篇之IO口(视频连接)
    1.2 Hello World
    1.8. 数码管
    ESP32编译自己的micropython固件
    1.1 准备工作
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/9546091.html
Copyright © 2020-2023  润新知