HTTPpool:HTTP 池服务器和客户端

HTTP 池服务器提供了一个 RESTful Web 界面,用于在服务器上运行的池中创建、移除、读取和删除数据项(通常是产品)。远程数据用户使用 HTTPClientPool 作为接口。

用于开发

配置

安装 fdi。复制配置文件

cp fdi/pns/config.py ~/.config/pnslocal.py

要自定义 ~/.config/pnslocal.py,请根据您的系统修改这些:

pnsconfig = dict(logginglevel=logging.DEBUG)
pnsconfig['baseurl'] = '/v0.9'
pnsconfig['base_poolpath'] = '/tmp'
pnsconfig['server_poolpath'] = '/tmp/data'  # For server
pnsconfig['defaultpool'] = 'default'
pnsconfig['node'] = {'username': 'foo',
                     'password': 'bar', 'host': '127.0.0.1', 'port': 5000}
pnsconfig['serveruser'] = 'mh'

请注意,以上是针对此步骤和后续步骤中的服务器和客户端。

运行服务器

要使用配置中的默认值,只需

make runpoolserver

服务器也可以通过以下方式运行:

python3 fdi/pns/runflaskserver.py --username=<username> --password=<password> [--ip=<host ip>] [--port=<port>] --server=httppool_server -v

[] 中的内容,如上面的 [--ip=<host ip>] [--port=<port>],是可选的。 <> 表示您需要替换为实际信息(例如 --port=<port> 变为 --port=5000)。发出运行请求时使用用户名和密码。

现在您可以使用客户端来访问它。

警告

不要为生产使用运行调试模式。密码使用纯文本进行开发。

注解

服务器的日志级别在配置文件中设置。上面使用的 runflaskserver-v 开关会将级别设置为 logging.DEBUG。 包 requestsfilelockurllib3 被固定到 logging.WARN。

测试和验证

一次运行所有测试

make testhttp

如果需要,附加 T='-u <username> -p <password> [-i <host ip>] [-o <port>] [options]'

您还可以逐步测试以查明可能的问题:

1. 服务器单元测试

在服务器主机上运行此程序以验证服务器的内部基本功能是否适用于当前配置。

make test6

2. 本地服务器功能测试

测试 HTTP 客户端 APIs

make test7

3. 标准功能池测试

make test8

学习/试用 API 并构建服务器

这些 API 记录在 fdi/httppool/schema/pools.yml 和 OpenAPI 3 中。运行它以查看并在服务器运行时尝试使用 Swagger API 文档:

http://127.0.0.1:5000/apidocs

要构建服务器,请取消引用 YAML 文件(以便 Flagger 0.95 可以处理它):

make de-ref

然后运行它 make runpoolserver

用于生产部署

手动

安装 fdi(参见 开发者安装及注意事项)。 将配置文件复制过去

cp fdi/pns/config.py ~/.config/pnslocal.py

要自定义 ~/.config/pnslocal.py,请根据您的系统修改这些:

pnsconfig = dict(logginglevel=logging.DEBUG)
pnsconfig['baseurl'] = '/v0.9'
pnsconfig['base_poolpath'] = '/tmp'
pnsconfig['server_poolpath'] = '/var/www/httppool_server/data'
pnsconfig['defaultpool'] = 'default'
pnsconfig['node'] = {'username': 'foo', 'password': 'XXX',
                      'host': '172.17.0.2', 'port': 9884}
pnsconfig['serveruser'] = 'apache'

如果要运行服务器,至少需要修改 IP。

然后参考这些文件来安装/更新 wsgi 或 conf 文件

  • fdi/pns/resources/httppool_server.docker

  • fdi/pns/resources/httppool_server_entrypoint.sh

    然后启用站点并(重新)启动服务器:

sudo a2ensite httppool_server.conf
sudo a2dissite 000-default.conf
service apache2 --full-restart

注解

以上是在本地运行池功能测试(test6)时的服务器和客户端的设置。

使用预制的 Docker 镜像

以下是作为基于 Ubuntu docker 的 VirtualHostapache2 部署。

按照 Dockers 中的说明拉取或构建 httppool 服务器映像。

启动它:

make launch_server [PORT=xxxx]

测试和验证部署的服务器

以下是已部署的 docker。

除了第一步之外,大致遵循 Test and Verify 中的相同步骤。

小技巧

实际上,如果第三步成功,可以跳过前两步。

1. 开始

启动后在服务器内运行一个 shell:

make it

/bin/bash 将运行,您将作为服务器用户 (apache) 出现在 shell 提示符下。键入以下内容以启动服务器进程

service apache2 --full-restart

几秒钟后检查以确保有 apache 进程

ps augx

您可以通过以下方式获取 JSON 中的错误消息

curl -i http://localhost:9885

2. Docker 中的测试功能

现在运行本地测试:

  • 首先是 fdi 内部

  • 然后 test6 用于服务器本地 CRUD

  • test7 测试客户端

  • test8 测试标准池功能

cd fdi
make test
make test6
make test7
make test8

最后三个测试可以通过 make testhttp 运行。

3. 从 Docker 外部进行测试

在您构建 docker 镜像的 fdi 目录中:

make testhttp

确保从您运行测试的位置,您的 ~/.config/pnslocal.py 指向正确的 IP 和端口。

小技巧

您可以通过以下方式从另一个终端观看实时日志记录:

make t

清理

通过运行 make rm_server 停止并删除 docker。

API 文档

TBW