总述

安装和配置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=

pool_size参数用于确定传输句柄池的最大大小。句柄总数不能大于此值。 当设置为0时,HyperServer将尝试计算最佳值。默认值为0.

command_timeout=

HyperServer内部特殊命令,用于在内部与节点通信。 command_timeout设置HyperServer在发送命令后从节点获得响应之前等待的时间。 在正常情况下,它必须非常快(几毫秒)。 默认值为20秒。

request_timeout=

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秒。

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=
recycle_after_sessions=
recycle_after_idle_secs=
recycle_when_empty=

以上参数用于微调节点回收行为。 其中一些仍在实施中。 暂时请将所有这些都保留为默认值。

[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

安装和配置HyperServer的更多相关文章

  1. JDK安装与配置

    JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...

  2. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  3. 烂泥:redis3.2.3安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...

  4. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  5. 环境搭建系列-系统安装之centos 6.5安装与配置

    按照国际惯例,系列目录先奉上: 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭 ...

  6. ZooKeeper安装与配置

    一. 单机安装.配置: 1. 下载zookeeper二进制安装包下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.3/zookeeper-3 ...

  7. mac 下JDK 与 tomcat 的安装与配置

    一.Mac下JDK的安装 1.先检测Mac是否已经安装过JDK,在终端中输入java 或者 javac 显示说明,表明已经安装过JDK,JDK版本查询终端键入java -version,终端会返回JD ...

  8. 烂泥:zabbix3.0安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这个月又快过完了,最近也比较忙,没时间写文章,今天挤点时间把zabbix3.0安装与配置 ...

  9. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

随机推荐

  1. 卸载WPS后怎么WORD的图标还是WPS

    在电脑中选择使用Microsoft Office并将之前安装的WPS Office办公软件卸载了.但是卸载之后发现电脑系统中的Word.Excel等文件无法正常显示图标.在这样的情况下,我们应该如何解 ...

  2. PAT 1013 Battle Over Cities

    1013 Battle Over Cities (25 分)   It is vitally important to have all the cities connected by highway ...

  3. 厉害了WORD大S

    REPORT YLYTEST01. ) TYPE C VALUE 'ABC'. WRITE LV_C TO LV_C RIGHT-JUSTIFIED. '. WRITE LV_C. 结果: 另外收藏一 ...

  4. sublime ctags跳转函数使用

    sublime 点击某函数 按F12可以查到相关函数文件 正题: 1.下载ctags客户端文件 http://prdownloads.sourceforge.net/ctags/ctags58.zip ...

  5. iptables报错:Couldn't load target `accept':/lib64/iptables/libipt_accept.so: cannot open shared object file: No such file or directory

    语句:iptables -A INPUT -s 134.192.204.235 -p TCP --dport 11211 -j accept 报错:Couldn't load target `acce ...

  6. etymon word air aero aeri aer ag agreement walk joint trick skill chief forget out~1

      1● air 2● aero 3● aeri 4● aer 空气 充气       1● ag     做,代理做   =====>agency       1● agr 2● agri 3 ...

  7. MyBatis 为什么需要通用 Mapper ?

    一.通用 Mapper 的用途 ? 我个人最早用 MyBatis 时,先是完全手写,然后用上了 MyBatis 代码生成器(简称为 MBG),在使用 MBG 过程中,发现一个很麻烦的问题,如果数据库字 ...

  8. jsp下载excel文件

    jsp下载excel文件的的实现方法很多,今天也遇到这个问题,乱敲了一阵,终于搞定了,记下来和朋友们分享吧. 假设需要下载excel文件的jsp页面名为:down.jsp 对应的后台action名为: ...

  9. bzoj3930

    题解: 莫比乌斯函数 然而向我这种弱菜肯定选择暴力dp 代码: #include<bits/stdc++.h> ,M=; typedef long long ll; using names ...

  10. bzoj2946

    题解: 和poj1226差不多 把翻转去掉 然后不要忘记开大数组和二分的上限答案 代码: #include<bits/stdc++.h> using namespace std; type ...