部署独立的 Node.js 应用

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

本主题介绍如何将 Node.js 应用从本地系统部署到 Apigee Edge。在本主题中,我们将讨论如何使用名为 apigeetool 的命令行工具将 Node.js 应用部署到 Apigee Edge。

关于将 Node.js 代码部署到 Apigee Edge

您可以使用名为 apigeetool 的命令行实用程序将现有 Node.js API 应用(包括任何相关的 Node.js 模块)从本地系统部署到 Apigee Edge。该实用程序会自动将应用及其依赖项捆绑到 API 代理中,并将其部署到 Edge 上。

例如,假设您使用 Express 在 Node.js 中创建了一个 Web 应用。该应用会作为 HTTP 服务器运行,用于监听 HTTP 请求、处理这些请求、返回数据等。使用 apigeetool 将 Node.js 应用部署到 Edge 时,该应用会封装在代理中,并在 Edge 平台上下文中执行。然后,您可以通过其新的代理网址调用应用,还可以通过使用 OAuth 安全机制、配额政策、威胁防护政策、条件流程、缓存等标准 Edge 功能为其“锦上添花”,从而为其增添价值。

apigeetool 有什么用途?

当您使用 deploynodeapp 选项运行 apigeetool 实用程序时,它会执行以下操作:

  • 生成一个 API 代理配置软件包来容纳 Node.js 应用。
  • 使用通过 NPM(Node 打包模块)安装的任何 Node.js 软件包打包 Node.js 应用。
  • 使用 Edge Management API 将 API 代理配置包导入 Apigee Edge 上的指定组织。
  • 将 API 代理部署到环境。
  • 在 Apigee Edge 上执行 Node.js 应用,并通过网络提供该应用。

准备使用 apigeetool

开始之前,您需要先安装 apigeetool 实用程序。

您可以通过 npm 安装 apigeetool,也可以从 GitHub 克隆并关联代码。

通过 npm 安装

apigeetool 模块及其依赖项专为 Node.js 而设计,可通过 npm 使用以下命令获取:

$ sudo npm install -g apigeetool

通常,-g 选项会将模块放置在以下位置: /usr/local/lib/node_modules/apigeetool(在基于 *nix 的机器上)。

从 GitHub 安装

从 GitHub 下载或克隆 API 平台工具。有关安装说明,请参阅代码库根目录中的 README 文件。

$ git clone https://github.com/apigee/apigeetool-node.git

安装完成后,请确保 apigeetool 可执行文件位于您的路径中。您可以通过输入以下命令来进行测试:

$ apigeetool -h

使用 apigeetool 将 Node.js 应用部署到 Edge

注意:在部署之前,您需要知道您的 Apigee Edge 组织名称、用户名和密码,以及您的 Apigee Edge 账号的密码。您需要这些信息才能正确构建 apigeetool 命令。

如需使用 apigeetool 部署 Node.js 应用,请执行以下操作:

  1. 在终端窗口中,cd 您的 Node.js 应用的根目录。
  2. 使用 deploynodeapp 命令执行 apigeetool 实用程序:

    $ apigeetool deploynodeapp -n {A name for your new proxy} -d {The root directory of your Node.js app} -m {The name of the main Node.js file} -o {Your org name on Edge} -e {The environment to deploy to} -b {The base URL for your proxy} -u {Your Edge email address} -p {Your Edge password}
    
    例如:

    $ apigeetool deploynodeapp -n myNodeApp -d . -m server.js -o myorg -e test -b /myNodeApp -u ntesla -p myPassword
    
  3. 在终端窗口中查看输出。该界面应如下所示:

    Importing new application myNodeApp
    Imported new app revision 1
    Deploying revision 1
      Deployed.
    Proxy: "myNodeApp" Revision 1
      Environment: test BasePath: /myNodeApp
      Status: deployed
    

    如果系统显示“状态:已部署”,则表示您已部署。一切都很顺利。您的 Node.js 应用已封装在 API 代理中,部署到 Edge,并且正在运行并等待处理请求。 现在可以进行测试了。

  4. 测试您的代理。例如:

    $ curl http://myorg-test.apigee.net/myNodeApp
    Hello, My Node App!
    
  5. 如有需要,请登录您的 Apigee Edge 账号,然后前往管理界面的“API 代理”页面。您会在其中看到新代理的列表。

apigeetool 如何处理相关文件和模块

如果您的 Node.js 应用依赖于已安装的模块,apigeetool 会通过压缩 node_modules 文件夹并将其添加到代理软件包来处理这些模块。您无需执行任何其他操作。同样,对于包含其他源代码的任何目录也是如此。apigeetool 实用程序会对其进行压缩,并与 bundle 一起部署。

您无法在 Edge 管理界面的编辑器中修改这些压缩目录中的文件。如果您需要更改这些配置,可以导出项目,在本地修改文件,然后使用 apigeetool 重新部署,或使用管理界面导入导出的项目。另请参阅“使用 Node.js 代码导出和导入代理”。

apigeetool 的基本使用信息

如需了解 apigeetool 实用程序的输入参数的基本使用信息,请输入以下命令:

