AstroサイトをDenoにデプロイする
Astroのサーバーサイドレンダリングされたサイトを、世界中のエッジでJavaScript、TypeScript、およびWebAssemblyを実行する分散システムであるDeno Deployにデプロイできます。
このガイドには、GitHub ActionsまたはDeno DeployのCLIを使用して、Deno Deployにデプロイする手順が含まれています。
必要条件
セクションタイトル: 必要条件このガイドは、すでにDenoをインストールしていることを前提としています。
プロジェクトの設定
セクションタイトル: プロジェクトの設定Astroプロジェクトは、サーバーサイドレンダリングサイト(SSR)としてDeno Deployにデプロイできます。Deno Deployは静的サイトをサポートしていません。
SSR用アダプター
セクションタイトル: SSR用アダプターAstroプロジェクトでSSR(サーバーサイドレンダリング)を有効にし、Deno Deployにデプロイするには以下の手順を実行します。
次のastro add
コマンドで、AstroプロジェクトにSSRを有効にするための[Denoアダプター][Deno adapter]を追加します。このコマンドは、アダプターをインストールし、astro.config.mjsファイルに適切な変更を一括で行います。
npx astro add deno
アダプターを手動でインストールする場合は、以下の2つのステップを実行してください。
-
お好みのパッケージマネージャを使用して、[
@astrojs/deno
アダプター][Deno adapter]をプロジェクトの依存関係にインストールします。npmを使用している、またはよくわからない場合は、ターミナルで以下のコマンドを実行してください。Terminal window npm install @astrojs/deno -
プロジェクトの設定ファイル
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
デプロイ方法
セクションタイトル: デプロイ方法GitHub Actions、またはDeno DeployのCLI(コマンドラインインターフェイス)を使用して、Deno Deployにデプロイできます。
GitHub Actionsのデプロイメント
セクションタイトル: GitHub ActionsのデプロイメントプロジェクトがGitHubに保存されている場合は、Deno Deployのウェブサイトに従って、AstroサイトをデプロイするようにGitHub Actionsを設定できます。
-
公開または非公開のGitHubリポジトリにコードをプッシュします。
-
GitHubアカウントでDeno Deployにサインインし、New Projectをクリックします。
-
リポジトリとデプロイしたいブランチを選択し、GitHub Actionモードを選択します。(Astroサイトではビルドステップが必要なため、自動モードは使用できません。)
-
Astroプロジェクトで、
.github/workflows/deploy.yml
に新しいファイルを作成し、以下のYAMLを貼り付けます。これはDeno Deployが提供するYAMLと似ていますが、Astroサイトに必要なステップが追加されています。name: Deployon: [push]jobs:deploy:name: Deployruns-on: ubuntu-latestpermissions:id-token: write # Deno Deployでの認証に必要です。contents: read # リポジトリのクローンに必要です。steps:- name: Clone repositoryuses: actions/checkout@v3# npmを使用していない場合は、`npm ci`を`yarn install`または`pnpm i`に変更してください。- name: Install dependenciesrun: npm ci# npmを使用していない場合は、`npm run build`を`yarn build`または`pnpm run build`に変更してください。- name: Build Astrorun: npm run build- name: Upload to Deno Deployuses: denoland/deployctl@v1with:project: my-deno-project # TODO: Deno Deployのプロジェクト名に置き換える。entrypoint: server/entry.mjsroot: dist -
このYAMLファイルをコミットし、GitHub上の設定したdeployブランチにプッシュすると、自動的にデプロイが始まるはずです!
GitHubリポジトリページの「Actions」タブ、またはDeno Deployで進捗を確認できます。
CLIデプロイメント
セクションタイトル: CLIデプロイメント-
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 -
Astroビルドステップを実行します。
Terminal window npm run build -
deployctl
を実行してデプロイします!以下のコマンドでは、
<ACCESS-TOKEN>
をPersonal 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.mjsDeno Deployですべてのデプロイを追跡できます。
1.(オプション)ビルドとデプロイを1つのコマンドにまとめるには、package.json
にdeploy-deno
スクリプトを追加します。
{ // ... "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サイトをビルドし、デプロイすることができます。
DENO_DEPLOY_TOKEN=<ACCESS-TOKEN> npm run deno-deploy
📚 AstroにおけるSSRについてもっと読む。