concrete5公式活用ブックのデモサイト構築失敗の記録

# 背景
## 経緯
- 2014年に公式活用ブックが発売されたときには出版記念セミナーにも参加したくらい、以前からConcrete5には興味があったが、諸事情（要は飽きた）によりconcrete5をご無沙汰していた。
- 2017年を迎え、ケーキ屋（通販なし）のWebサイトをリニューアルすることにしたので、改めてConcrete5に再挑戦を試みた。
- 活用ブックのデモサイトとして提供されているテーマは5.6を前提としているので、2017年1月現在の最新バージョン（concrete5-8.0.3, concrete5.7.5.13）ではエラーが生じて動作しないことが判明。
- 活用ブックのサポートサイト（GitHub）で提供されているconcrete5.6環境は、PHP5.6では動作しなかった。（公開されているデモ環境のPHPバージョンは5.3）
- 活用ブックのデモ環境は諦め、同じ作者が提供しているパッケージをマーケットプレイス経由でインストールすることにした

## メモ
### concrete5のバージョンの考え方
- 今まではconcrete5.7.5.13のように表記していたので、バージョン番号の頭に「5」がついていた
- バージョン8からconcrete5-8.0.3のように「concrete5」とバージョン番号を分けたため、頭に「5」が付かなくなった。
- 5.7から構成が大きくかわり、5.6はレガシーと呼ばれるようになった。8は5.7と互換性がある。
- 参考：[concrete5 の Ver. 8 から「5」をバージョン番号から省きます :: concrete5 Japan 日本語公式サイト](https://concrete5-japan.org/news/concrete5-version-definition/)

# concrete5奮戦記 
- 参考情報・利用した環境は末尾に記載

## concrete5-8.0.3
- [日本語公式サイトのダウンロードページ](https://concrete5-japan.org/about/download/)からconcrete5-8.0.3をダウンロード
- ZIP解凍したものをWebサーバのルートに指定
- サイトにアクセスしてインストール手順を進める
- [活用ブックのデモコンテンツをダウンロード](http://book.concrete5-japan.org/#download)し、httpdのルート配下にthemesディレクトリを作成して配置（olive_sample）
- 作成したテーマが管理画面で認識されない。バージョンの違いが原因かもしれないと思い、7系（5.7）で再チャレンジ
- 後日談）調査の結果、5.7以降ではapplication/themes に入れることがわかった
 - [concrete5のテーマの作り方　バージョン5.7で何が変わったの？](http://blog.cloud9works.net/web/concrete5-ver-57-theme-difference/)

## concrete5.7.5.13
- concrete5-8.0.3の時と同じ手順でconcrete5をインストール
- このときにテーマはapplication/themesに入れることに気づく
- 活用ブックのサンプルテーマをインストールして適用したところ、「Call to a member function hasPageThemeGridFrameworkOffsetClasses() on null」というエラーが発生
![image](https://qiita-image-store.s3.amazonaws.com/0/64819/1988b6b3-3873-77f9-7bdf-0dbf96316b03.png)
- Google先生に聞いても答えが見つからなかった
 - [Call to a member function hasPageThemeGridFrameworkOffsetClasses() on a non-object :: concrete5 Japan 日本語公式サイト](https://concrete5-japan.org/community/forums/chat/post-13885/)
 - [Call to a member function hasPageThemeGridFrameworkOffsetClasses() on a non-object - concrete5](https://www.concrete5.org/community/forums/customizing_c5/call-to-a-member-function-haspagethemegridframeworkoffsetclasses)
 - [hasPageThemeGridFrameworkOffsetClasses - concrete5](https://www.concrete5.org/developers/bugs/5-7-5-2/haspagethemegridframeworkoffsetclasses)
- バージョンの依存が原因らしいので、6系（5.6）で再チャレンジ

## concrete5_japanese_book-master
- 活用ブックのサポートサイトからダウンロードしたファイルを解凍し、concrete5 ディレクトリをWebルートに指定
 - concrete/config/version.phpによるとconcrete5のバージョンは5.6.0.2
- 今までと同様にインストールを実行
 - filesディレクトリはなかったので追加した
- インストールには成功したが、トップページを開くと次のエラーが出る
> Catchable fatal error: Object of class BlockRecord could not be converted to string in /home/www/cc5.ebisawa.co.jp/concrete5_japanese_book-master/concrete5/concrete/libraries/3rdparty/Zend/Cache/Core.php on line 361
- [活用ブックのサポートサイトで公開されているデモ環境](http://book.concrete5-japan.org/concrete5/)では問題なく動作している。PHPのバージョンを調べたら5.3だった
- 今さらWebサーバのPHPのバージョンを古くしたくないので諦める。

## concrete5-8.0.3で再チャレンジ
- いろいろ調べていたら、デモ環境の作者がパッケージを公開していたことに気づく
 - [Palette - concrete5](https://www.concrete5.org/marketplace/themes/palette)
- 見た目も良いので、これをカスタマイズする方向で検討する
- concrete5-8.0.3をインストールしてパッケージを適用したら「Undefined method Concrete\Core\File\Image\Thumbnail\Type\Type::setName() #4335」というエラーが出て動作しない。8系で廃止された関数を呼び出していることが原因らしい
 - [v8 - Undefined method Concrete\Core\File\Image\Thumbnail\Type\Type::setName() · Issue #4335 · concrete5/concrete5 · GitHub](https://github.com/concrete5/concrete5/issues/4335)

## concrete5.7.5.13で再チャレンジ
- concrete5.7.5.13を再インストール
- ダウンロードしたパッケージをpackage/ ディレクトリにアップし、管理画面からインストール
- ようやく動作したので、これをカスタマイズする方向で進める。

# 参考情報
## 公式サイト
- [concrete5 Japan 日本語公式サイト](https://concrete5-japan.org/)
- [concrete5 公式活用ガイドブック サンプルデータダウンロード＆サポートページ](http://book.concrete5-japan.org/)

## マーケットプレイス
- [Palette - concrete5](https://www.concrete5.org/marketplace/themes/palette)

## デザインワークスオンサイド
活用ブックのデモ環境の作成者によるconcrete5の解説サイト
### はじめてのconcrete5
- [インストール & テーマ制作の第一歩 篇](http://www.onside.com/web_design/6346.html)
- [エリア & グローバルエリアの設定 篇](http://www.onside.com/web_design/6442.html)
- [カスタムテンプレート（オートナビブロック）篇](http://www.onside.com/web_design/6560.html)
- [カスタムテンプレート（記事ブロック）篇](http://www.onside.com/web_design/6645.html)
- [ページタイプ（ホーム用のテンプレート）& ページリストブロック 篇](http://www.onside.com/web_design/6696.html)
- [ページ属性（カスタム属性）& ページタイプの追加 篇](http://www.onside.com/web_design/6784.html)
- [ページリストブロックのカスタマイズ 篇](http://www.onside.com/web_design/6884.html)
- [ブロック（画像ブロック、検索ブロックなど）の追加 & ブロック CSS スタイルの設定 篇](http://www.onside.com/web_design/6951.html)
- [スタック & ページタイプのデフォルトブロック（子ページの設定）篇](http://www.onside.com/web_design/7017.html)
- [フォームブロック & Google マップ、スライドショーブロックなど](http://www.onside.com/web_design/7406.html)

### 勉強会の資料
- [concrete5 のデザインカスタマイズについて関西ユーザーグループ 第21回勉強会でお話しましたよー](http://www.onside.com/web_design/8401.html)

### concrete5 でケーキ屋さんのサイトを作ろう！
- [サンプルサイト](http://www.onside.com/la_palette/)
- [テーマのテンプレートとページタイプのおさらい](http://www.onside.com/web_design/8469.html)
- [ページリストのカスタマイズ](http://www.onside.com/web_design/8599.html)
- [ページ属性（カスタム属性）](http://www.onside.com/web_design/8919.html)
- [オートナビのカスタマイズ](http://www.onside.com/web_design/8973.html)

# 利用環境
## OS
- Amazon EC2のLinuxを利用

> NAME="Amazon Linux AMI"
> VERSION="2016.09"
> ID="amzn"
> ID_LIKE="rhel fedora"
> VERSION_ID="2016.09"
> PRETTY_NAME="Amazon Linux AMI 2016.09"
> ANSI_COLOR="0;33"
> CPE_NAME="cpe:/o:amazon:linux:2016.09:ga"
> HOME_URL="http://aws.amazon.com/amazon-linux-ami/"

## Apache
- 標準バージョンをyum（rpm）でインストール（develは入れていない）

> $ rpm -qa|grep httpd
> httpd24-tools-2.4.23-1.66.amzn1.x86_64
> httpd24-2.4.23-1.66.amzn1.x86_64

## PHP
- 5.6をyumでインストール、以前入っていた5.3は削除済み、気になることはphp-gdを追加したことくらい

> $ rpm -qa|grep httpd
> php56-jsonc-1.3.6-1.19.amzn1.x86_64
> php56-common-5.6.28-1.130.amzn1.x86_64
> php56-mysqlnd-5.6.28-1.130.amzn1.x86_64
> php56-mbstring-5.6.28-1.130.amzn1.x86_64
> php56-xml-5.6.28-1.130.amzn1.x86_64
> php56-gd-5.6.28-1.130.amzn1.x86_64
> php56-cli-5.6.28-1.130.amzn1.x86_64
> php56-pdo-5.6.28-1.130.amzn1.x86_64
> php56-5.6.28-1.130.amzn1.x86_64
> php56-intl-5.6.28-1.130.amzn1.x86_64
> php56-imap-5.6.28-1.130.amzn1.x86_64
> php56-process-5.6.28-1.130.amzn1.x86_64
> php56-mcrypt-5.6.28-1.130.amzn1.x86_64

## MySQL
- 5.5をyum（rpm）でインストール

> $ rpm -qa | grep mysql
> php56-mysqlnd-5.6.28-1.130.amzn1.x86_64
> mysql55-libs-5.5.52-1.13.amzn1.x86_64
> mysql-config-5.5.52-1.13.amzn1.x86_64
> mysql55-server-5.5.52-1.13.amzn1.x86_64
> mysql55-5.5.52-1.13.amzn1.x86_64
> mysql-server-5.5-1.6.amzn1.noarch