$ apigeetool deploynodeapp -h

  Usage: deploynodeapp -n [name] -o [organization] -e [environment]
  -d [directory name] -m [main script file]
  -u [username] -p [password]
  -b [base path] -l [apigee API url] -z [zip file] -i -h
  -o Apigee organization name
  -e Apigee environment name
  -n Apigee proxy name
  -d Apigee proxy directory
  -m Main script name: Should be at the top level of the directory
  -u Apigee user name
  -p Apigee password
  -b Base path (optional, defaults to /)
  -L Apigee API URL (optional, defaults to https://api.enterprise.apigee.com)
  -z ZIP file to save (optional for debugging)
  -i import only, do not deploy
  -R Resolve Node.js modules on Apigee Edge. Equivalent to running npm install on your project. 
  -U Uploads Node.js modules to Apigee Edge. 
  -h Print this message

使用现有 Node.js 文件创建新代理

将现有 Node.js 应用集成到 API 代理中的另一种方法是在创建代理时添加该应用。您可以完全通过管理界面和“新建 API 代理”对话框来完成此操作。

  1. 在 API 代理摘要页面中,点击 +API 代理
  2. 在“新建 API 代理”对话框中,选择现有 Node.js
  3. 使用选择文件按钮选择要导入的一个或多个 Node.js 文件。
  4. 为代理命名。在此示例中,我们将其命名为 hellonode
  5. 将版本 /v1 添加到项目基路径中。对 API 进行版本控制是最佳做法。
  6. 点击构建
  7. 点击开发进入“开发”视图。
  8. 在代码编辑器中打开 TargetEndpoint 文件。
  9. 请确保 <ScriptTarget> 元素指定了主 Node.js 文件,如下所示:


    <ScriptTarget>
            <ResourceURL>node://server.js</ResourceURL>
            <Properties/>
    </ScriptTarget>
    
  10. 点击保存

添加和调用新的 Node.js 资源文件

将 Node.js 代码添加到代理的另一种方法是直接添加,可以通过界面添加,也可以从本地文件系统上传。您还可以指定哪个 Node.js 文件是主文件,即 Edge 在部署代理时调用的文件。

通过界面添加新的 Node.js 文件

通过管理界面,您可以将其他 Node.js 源文件添加到 Edge 平台上的代理中。您可以直接在界面中创建这些文件,也可以从文件系统中导入这些文件。首先,我们来看一看如何通过界面执行此操作。

如需创建新的 Node.js 资源文件,请执行以下操作:

  1. 在“开发”视图中,从“新建”菜单中选择新建脚本
  2. 在“添加脚本”对话框中,选择文件类型 Node 并为脚本命名。
  3. 点击添加

新的空白 Node.js 文件会在编辑器中打开。您可以将代码剪切并粘贴到该文件中。该文件也会显示在 Navigator 的“脚本”部分中。

[[{"type":"media","view_mode":"media_large","fid":"2431","attributes="{alt":"","class":"media-image","height":"312","typeof":"foaf:Image","width":"417"}}]]

从文件系统导入 Node.js 文件

如需将 Node.js 文件从文件系统import到代理,请执行以下操作:

  1. 在“开发”视图中,从“新建”菜单中选择新建脚本
  2. 在“添加脚本”对话框中,点击导入脚本
  3. 使用文件工具选择您的 Node.js 文件。
  4. 系统会将文件的名称添加到对话框中,但您可以根据需要进行更改。
  5. 点击添加。该文件会显示在 Navigator 的“脚本”部分,并在编辑器中打开。
  6. 点击保存

如果您想调用导入的文件,则需要执行额外的步骤,如下一部分所述。

调用导入的 Node.js 文件

您不能简单地调用新导入或创建的 Node.js 文件。原因在于,Edge 要求有一个 Node.js 文件作为文件。主文件在目标端点定义的 <ScriptTarget> 元素中指定。如需指定哪个文件是主要的 Node.js 文件,请执行以下操作:

  1. 在导航器的“目标端点”下,点击目标端点的名称(通常称为“默认”)。
  2. 在 Code 编辑器中,修改 <Resource网址> 以反映您希望用作主 Node.js 文件的文件的名称,从而修改 <ScriptTarget> 元素。例如,如果您希望名为 hello-world.js 的文件作为主文件,则需要在 Resource网址 元素中输入 node://hello-world.js
  3. 点击保存

此时,您可以使用之前使用的任何代理路径调用该文件。例如,我们一直在研究“Hello World!”示例,其中指定了基本路径 v1/hello。不过,您可以通过修改代理端点来更改基本路径。

  1. 在导航器的“代理端点”下,点击代理端点的名称(通常称为“默认”)。
  2. 在 Code 编辑器中,将 <BasePath> 更改为您想要的任何名称,以修改 <HttpProxyConnection> 元素。例如,如果当前的 <BasePath> 为 v1/hello,而您希望它为 v1/my-node-file,请按如下方式更改 <BasePath> 元素:

    &lt;BasePath&gt;/v1/my-node-file&lt;/BasePath&gt;
  3. 点击保存
  4. 使用新的基本路径调用代理,如下所示:

    $ curl http://myorg-test.apigee.net/v1/my-node-file
    Hello, World!
    

使用 Node.js 代码导出和导入代理

将包含 Node.js 代码的代理部署到 Edge 后,您可以随时将代理导出回系统,在系统中进行处理,然后使用管理界面将其重新导入 Edge。这种往返开发技术很常用。

  1. 在 API 代理摘要页面中,点击开发
  2. 在“开发”页面中,选择下载当前修订版本
  3. 将下载的文件解压缩到系统上。

您可以从同一菜单中选择导入到新的修订版本,将代理软件包重新导入 Edge。

您还可以使用 API 部署代理。如需了解详情,请参阅通过命令行部署代理

后续步骤

在下一部分“向现有 API 代理添加 Node.js”中,我们将介绍如何将 Node.js 应用添加到文件系统中的现有代理,并将其部署到 Edge。