使用 Heroku 部署
Heroku 是一个常见的平台即服务解决方案,使您能够快速部署Apollo Server并快速运行GraphQL端点。
先决条件
在继续本指南之前,确保您已经完成了以下步骤
此外,我们还建议下载 Heroku CLI 以帮助从命令行手动推送到 Heroku:
设置新的 Heroku 应用程序
首先,从您的Heroku 控制台创建一个新的应用程序,点击右上角的创建新应用按钮:
为您的应用程序选择一个名称(这将成为您的<HEROKU_APP_NAME>
),然后点击创建应用。
项目设置
您可以使用@apollo/server
库以及任何Apollo Server's其他框架集成(如 Express、Fastify 等)
手动设置端口
当将服务器部署到 Heroku 上时,您的服务器 必须 监听
端口,该端口由环境变量 PORT
(Heroku 自动设置) 指定。否则,您的服务器将无法接收请求并超时。
以下示例服务器监听由 process.env.PORT
指定的端口,并在未指定的情况下默认为 4000
:
const server = new ApolloServer({typeDefs,resolvers,});const port = Number.parseInt(process.env.PORT) || 4000;const { url } = await startStandaloneServer(server, { listen: { port } });console.log(`🚀 Server listening at: ${url}`);
添加 Procfile
默认情况下,Heroku 应用会在根目录中查找名为 Procfile 的文件,该文件包含应用启动时运行的命令。对于基础的 Apollo Server 应用,此文件至少应包含以下类似行:
web: node index.js
将 node index.js
替换为启动您的 Apollo Server 实例所用的任何命令。
Procfile 不是在 Heroku 上运行 Apollo Server 的必要条件。如果没有提供 Procfile,Heroku 将尝试运行您的 package.json
文件中定义的 start script
。
部署项目
将项目推送到 Heroku 有几种方法
- 使用 Heroku CLI
- 通过 GitHub 集成自动部署
通过 Git 部署
请确保您已安装 Heroku CLI。然后,从终端登录 Heroku CLI。
$ heroku login
登录成功后,转到 项目根目录 并运行:
$ git init # existing git repositories can skip this$ heroku git:remote -a <HEROKU_APP_NAME>$ git add .$ git commit -m "initial apollo server deployment"$ git push heroku # specify your branch name, if necessary
部署完成后,您的 Apollo Server 项目已启动运行!您可以向部署在 Heroku 的 GraphQL 端点发送一个 查询,端点地址为 <HEROKU_APP_NAME>.herokuapp.com
。
注意事项:
-
git push heroku
并不会向您的origin
远程或任何其他远程推送。您必须单独再次运行git push
。 -
默认情况下,Heroku 将
NODE_ENV
变量设置为production
。如果您想更改此设置,请在项目目录中运行以下命令:$ heroku config:set NODE_ENV=development或者,您也可以通过 Heroku 控制台 配置环境变量。
-
请注意,当 Apollo Server 处于生产环境时,默认禁用 introspection,这将阻止像 Apollo Sandbox 这样的工具工作。
使用 GitHub 自动部署
如果您的项目已经推送到 GitHub,您可能希望设置从项目仓库的自动部署。
从您的 Heroku 控制台选择您要从 GitHub 部署的应用程序。
然后在应用的详细信息页面,选择 部署 标签。在该标签下,您可以选择部署方法并配置应用以集成 GitHub:
配置环境变量
要启用 Apollo Server 的生产模式,您需要设置 NODE_ENV
变量为 production
。为了确保您可以在 Apollo Studio 中看到您的 GraphQL 性能,您需要将 APOLLO_KEY
环境变量添加到 Heroku。对于 API 密钥,请登录到 Apollo Studio 并浏览您的 graph 或创建一个新的。
在您的 Heroku 应用设置标签页中,点击 显示配置变量。然后,将 NODE_ENV
设置为 production
并将 Apollo Studio 中的您的图形 API 密钥复制到 图形 API 密钥 作为 APOLLO_KEY
的值。
向您的 Heroku 应用程序的 GraphQL 服务发送一条 查询,服务地址为 <HEROKU_APP_NAME>.herokuapp.com
,然后检查 Apollo Studio中的跟踪数据。