zenddevops / client
ZF2 CLI工具,用于访问Zend Server Web API
Requires
- php: >=5.3.3
- mustangostang/spyc: dev-master
- openlss/lib-array2xml: dev-master
- slk/icm: dev-master
- zenddevops/webapi: dev-master
- zendframework/zend-i18n: ~2.4.0
Requires (Dev)
- fabpot/php-cs-fixer: dev-master
- phpunit/phpcov: 2.0.*
- phpunit/phpunit: 4.1.*
- satooshi/php-coveralls: dev-master
- zendframework/zendframework: ~2.4.0
This package is auto-updated.
Last update: 2024-08-30 01:13:50 UTC
README
简介
ZendServerSDK,也称为zs-client,是一个命令行应用程序,用于与Zend Server的WebAPI通信。它可以在所有现代操作系统(OS)上运行,例如Linux、Mac OS X和Windows。
要求
PHP版本 >=5.3.3,且已启用phar模块。
安装
您可以从以下位置复制本地最新稳定版本作为独立文件: https://github.com/zend-patterns/ZendServerSDK/raw/master/bin/zs-client.phar
在Linux上,您可以执行以下命令
wget https://github.com/zend-patterns/ZendServerSDK/raw/master/bin/zs-client.phar
贡献
如果您想为此项目做出贡献,请阅读CONTRIBUTING.md
用法
使用--help运行phar文件以查看可用的命令
php zs-client.phar --help
用例
添加目标
目标代表连接到Zend Server所需的信息。每个目标都包含唯一的名称,并且必须有一个指向Zend Server位置的URL、WebAPI密钥和密钥,以及可选地,目标可以包含有关Zend Server版本的详细信息。
要添加目标,请运行以下命令
php bin/zs-client.phar addTarget --target="<put-here-unique-name>" \
--zskey="<put-here-the-webapi-key-name>" \
--zssecret="<put-here-the-webapi-key-hash>" \
--zsurl="<(optional)put-here-valid-url>" \
--zsversion="<(optional)put-here-the-version>"
要更新目标,请使用相同的--target值并提供新值。
zsurl:如果未指定,则使用值https://:10081
。zsversion:如果未指定,则使用最新版本的Zend Server。
有关可用目标的信息存储在当前用户的家目录中名为.zsapi.ini的文件中。
使用目标
一旦定义了目标,您可以通过在参数列表中添加其唯一名称来在后续命令中指定它,如下例所示
php bin/zs-client.phar monitorGetIssuesListPredefinedFilter \
--target="<unique-name-from-addTarget-command>" \
--filterId="Resources Issues"
部署PHP应用程序
您有一个PHP应用程序,您想部署到Zend Server。为了使用部署,您必须启用部署支持,创建一个包并将其上传到远程服务器。
以下是您需要采取的步骤
启用部署支持
php bin/zs-client.phar initZpk --folder="<folder-where-the-PHP-code-is>"
这将向指定文件夹中添加两个新文件:deployment.xml和deployment.properties。
配置部署
使用Zend Studio 10或普通文本编辑器编辑deployment.xml文件,并更改XML数据以匹配您的应用程序名称、版本等。
创建包
运行以下命令。
php bin/zs-client.phar packZpk --folder="<folder-where-the-PHP-code-is>" --destination="<folder-where-the-package-will-be-created>"
它将输出新创建的包文件的名称。您必须使用此名称在Zend Server上安装或更新现有应用程序。如果您想为输出文件使用其他名称,可以使用--name="{desired-zpk-name}"选项。
Composer集成
存在与composer的实验性集成,允许您下载依赖包,如composer.json中所述,下载并转换为zpk文件。上述带有composer集成的命令将如下所示
php bin/zs-client.phar packZpk --folder="<folder-where-the-PHP-code-is>" \
--destination="<folder-where-the-package-will-be-created>" \
--composer
命令的结果将是按安装顺序排列的包列表(顶部优先,底部最后)。例如
/tmp/zendframework.zend-stdlib-2.2.4.zpk /tmp/zendframework.zend-console-2.2.4.zpk /tmp/zendframework.zend-file-2.2.4.zpk /tmp/zendframework.zend-mvc-2.2.4.zpk /tmp/zendframework.zend-text-2.2.4.zpk /tmp/zendframework.zend-math-2.2.4.zpk /tmp/zendframework.zend-json-2.2.4.zpk /tmp/zendframework.zend-serializer-2.2.4.zpk /tmp/zenddevops.webapi-dev-dev.zpk /tmp/AddYourUniqueApplicationName-1.0.0.zpk
部署包
运行以下命令来安装包。
php bin/zs-client.phar installApp --zpk="<location-of-the-zpk-file>" \
--target="<the-name-of-the-target>" \
--baseUri="<baseUri>"
您可以使用相同的命令来更新包。在安装过程中可以通过--userParams="{provide-params-as-query-string}"传递用户参数。例如,如果您想传递参数APPLICATION_ENV和DB_TYPE,则可以使用以下内容
php bin/zs-client.phar installApp --zpk="<location-of-the-zpk-file>" \
--target="<the-name-of-the-target>" \
--baseUri="<baseUri>" \
--userParams="APPLICATION_ENV=staging&DB_TYPE=mysql"
安全包部署
如果您在部署旧版本的同时部署新版本的zpk,则可能导致不可预测的结果。为了防止这种情况,您可以使用--safe标志。如果存在,zs-client将检查该应用是否正在进行当前部署,如果是这种情况,则退出。
示例
php bin/zs-client.phar installApp --zpk="<location-of-the-zpk-file>" --safe ...
如果您想安全且等待之前的部署完成,则可以将--safe和--wait标志一起使用。
示例
php bin/zs-client.phar installApp --zpk="<location-of-the-zpk-file>" --safe --wait ...
部署多个包
如果您使用composer集成,则packZpk可以创建多个包,而不是一个。以下是如何以正确的顺序部署这些新创建的包的建议。
ZPKS=`php bin/zs-client.phar packZpk --folder="<folder-where-the-PHP-code-is>" \
--destination="<folder-where-the-package-will-be-created>" \
--composer`;
for i in $ZPKS; do
php bin/zs-client.phar installApp --zpk="$i" \
--target="<the-name-of-the-target>" \
--baseUri="<baseUri>" \
--userParams="APPLICATION_ENV=staging&DB_TYPE=mysql"
done;
HTTP调整
更改连接超时
在某些情况下,我们可能预计客户端和服务器之间的通信会变慢。在这种情况下,我们可以显式地将http超时设置为更大的值。以下示例显示了如何将其设置为40秒。
php bin/zs-client.phar getSystemInfo --target="<name-of-the-target> \
--http="timeout=40"
接受自签名SSL证书
在大多数情况下,您的Zend Server的HTTPS访问将使用自签名证书。为了指示客户端接受SSL证书,您可以执行以下操作。
php bin/zs-client.phar getSystemInfo --target="<name-of-the-target> \
--http="sslverify=0"
组合多个HTTP选项
如果您想在同一请求中组合多个HTTP选项,则可以将http参数的值格式化为有效的HTTP查询字符串。具有40秒超时和接受自签名证书的请求将如下所示。
php bin/zs-client.phar getSystemInfo --target="<name-of-the-target> \
--http="timeout=40&sslverify=0"
持久化HTTP选项
如果您想将http选项保存到目标,则在定义或更新目标时,也要定义http参数。将值格式化为有效的HTTP查询字符串。请参阅以下示例。
php bin/zs-client.phar addTarget --target="<name-of-the-target> \
--zsurl="http://x.y.z" \
--zskey="admin" \
--zssecret="<secret-hash>" \
--http="timeout=40&sslverify=0"
输出格式
在输出为文本的情况下,zs-client支持三种格式:xml,这是默认格式;json和kv(键值)。要指定所需的格式,必须使用--output-format参数。
示例
php bin/zs-client.phar getSystemInfo --target=zserver --output-format=kv
将返回
status=Error
edition=ZendServerCluster
zendServerVersion=7.0.0
supportedApiVersions[0]=application/vnd.zend.serverapi;version=1.2
supportedApiVersions[1]=application/vnd.zend.serverapi;version=1.3
...
supportedApiVersions[6]=application/vnd.zend.serverapi;version=1.8
phpVersion=5.5.13
operatingSystem=Linux
deploymentVersion=2.0
serverLicenseInfo[status]=OK
...
serverLicenseInfo[nodeLimit]=100
serverLicenseInfo[edition]=ENTERPRISE
...
managerLicenseInfo[evaluation]=
提供数组值
某些命令接受数组作为参数。
例如,configurationExtensionsOn允许您同时启用多个扩展。以下代码启用了bcmath和tidy
php bin/zs-client.phar configurationExtensionsOn --target=zserver --extensions=bcmath,tidy
注意扩展值的语法。它是一个以逗号分隔的项列表。如果出于某种原因您想用另一个分隔符替换逗号,可以通过添加括在小于(<)和大于(>)中的新分隔符来实现。以下示例中我们使用分号作为分隔符
php bin/zs-client.phar configurationExtensionsOn --target=zserver --extensions=bcmath;tidy<;>
如果需要,您可以传递更复杂的数组数据。例如,以下PHP数组...
$data = array ( 'x' => array( 'a' => 1, 'b' => 2, ), y => 3 );
...可以使用以下命令行语法表示。
php bin/zs-client.phar installApp --userParams='x[a]=1&x[b]=2&y=3' --target=zserver ...
这里默认分隔符是&。如果您想使用自定义分隔符,例如分号,则可以像上一个示例一样指定它
php bin/zs-client.phar installApp --userParams='x[a]=1;x[b]=2;y=3<;>' --target=zserver ...
关于分隔符的注意事项:明智地选择分隔符。
- 只有当默认分隔符(逗号和&)不适合您时才选择自定义分隔符。
- 分隔符不应是您的shell解释的特殊字符。
- 分隔符不应是您的shell无声删除的特殊字符。
- 分隔符不应是数据中已经存在的字符之一。
部署属性语法
在 deployment.properties
文件中,可以指定将成为应用程序或部署脚本一部分的文件。阅读此文档以获取更多信息。请确保阅读有关如何处理scriptsdir.includes值的说明。
对于排除的应用程序,我们支持以下通配符语法
**/{something}
- 将排除所有基础名称为{something}的条目,无论它们是文件还是文件夹,例如:**/.svn 会排除所有名为.svn
的文件夹和文件。这也适用于/.svn
,public/.svn
或module/folder-with-file/.svn
。如果条目是文件夹,则该文件夹及其子文件夹的内容也将被排除。*{something}
- 将排除所有名称以{something}结尾的条目。例如:*.fla
将排除所有以.fla
结尾的文件,如video.fla
。或目录,如more.fla
。
反馈
如有疑问和反馈,请发邮件至 slavey (at) zend DOT com。