インストーラの作り方調査
インストーラを作りたい。
できれば、サーバにソースをアップロード→ブラウザアクセス、一部データ(管理ID,パスワードなど)を入力→実行 で、できるだけ全てが済むようなインストーラを。
基本的なインストーラの作り方の一例を記載した記事を見つけたので、読解しつつ、ポイントまとめ。
Writing an installer for your CakePHP application - cakebaker
上記記事の内容を踏まえて見ると、CroogoやCandyCaneインストーラが、割と容易に理解できました。
基本インストーラについて
フロー要約
1. route.php:app/tmp/以下に”インストール済み”目印のファイルがない場合、以下のinstallerコントローラ実行
2. indexアクション:特に処理なし。インストール開始メッセージ&ボタンでも表示するか?
3. databaseアクション:セットアップSQLを実行。
4. thanksアクション:終了画面表示
良い点
- SQLダンプ情報をベースにセットアップできるので、CakeSchemaでNGのENUMやInnoDBもOK。初期値設定もOK。おそらく開発用セットアップSQLをかなり流用できる。
- index()〜database()の間に「初期値入力」画面を挟んで値を引き継げば、管理アカウントなどの初期値をユーザ入力で設定可能そう
- DBのprefix設定は、database.phpで設定してあればたぶんOK。
Croogo ver1.3のインストーラ
以上を踏まえて、CakePHPベースのインストーラ付きCMS:Croogo(ver.1.3)のソースをみてみました。
Downloads · croogo/croogo · GitHub
Croogoのインストーラは、app/plugin以下にあります。
要約
1. route.php→croogo_route.php:「app/config/以下にsetting.ymlがない場合、installer実行」
2. indexアクション:Viewで、各種設定(tmpディレクトリの権限・configファイル作成済みなど)のチェック&表示
3. databaseアクション:管理アカウント情報(IDとパスワード、DB名)の入力→database.phpを作成
4. dataアクション:セットアップSQLを実行。
4. finishアクション:インストール関連ファイル削除→setting.yml作成→core.phpのsalt自動書き換え→終了画面表示
要改善点
- setting.yml不要
- DBのprefix設定は、デフォルトでは不可。インストール用database.php.installを手動で変更する必要あり。
CandyCaneのインストーラ
CandyCaneは、CakePHPベースのプロジェクト管理システム。Rubyの有名プロジェクト管理ウェア・RedmineのPHP移植版だそうです。
RedmineをPHPに移植した·CandyCane MOONGIFT
インストーラはCroogoをベースとしているようですが、いくつか違いがあります。
http://thechaw.com/candycane/source/branches/master/app/plugins/install/
良い点
- 「インストール済み」判定がdatabase.phpの存在チェック
http://thechaw.com/candycane/source/app/config/routes.php
- prefixもユーザ入力で設定OK
CandyCaneのインストーラをベースに実装するのがよさそうです。