跳转到内容

如何将你的 Astro 网站部署到 Deno

你可以将一个使用服务器端渲染的 Astro 网站部署到 Deno Deploy,它是一个在全球范围边的边缘服务上运行 JavaScript、TypeScript 和 WebAssembly 的分布式系统。

本指南提供了通过 GitHub Actions 或 Deno Deploy CLI 部署到 Deno Deploy 的介绍。

本指南假设你已经安装了 Deno

本页面提供了将你的 Astro 项目作为服务端渲染(SSR)站点部署到 Deno Deploy 的指南。

要部署静态站点,请参阅 Deno 部署静态站点教程

要在 Astro 项目中启用 SSR 并在 Deno Deploy 上进行部署,请执行以下 astro add 命令添加 Deno 适配器。这将一步安装适配器并对你的 astro.config.mjs 文件进行适当更改。

Terminal window
npx astro add deno

如果你更喜欢手动安装适配器,则需要完成以下两个步骤:

  1. 使用你喜欢的包管理器将 @astrojs/deno 适配器 安装到你的项目依赖中。如果你不确定是否使用 npm 的话,可以在终端中运行以下命令:

    Terminal window
    npm install @astrojs/deno
  2. 使用下面的修改来更新你的 astro.config.mjs 项目配置文件。

    astro.config.mjs
    import { defineConfig } from 'astro/config';
    import deno from '@astrojs/deno';
    export default defineConfig({
    output: 'server',
    adapter: deno(),
    });

    接下来,使用以下修改来更新 package.json 中的 preview 脚本。

    package.json
    {
    // ...
    "scripts": {
    "dev": "astro dev",
    "start": "astro dev",
    "build": "astro build",
    "preview": "astro preview"
    "preview": "deno run --allow-net --allow-read --allow-env ./dist/server/entry.mjs"
    }
    }

    你现在可以使用以下命令通过 Deno 在本地预览你生产环境的 Astro 站点。

    Terminal window
    npm run preview

如何部署 SSR Astro 站点

段落标题 如何部署 SSR Astro 站点

你可以通过 GitHub Actions 或使用 Deno Deploy 的命令行界面(CLI)将项目部署到 Deno Deploy。

使用 GitHub Actions 进行部署

段落标题 使用 GitHub Actions 进行部署

如果你的项目存储在 GitHub 上,Deno Deploy 网站 将指导你设置 GitHub Actions 来部署你的 Astro 站点。

  1. 将你的代码推送到公开或私有的 GitHub 存储仓库。

  2. 使用你的 GitHub 账户登录 Deno Deploy,然后单击 New Project

  3. 选择你的存储仓库和要部署的分支,并选择 GitHub Action 模式。(你的 Astro 站点需要一个构建步骤,不能使用 Automatic 模式。)

  4. 在你的 Astro 项目中,创建一个名为 .github/workflows/deploy.yml 的新文件,并粘贴下面的 YAML 内容。这类似于 Deno Deploy 提供的 YAML,但还包括你的 Astro 站点所需的其他步骤。

    name: Deploy
    on: [push]
    jobs:
    deploy:
    name: Deploy
    runs-on: ubuntu-latest
    permissions:
    id-token: write # 用于 Deno Deploy 身份认证
    contents: read # 用于克隆仓库
    steps:
    - name: Clone repository
    uses: actions/checkout@v3
    # 没有使用 npm?请将 `npm ci` 修改为 `yarn install` 或 `pnpm i`
    - name: Install dependencies
    run: npm ci
    # 没有使用 npm?请将 `npm run build` 修改为 `yarn build` 或 `pnpm run build`
    - name: Build Astro
    run: npm run build
    - name: Upload to Deno Deploy
    uses: denoland/deployctl@v1
    with:
    project: my-deno-project # TODO: 替换为 Deno Deploy 项目的名称
    entrypoint: server/entry.mjs
    root: dist
  5. 提交此 YAML 文件,然后推送到你配置的部署分支后,将会自动开始部署!

    你可以在 GitHub 存储库页面上的 “Actions” 选项卡上,或在 Deno Deploy 上跟查看部署进度。

  1. 安装 Deno Deploy CLI

    Terminal window
    deno install --allow-read --allow-write --allow-env --allow-net --allow-run --no-check -r -f https://deno.land/x/deploy/deployctl.ts
  2. 运行 Astro 的构建步骤。

    Terminal window
    npm run build
  3. 运行 deployctl 进行部署!

    在下面的命令中,将 <ACCESS-TOKEN> 替换为你的 个人访问令牌,将 <MY-DENO-PROJECT> 替换为你的 Deno Deploy 项目名称。

    Terminal window
    DENO_DEPLOY_TOKEN=<ACCESS-TOKEN> deployctl deploy --project=<MY-DENO-PROJECT> --no-static --include=./dist ./dist/server/entry.mjs

    你可以在 Deno Deploy 上跟踪所有部署。

  4. (可选) 为了将构建和部署简化为一个命令,可以在 package.json 中添加一个 deploy-deno 脚本。

    package.json
    {
    // ...
    "scripts": {
    "dev": "astro dev",
    "start": "astro dev",
    "build": "astro build",
    "preview": "deno run --allow-net --allow-read --allow-env ./dist/server/entry.mjs",
    "deno-deploy": "npm run build && deployctl deploy --project=<MY-DENO-PROJECT> --no-static --include=./dist ./dist/server/entry.mjs"
    }
    }

    然后你可以使用以下命令一步构建和部署你的 Astro 站点。

    Terminal window
    DENO_DEPLOY_TOKEN=<ACCESS-TOKEN> npm run deno-deploy
了解更多关于 Astro 中的 SSR 的内容。

更多部署指南