CakePHP 2.7を導入する方法についてまとめてみます。
前提
- Gitでソースコードを管理する。
- DBとしてSQLite3を使用する。
- jQuery,jQuery UI,Datepickerを使用する。
- システムを日本標準時を基準に稼働させる。
- 画像のアップロード処理に、UploadPackを使用する。
- 実行環境のドキュメントルートが
~{ユーザ名}/public_html
にある。 - 開発環境の
{プロジェクトディレクトリ}/{開発用ディレクトリ}
内に、開発用のファイルが置かれる。 - 実行環境のPHPのバージョンが5.4.16よりも前のものである(5.4.16以降の場合には、最新のCakePHPが使用できます)。
開発環境の設定
前提
- Git,SQLite3がインストールされている。
手順
-
cd {プロジェクトディレクトリ}
コマンドを実行し、カレントディレクトリをドキュメントルートに移動します。 -
git clone --single-branch --branch 2.7 git://github.com/cakephp/cakephp.git {開発用ディレクトリ}
コマンドを実行し、CakePHP 2.7をダウンロードします。 -
cd {開発用ディレクトリ}
コマンドを実行し、カレントディレクトリを移動します。 -
git clone --single-branch --branch 2.2 git://github.com/cakephp/debug_kit.git app/Plugin/DebugKit
コマンドを実行し、DebugKitを追加します。 -
git clone --single-branch git://github.com/szajbus/uploadpack app/Plugin/UploadPack
コマンドを実行し、UploadPackをダウンロードします。 -
rm -rf .git
コマンドを実行し、Gitの設定ファイルが入ったディレクトリを削除します。 -
rm -rf app/Plugin/DebugKit/.git*
コマンドを実行し、Gitの設定ファイルを削除します。 -
rm -rf app/Plugin/UploadPack/.git*
コマンドを実行し、Gitの設定ファイルを削除します。 -
rm app/Plugin/empty
コマンドを実行し、empty
ファイルを削除します。 -
mkdir app/webroot/upload
コマンドを実行し、upload
ディレクトリを作成します。 -
touch app/webroot/upload/empty
コマンドを実行し、empty
ファイルを作成します。 -
{プロジェクトディレクトリ}/{開発用ディレクトリ}/.gitignore
を次のように編集します。# User specific & automatically generated files # ################################################# build dist tags *.mo *.diff *.err *.orig *.rej *.swo *.swp *.vi *.lock bin # OS generated files # ###################### .DS_Store* ._* .Spotlight-V100 .Trashes Icon? *.db *~
-
{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/Config/bootstrap.php
の末尾に、CakePlugin::loadAll();
を追加します。 -
{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/View/Layouts/default.ctp
と{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/View/Layouts/error.ctp
の<?php echo $this->element('sql_dump'); ?>
を削除します。 -
{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/Controller/AppController.php
を次のように編集します。class AppController extends Controller { //追加部分 public $components = array('DebugKit.Toolbar'); }
-
mkdir db
コマンドを実行し、SQLite用DBファイルを格納するディレクトリを作成します。 -
sqlite3 db/{DBファイル名}
コマンドを実行し、SQLiteを起動します。
この際、DBファイル名を{ファイル名}.sqlite3
といった形にすると、他のファイルと区別がついて良いでしょう。
※db
という拡張子にはしないことをおすすめします(後述のデプロイメントの設定をそのまま適用できなくなるため)。 -
何らかのコマンドを実行します。
この際にテーブルを作成しても良いですが、そのつもりがなければ、とりあえず.tables
コマンドあたりを実行しておくと良いでしょう。 -
.exit
コマンドを入力し、SQLiteを終了します。 -
cp app/Config/database.php.default app/Config/database.php
コマンドを実行し、{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/Config/database.php.default
を{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/Config/database.php
というファイル名で同じディレクトリ内にコピーします。 -
{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/Config/database.php
を次のように編集します。class DATABASE_CONFIG { public $default = array( //変更部分 'datasource' => 'Database/Sqlite', 'persistent' => false, //変更部分 'database' => '{実行環境でのDBファイルの絶対パス}', 'prefix' => '', //'encoding' => 'utf8', ); public $test = array( //変更部分 'datasource' => 'Database/Sqlite', 'persistent' => false, //変更部分 'database' => '{実行環境でのDBファイルの絶対パス}', 'prefix' => '', //'encoding' => 'utf8', ); }
-
{プロジェクトディレクトリ}/{開発用ディレクトリ}/.htaccess
を次のように編集します。<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] #追加部分 RewriteBase /{ドキュメントルート}/{サイト名} </IfModule>
-
{プロジェクトディレクトリ}/{開発用ディレクトリ}/db/.htaccess
を次のように作成します。order deny,allow deny from all
-
{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/webroot/.htaccess
を次のように編集します。<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] #追加部分 RewriteBase /{ドキュメントルート}/{サイト名}/app/webroot </IfModule>
-
{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/Config/core.php
を次のように編集します。 -
セキュリティ関連の値の設定
/** * A random string used in security hashing methods. */ //変更部分 Configure::write('Security.salt', '{適当な文字列}'); /** * A random numeric string (digits only) used to encrypt/decrypt strings. */ //変更部分 Configure::write('Security.cipherSeed', '{適当な数値}');
-
タイムゾーンの設定
/** * Uncomment this line and correct your server timezone to fix * any date & time related errors. */ //変更部分 date_default_timezone_set('Asia/Tokyo');
-
ThemeRoller | jQuery UIの左のボックスのにある
Gallery
をクリックし、お好みのテーマを選びます。 -
{プロジェクトディレクトリ}/{開発用ディレクトリ}/app/View/Layouts/default.ctp
を次のように編集します。//追加部分 echo $this->Html->css('//code.jquery.com/ui/1.11.4/themes/{前の手順で選んだテーマ名の空白をハイフンで置換した名称}/jquery-ui.css'); echo $this->fetch('css'); //追加部分 echo $this->Html->script('//code.jquery.com/jquery-1.11.3.min.js'); echo $this->Html->script('//code.jquery.com/ui/1.11.4/jquery-ui.min.js'); echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js'); echo $this->fetch('script');
デプロイメントの設定
※IntelliJ IDEAを基準に書いているため、他の開発環境では異なる可能性があります。
項目 | 内容 |
---|---|
デプロイメント元 | {プロジェクトディレクトリ}/{開発用ディレクトリ} |
デプロイメント先 | {ドキュメントルート}/{サイト名} |
デプロイメントから除外するファイル |
.svn .cvs .idea .DS_Store* .git* .hg build* *.md .editorconfig *.yml LICENSE.txt composer.json .jshintrc ._* .Spotlight-V100 .Trashes Icon? *.db *.diff *.err *.orig *.rej *.swo *.swp *.vi *~ .cache .project .settings nbproject tags dist *.mo *.default *.lock .classpath .eml bin README* license *.eml *.zip
|
実行環境の設定
前提
- 管理者権限が使えない。
- SQLite3がインストールされている。
手順
- 開発環境から実行環境へデプロイメントを行います。
-
cd {ドキュメントルート}/{サイト名}
コマンドを実行し、カレントディレクトリを移動します。 -
chmod 757 -R app/tmp
コマンドを実行し、tmp
ディレクトリのパーミッションを設定します。 -
chmod 777 -R app/webroot/upload
コマンドを実行し、upload
ディレクトリのパーミッションを設定します。 -
chmod 707 db
コマンドを実行し、db
ディレクトリのパーミッションを設定します。 -
chmod 606 db/{DBファイル名}
コマンドを実行し、SQLite用DBファイルのパーミッションを設定します。 - CakePHPを導入したサイトにアクセスし、出てきたページに(DBに何も入っていないという警告を除く)エラーや警告が表示されてなければ、導入に成功したということになります。
参考文献
- szajbus/uploadpack
- CakePHP - Wikipedia
- cakephp/debug_kit at 2.2
- CakePHP2でSQLite3を使う方法
- 怒涛のめもめもリンク集 | CakePHP練習(2)
- CakePHP 2.x - CakePHP インストール時エラーの対処
- CakePHPのダウンロードとインストール - CakePHPの使い方
- database.phpの作成とデータベースの用意 - CakePHPの使い方
- [SQLite] DB作成・起動・終了・table/index/db表示 : まぁ、モカでも片手に。
- Git で空のディレクトリを追加する場合は empty ファイルを入れる | ウェブル
- 超簡単!カレンダーから日付入力する方法:jQuery ui Datepicker | WEBデザインファン
- jQuery-UI テーマの一覧、比較 社長の進捗 2014.8.2 | Javascript | 株式会社メイドインクリニック
- [CakePHP] インストールディレクトリの.htaccessだけではなく、appディレクトリとapp/webrootディレクトリの.htaccessも修正する必要がある。 - SumiTomohikoの日記