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/以下にテンプレートが配置されています。

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は記事のタイトル。tagscategoriesはタグとカテゴリの指定です。

なお、以下のように記述すると、その記事はドラフトになり本番用のサイト生成では出力されなくなります。

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

Tags: sculpin