すべてのページをgitで管理

Giblogでは、すべてのファイルは静的なファイルとしてGitで管理できます。

Giblogは、動的にWebサイトを生成するCMSツールではなく、静的にWebサイトを生成するCMSツールです。

ブログ記事やJavaScriptやスタイルシートや画像ファイル、動画ファイルは、すべてファイルとして管理できます。

データベースに関する知識は、まったく必要がありません。

gitを使った記事の管理

Giblogでは、記事を作成し、ビルドコマンドを実行すると、ヘッダやフッタで囲まれた公開用のHTMLが生成されます。

# 記事を作成
templates/mypage.html

# ビルド
giblog build

ビルドされたファイルは公開ディレクトリ「public」以下に生成されます。

# 記事を作成
public/mypage.html

サイトの構成は以下のように構成します。Giblogでは「ビルドする前のリソースファイル」と「ビルド後の公開ファイル」は、別々のgitリポジトリで管理するようになっています。

mysite - .git
       - public -
                - .git

以下のコマンドを実行することで、上記の構成にすることができます。

# リソースファイルをgit管理
cd mysite
git init

# 公開ファイルをgit管理
cd public
git init

ビルド前のファイルと、ビルド後のファイルの管理を別のGitリポジトリとして管理されているので、公開ファイルを単に「git clone」あるいは「git pull」することで、公開サーバーに配置することができます。

CSSやJavaScript、画像ファイル、動画ファイルなどの、ヘッダやフッタを結合する必要のないファイルは「templates/static」ディレクトリに配置することで、何の編集も行わずに、公開ディレクトリに配置することができます。

# 画像ファイル配置
templates/static/example.png

# ビルド
giblog build
# 記事を作成
public/example.png

Git登場以前は、CMSが記事の管理機能を持つことが必須でした。記事の管理のために独自のCMSの機能を覚えることがユーザーに求められました。

Giblogは、記事を作成する機能に特化し、記事の管理機能をGitにゆだねます。Giblogのユーザーは、優れた記事管理機能を持つGitの機能をフルに活用できます。

記事のグループ管理機能

Giglogは、記事の管理機能を、Gitにすべてゆだねています。

Gitが得意とするのは、プログラムの共同開発です。複数人で共同してプログラムを開発するという目的のために、Gitは活用されています。

このプログラムの共同管理機能を、記事のグループ管理機能として使うことができます。

GithubにWebサイトのリポジトリを作成して、共同記事の執筆者が、リポジトリをクローンします。

共同執筆者が、自分のローカル環境で、記事を書いて、プルリクエストを依頼します。

すると、メインの執筆者が、その記事の内容を、自分のリポジトリに取り込むことができます。

この記事の管理方法は、セキュリティという面を考えても非常に強固です。

動的にWebサイトを生成するCMSツールでは、記事のグループ管理を行うには、管理画面から、IDとパスワードを入力することを必要とします。

Giblogは、静的にWebサイトを生成するツールであり、共同管理をGitにゆだねるので、セキュリティ上のリスクが軽減されます。

ツールの側のセキュリティホールのために、Webサイトが書き換えられ、企業信用が棄損されるということが、起こらないのです。

gitによる手軽なデプロイ

本番環境へのデプロイは、公開ファイルを管理しているgitリポジトリを、プロダクション環境に「git clone」するだけです。

git clone 公開ファイルのgitリポジトリのURL

2回目以降のデプロイは、git pull origin masterをするだけです。

cd mysite
git pull origin master

gitによる手軽なバックアップ

gitは分散管理のリポジトリシステムで、ファイルの変更履歴を、それぞれのリポジトリに完全に保存しています。

つまり、バックアップするには、gitのリポジトリをコピーすればよいだけということになります。

以下のような構成にしておけば、簡単に3重バックアップできます。

Github

開発用サーバー

バックアップサーバー

開発用サーバーで、Webサイトを作成します。リソースリポジトリをGithubにpushします。

バックアップサーバーでcronを記述して、Githubから、定期的にgit pull origin masterするようにします。