最後のチューンアップと配備
============================

私たちのブログアプリケーションも完成に近づきました。配備をする前に、少しチューンアップしたいと思います。


ホームページを変更する
------------------

記事一覧のページをホームページとして使用します。[アプリケーション初期構成](http://www.yiiframework.com/doc/guide/ja/basics.application#sec-2) を下記のように修正します。

~~~
[php]
return array(
	......
	'defaultController'=>'post',
	......
);
~~~

> Tip|ヒント: `PostController` は `index` がデフォルトのアクションであると既に宣言しています。そのため、アプリケーションのホームページにアクセスすると、`post` コントローラの `index` アクションによって生成される結果が表示されます。


スキーマキャッシュを有効にする
-----------------------

アクティブレコードは、カラム情報を決定するために、テーブルに関するメタデータを必要とします。このため、メタデータを読み取って分析する時間が必要になります。このことは開発段階では問題にならないかもしれません。しかし、実運用モードで動作するアプリケーションにとっては、データベースのスキーマが変更されないのであれば、まったくの時間の浪費です。従って、アプリケーション初期構成を下記のように変更して、スキーマキャッシュを有効にするべきです。

~~~
[php]
return array(
	......
	'components'=>array(
		......
		'cache'=>array(
			'class'=>'CDbCache',
		),
		'db'=>array(
			'class'=>'system.db.CDbConnection',
			'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db',
			'schemaCachingDuration'=>3600,
		),
	),
);
~~~

上記においては、最初に `cache` コンポーネントを追加しています。これはキャッシュストレージとしてデフォルトの SQLite データベースを使用するものです。サーバーが APC など他のキャッシュ拡張を装備している場合は、それを使うように変更することも可能です。そして、`db` コンポーネントを修正して、[schemaCachingDuration|CDbConnection::schemaCachingDuration] プロパティを 3600 に設定します。これは、読み取られたデータベースのスキーマデータが 3600 秒間有効にキャッシュされうることを意味します。


デバッグモードを無効にする
------------------------

エントリスクリプトファイル `/wwwroot/blog/index.php` を修正して、定数 `YII_DEBUG` を定義している行を削除します。この定数は開発段階では役に立ちます。なぜなら、この定数を定義すると、Yii はエラーが生じた場合に、より多くのデバッグ情報を表示することが出来るようになるからです。しかし、アプリケーションを実運用モードで動作させる場合は、デバッグ情報を表示することはあまり望ましくありません。デバッグ情報は、スクリプトファイルの格納場所やファイルの内容など、セキュリティ上の注意を要する情報を含み得るからです。


アプリケーションを配備する
-------------------------

最後の配備のプロセスは、`/wwwroot/blog` のディレクトリをターゲットディレクトリにコピーすることが主な作業となります。下記に必要なすべてのステップをチェックリストとして示します:

 1. もしまだであれば、Yii をターゲットの環境にインストールする。
 2. `/wwwroot/blog` ディレクトリ全体をターゲットの環境にコピーする。
 3. エントリスクリプトファイル `index.php` を編集して、変数 `$yii` が新しい Yii のブートストラップファイルを参照するようにする。
 4. スクリプトファイル `protected/yiic.php` を編集して、変数 `$yiic` が新しい Yii の `yiic.php` ファイルを参照するようにする。
 5. ディレクトリ `assets` と `protected/runtime` のパーミッションを変更して、ウェブサーバのプロセスによる書き込みが出来るようにする。


<div class="revision">$Id$</div>