Grav、github、ローカルでデータを同期する方法
今までGravのサイトを更新する時は、ローカルの開発環境にて作成したページをFTPでサーバーへアップしてきました。同時にgithubへもpushしているので、結構手間がかかりました。またページ数が多くなってくると、FTPでファイルを上げ忘れたりして同期ができないこともありました。
そこでGrav、github、ローカルを簡単に同期出来る方法はないかと探していたところ、Gravのプラグイン「Git Sync」を使えば出来ることが分かりました。
なお、サーバー上のGravは管理画面から更新するとgithubへ保存されますが、ローカルのGravの更新はgithubにpush、pullすることで反映したかったので、ローカルのGravにはGit Syncを入れません。また同期するホルダーはテーマ、ページだけです。プラグインは同期しないようにしています。
上記の点を踏まえ、Git Syncを使い、Grav、github、ローカルでデータを同期を行う方法を詳しくご紹介します。
目次
GravにGit Syncの設定(本番サーバ)
最初に本番サーバにGravをインストールし、プラグインのGit Syncをインストールしておいてください。
ここからGit Syncの設定の設定を行っていきます。 Gravの管理画面にてプラグインを開いてください。
プラグインより、Git Syncをクリックします。
画面が開き、Git Syncの設定が始まります。 右下のNEXTをクリックしてください。
ここではGitHubとの関連付けを行います。
GitHubを選択し、GitHubのユーザー名とパスワードを入力します。
※現在GitHubのパスワードはトークンを利用するようになっています。 トークンを生成してパスワードに入力してください。
最後に右下のNEXTをクリックしてください。
ここではGit Repositoryの設定を行います。
Git Repositoryを入力します。
Repository Branchを入力しますが、今回はmainにしています。
「Verift Authentication, Connection and Branch」をクリックすると、Git Repositoryに接続できるかどうかを確認できます。
最後に右下のNEXTをクリックしてください。
ここではWebhooで利用するデータが表示されます。
①にはWebhookが入力されています。 Webhook Secretを行う場合は、ここにチェックを入れてください。
③と④にWehookのURLとsecretが表示されるので、メモしておいてください。
最後に右下のNEXTをクリックしてください。
ここでは同期するフォルダを選択します。
PagesとThmemesを選択しました。 ローカルのGravではGitSyncを使わないので、Pluginは同期しません。
最後に右下のNEXTをクリックしてください。
githubにてWebhooksの設定
次にGithubのリポジトリーにてwebhookの設定を行います。 画面右上のSettingsをクリックし、左メニューのWebhooksをクリックしてください。
右上のAdd webhookをクリックし、新しいwebhookを追加します。
この時、Githubのパスワードを聞いてくるので、入力してください。
先程メモした③Webhookと④secretをここに貼り付けてください。 最後に「Add webhook」のボタンを押して完了です。
Gravの設定(ローカル)
本番サーバのGravのデータをダウンロードし、ローカルの開発環境にてサイトを複製します。 なおGit Syncのプラグインを削除し、同期が行われないようにします。
次にgithubよりgitのリポジトリをダウンロードします。 pagesとthemeを削除し、/.git/と.gitignoreのみを/user/に設置します。
最後にGrav、github、ローカルにて同期が行われているか確認してください。
同期する際の注意点
プラグインを同期しないので、以下の3つの設定が必要になります。
- 同期するフォルダはPagesとThmemes
- ローカルにGit Syncを入れない
- ローカルと本番のGravの完了は同期していないので、なるべくバージョンを合わせておく
最後に
前からGit Syncの存在を知っていて、本番サーバーとgithubが同期できることが分かっていたのですが、 私としてはローカルのファイルも同期したいと思っていたので、Git Syncはほとんど使ってませんでした…。
ただ色々調べているうちにローカルのGravとも同期できることが分かり、Grav、github、ローカルで同期することが可能になりました。
Gravをgithubで管理しないのであれば、このような設定は必要ないのですが、私のようにどうしてもGravをgithubで管理したい方の お役に立てれば幸いです。