zenddevops/client

ZF2 CLI工具,用于访问Zend Server Web API

1.1.1 2015-09-28 13:31 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

贡献

Linux: Build Status 和 Windows: Build status

如果您想为此项目做出贡献,请阅读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 的文件夹和文件。这也适用于 /.svnpublic/.svnmodule/folder-with-file/.svn。如果条目是文件夹,则该文件夹及其子文件夹的内容也将被排除。
  • *{something} - 将排除所有名称以{something}结尾的条目。例如:*.fla 将排除所有以 .fla 结尾的文件,如 video.fla。或目录,如 more.fla

反馈

如有疑问和反馈,请发邮件至 slavey (at) zend DOT com。