部署独立的 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 应用。
  • 将 Node.js 应用与安装有 NPM(节点打包模块)的任何 Node.js 软件包进行打包。
  • 使用 Edge Management API 将 API 代理配置包导入 Apigee Edge 上的指定组织。
  • 将 API 代理部署到环境。
  • 在 Apigee Edge 上执行 Node.js 应用,并使其可通过网络使用。

准备使用 apigeetool

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

您可以通过 npm 或通过克隆并关联 GitHub 中的代码来安装 apigeetool。

从 npm 安装

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

$ sudo npm install -g apigeetool

通常,在基于 *nix 的机器上,-g 选项会将模块置于 /usr/local/lib/node_modules/apigeetool 中。

从 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 实用程序会压缩这些映像,并通过捆绑包进行部署。

您无法在 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. 使用 Choose Files 按钮选择要导入的一个或多个 Node.js 文件。
  4. 为代理命名。在本例中,我们将其命名为 hellonode
  5. 将版本 /v1 添加到项目基本路径中。对 API 进行版本控制是最佳实践。
  6. 点击 Build
  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 文件

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

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

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

系统会在编辑器中打开一个新的空白 Node.js 文件。您可以将代码剪切并粘贴到此文件中。文件还会显示在导航器的“脚本”部分。

[[{"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. 点击 Add。该文件会显示在导航器的“脚本”部分,并在编辑器中打开。
  6. 点击保存

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

调用导入的 Node.js 文件

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

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

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

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

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

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

通过 Node.js 代码导出和导入代理

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

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

您可以从同一菜单中选择 Import Into New Revision,将代理包重新导入 Edge。

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

后续步骤

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