このブログは、Jekyllで構築してGithub Pagesでホスティングしています。先日、Jekyll + Firebase Hostingという記事を読み、Github PagesからFirebaseに移行しようか検討していて、テスト用のサイトをJekyllで作成し、Firebaseでのホスティングを試してみたので、その過程を纏めておこうと思います。
ここでは詳細は割愛します。公式サイトに従って、プロジェクトを作成します。
Firebaseコンソールにアクセスし、ブログをホスティングするためのプロジェクトを作成します。
JekyllプロジェクトとFirebaseプロジェクトの関連付け、および管理には、firebase-toolsというFirebaseがnpmとして提供しているCLIツールを使用します。
次のコマンドでインストールします。
$ npm install -g firebase-tools
Jekyllプロジェクト直下で、firebase init
を実行することで、
が生成されます。 これらのファイルにより、Firebaseプロジェクトと関連付けることができます。
実際は、firebase init
を実行すると、firebase login
を先に実行せよ、とのメッセージが表示されます。
$ firebase init
Error: Command requires authentication, please run firebase login
したがって、まずfirebase login
を実行します。
すると、ブラウザが起動し、Googleの認証画面が表示されるので、Googleアカウントでログインします。Firebase CLIの使用を許可すると、
✔ Success! Logged in as メールアドレス
が表示され、コマンドが終了します。
次に、firebase init
を実行します。
まず、「次のFirebase CLIの機能のうち、どれを使用するか?」が聞かれます。
今回は、Hostingを選択します。
次に、「どのFirebaseプロジェクトをデフォルトとして使用するか?」が聞かれます。 事前に作成しておいたFirebaseプロジェクトを選択します。
次に、「どのディレクトリを公開するか?」が聞かれます。
Jekyllはデフォルトで_site
ディレクトリにビルドされるため、_site
を指定します。
次に、「SPAとして設定するか?」が聞かれます。
JekyllによるサイトはSPAではないので、N
と回答します。
事前に、jekyll build
を実行し、_site
ディレクトリに404.html
、index.html
が存在する場合は、上書きするか否かを聞かれますので、N
と回答します。
すると、前述の通り、
がそれぞれ、次のような内容で生成されます。
{
"hosting": {
"public": "_site",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}
{
"projects": {
"default": "Firebaseプロジェクト名"
}
}
Firebase Hostingについて、ここでは詳細は割愛しますが、公式サイトで、
Firebase Hosting は、ウェブアプリ向けの高速で安全性の高い静的ホスティングを提供します。
とある通り、静的なWebサイトをホスティングしてくれる機能です。
Fireabase Hostingを使って、静的サイトをホスティングするには、
の手順を踏むことになります。
前者は、今回のようにサイトをJekyllで作るので、Jekyllのコマンドで実施します。
後者は、firebase-tools
のコマンドで実施します。
Jekyllのサイトをビルドするには、
bundle exec jekyll build
を実行します。これにより、_site
ディレクトリが作られ、その中にサイトのコンテンツが格納されます。
デプロイは、
firebase deploy
を実行します。 すると、
=== Deploying to 'プロジェクト名'...
i deploying hosting
i hosting: preparing _site directory for upload...
✔ hosting: 14 files uploaded successfully
✔ Deploy complete!
Project Console: https://console.firebase.google.com/project/[プロジェクト名]/overview
Hosting URL: https://[プロジェクト名].firebaseapp.com
という出力が得られます。
そこで、実際にhttps://[プロジェクト名].firebaseapp.com
にアクセスすると、
おおおお、サイトが公開されました。
Firebase Hostingを使用して公開したサイトを停止するには、
firebase hosting:disable
を実行します。
すると、
? Are you sure you want to disable Firebase Hosting?
This will immediately make your site inaccessible! Yes
✔ Hosting has been disabled for [プロジェクト名]. Deploy a new version to re-enable.
と出力され、数分すると以下のページが表示されるようになり、アクセスできなくなります。
この後、再度firebase deploy
を実行すると、新しいバージョンとしてコンテンツがアップロードされ、
再びアクセスできるようになります。
Firebase Hostingでは、デフォルトでhttps://[プロジェクト名].firebaseapp.com
というURLでサイトが公開されます。
これをカスタムドメインで公開することも可能で、かつSSLも有効になります。
Jekyllで構築したブログをFirebase Hostingでホスティングする方法について纏めました。 今回は、Jekyllなサイトを対象としましたが、例えばVue.jsや、Nuxtで 構築したアプリケーションをホスティングするのも簡単にできそうです。