コーポレートWebサイトを firebaseに移行しました。
もともと、静的ページで AWS EC2のWindowsサーバにホスティングしていましたが、
色々とメンテナンス性が悪くコストも高いので、段階的にnode.js/Express 化してfirebaseに以降、今週日曜日に移行が終わったので書きます。
できればあとで、参考リンクはやめて手順としてまとめます。
静的ページをNode.js Expressに移行することについては、割愛。
EC2上で、単なるNode.jsのサービスとして80ポートに公開していたサイトの移行です。
1.firebaseのアカウントを作る
2. firebase のプロジェクトを作る
3.ローカルの環境作る
ぐらいまでは以下のQiitaで調べたら特に詰まることなくできます。
簡単にできることを実感でき、firebaseの好感度が上がります。
qiita.com
*リアルタイムデータベースまではやりません。
6. Nodeの環境を作成する
7. 旧サイトをfirebase functions の形式でローカル実行する
これは以下のQiitaを参考にしました。
qiita.com
動くところまでハマりませんでした。
ちょっとハマったのは、デプロイです。
8.firebaseにデプロイする
エラーメッセージで「dependencies」にexpressが入ってないと怒られました。
ローカルではnpm i -Dで依存ライブラリをsaveしていたので「devDependencies」にはいっていいました。
firebaseがきちんと怒ってくれていることに気づかず、いろんなことを調べてしまいました。
エラーメッセージを額面通り受け取れなくなったのは主にMicrosoftさんのせいだと思っています。
9. リライトの設定
firebase functionsは、RESTなAPIを作ることがメインなのでhostingするには冗長なURL構成になります。
firebase.jsonでリライトの設定をすることで、https://ホスト名/以下がnode.jsの呼び出しと一致するようになります。
{
"hosting": {
"public": "public",
"ignore": [
"**/.*",
"**/node_modules/**"
]
,"rewrites": [
{
"source": "/**",
"function": "app"
}
]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
],
"source": "functions"
}
}
以下のNode.jsのappを/**に当てはめるというリライトの記述です(/*だとホスト名以下1階層しか見てくれない)
exports.app = functions.https.onRequest(app);
でexportsのappに、書き出したfunctionsのオブジェクトが、URLのリク
エストに応答してくれます。
10. imageや
css/jsなどのリソースの配置
hosting 配下のpublicなどに
cssやjs,imgなどは配置します。(functions側 のpublicに置きがち)
11.
DNSを書き換えます。(firebaseのhostingにある「
ドメインの接続」にしたがってやる)
→ちょうど2時間待たされたので、ドキドキした。
以上です。