PHPで静的サイトを簡単に作成できるSculpin
Sculpinという静的サイト生成ツールがあります。Jekyllをご存じの方はそれのPHP版とお考えください。
ただし、SculpinはJekyllの不満点を解消するために作成されたそうですので、Jekyllよりすごいのかも知れません。が、私はJekyllを知らないので実際の違いはわかりません。
何より、PHPで作成されているので、PHPが動作する環境ですぐに使うことができ、生成されたHTMLファイルをサーバに転送するだけでサイトを更新できます。
Sculpinの特徴
- PHPによる静的サイト生成ツール
- ブログを運営できる
- Markdownでコンテンツを記述できる
- テンプレートはTwig
- PHP 5.3.2以降が必要(PHP 5.4以降が便利)
Sculpinのインストール
まず、以下のsculpin-blog-skeltonをダウンロードします。これは、ブログを始めるにあたってのサンプルファイルです。
ダウンロードして展開すると、以下のようなフォルダ構成になっています。
app/config/に設定ファイルが、source/にコンテンツが配置されます。
sculpin-blog-skeleton-master/
├── README.md
├── app
│ └── config .... 設定ファイルを配置
│ ├── sculpin_kernel.yml
│ └── sculpin_site.yml
└── source ......... コンテンツを配置
├── _posts ..... ブログの記事を配置
├── _views ..... レイアウトのテンプレートを配置
├── about.md ... Aboutページ
├── blog
│ ├── categories
│ │ └── category.html ... Categoryページ
│ ├── categories.html
│ ├── tags
│ │ └── tag.html
│ └── tags.html
├── blog.html
├── css
│ └── style.css
├── favicon.ico
└── index.html
続いて、Sculpin本体をインストールします。Pharが提供されていますので、それをダウンロードするのが簡単でしょう。sculpin-blog-skeltonのトップフォルダに置いてください。
最後に、sculpin-blog-skeletonに必要なコンポーネント(bootstrap など)をインストールします。ここは、phpコマンドが必要になります。
$ php sculpin.phar install
これで、インストールが完了しました。
CLIによるインストール
コマンドラインやGitが好きな方は、以下の4行でインストール完了です。
$ git clone git@github.com:sculpin/sculpin-blog-skeleton.git
$ cd sculpin-blog-skeleton/
$ curl -O -k https://download.sculpin.io/sculpin.phar
$ php sculpin.phar install
Sculpinの設定
Sculpinの設定ファイルは、以下の2つです。
sculpin_kernel.ymlにはブログのpermalinkの設定がありますが、特に変更する必要はないでしょう。
sculpin_site.ymlでブログのタイトルとサブタイトルを設定します。
Google Analyticsを使う場合は、ここで以下のようにIDを設定します。
title: A Day in Serenity (Reloaded)
subtitle: PHP, FuelPHP, Linux or something
google_analytics_tracking_id: xxxxx
テンプレート
source/_views/以下にテンプレートが配置されています。
- source/_views/default.html ... デフォルトのテンプレート
- source/_views/post.html ... 記事のテンプレート
default.htmlは、ページ全体のHTMLのテンプレートになっています。Twigテンプレートです。必要に応じて変更します。
ページコンテンツ
ページコンテンツのサンプルとして
が含まれています。必要に応じて変更し、不要なら削除します。
ブログ記事
source/_posts/以下に記事のサンプルがいくつか含まれています。
記事のファイル名は、以下のフォーマットになり、Markdownで記事を書くことができます。
- source/_posts/
YYYY-MM-DD-文字列.md
年別のサブフォルダを作成し、以下のようなファイル名も使えそうだったんですが、バグなのかうまく動作しませんでした。テキトーに修正してPRしておきました。
- source/_posts/
YYYY
/MM-DD-文字列.md
なお、上記の「文字列」に「.」(ドット)は使えません。
記事ファイルの先頭には、以下のようなメタ情報をYAMLで記載します。
---
layout: post
title: Symfony Live Hacking Day!
tags: [sensio, symfony, symfony live]
categories: [personal]
---
layout
は使用するテンプレートの指定で_views/post.htmlを使用するという意味になります。
title
は記事のタイトル。tags
とcategories
はタグとカテゴリの指定です。
なお、以下のように記述すると、その記事はドラフトになり本番用のサイト生成では出力されなくなります。
draft: true
サイトの生成
以下のコマンドで開発用のサイトがoutput_dev/以下に生成されます。
$ php sculpin.phar generate
Sculpinはデフォルトでは開発用のサイトを生成します。ブログのドラフトの記事も生成されます。
生成されたサイトの確認
生成されたサイトは、PHP 5.4以降ならPHPのビルトインWebサーバで簡単に確認することができます。
以下のコマンドは、サイトを生成し、ビルトインWebサーバを起動します。また、コンテンツの変更を監視し、変更された場合、自動的に更新します。
$ php sculpin.phar generate --watch --server
http://localhost:8000/にアクセスすれば、生成されたサイトを確認できます。
本番環境へのデプロイ
本番用のサイトを生成するには、--envオプションでprodを指定します。
$ php sculpin.phar generate --env=prod
これで、output_prod/にサイトが生成されます。output_prod/以下のファイルをサーバに転送すればデプロイは完了です。
もし、URLが合わない場合は、--urlオプションで指定して変更することができます。
$ php sculpin.phar generate --env=prod --url=http://example.jp/blog
Shellとrsyncが使える環境では、sculpin-blog-skeletonに含まれるpublish.shが参考になります。
関連
参考
Date: 2013/10/11