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
。 包 requests
、filelock
和 urllib3
被固定到 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 的 VirtualHost
的 apache2
部署。
按照 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