はじめに
Cookbookや各ブログなどに点在する情報を探し直しながら準備するのは手間なので、自分が行う手順をひと通りまとめました。
ほぼ自分用の手順の備忘録としてまとめましたが、誰かの役に立てば幸いです。
作業環境
- OS :
macOS
- ローカル環境 :
MAMP PRO 3.5.2 (PHP 7.0.8)
- 作業ディレクトリ :
~/Sites/
- ローカルURL :
http://localhost/
セットアップ編
CakePHP3のインストールだけでなく、プロジェクトとして複数人で共有することを前提とした準備手順になります。
前提条件
- データベースサーバ
- MySQL 5.1+
- SQLite 3
- PostgreSQL 8+
- SQLServer 2008+
- Oracle (コミュニティプラグイン経由)
- Webサーバ
- PHP 7 (CLI) 以上推奨 (最低 PHP 5.5.9 以上)
- mbstring extension
- openssl extension
- intl extension
- あとは開発する機能によりけり
- PHP 7 (CLI) 以上推奨 (最低 PHP 5.5.9 以上)
インストール
下準備
事前にPHPのバージョンを確認しておきます。
php -v
PHP 7.0.8 (cli) (built: Jul 11 2016 11:30:15) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
プロジェクトのディレクトリを作成してGitの初期化を行います。
以下、%PROJECT_NAME%
は適宜変更してください。
mkdir -p ~/Sites/%PROJECT_NAME%
cd ~/Sites/%PROJECT_NAME%
git init
Initialized empty Git repository in ~/Sites/%PROJECT_NAME%/.git/
Sites/
└─%PROJECT_NAME%/ (Current)
└─.git/
Gitの初期化完了後、README.md
を簡単に準備します。
私の場合、最初はプロジェクト名を書いておき、仕様が固まり次第、採用ブランチモデルやリポジトリのクローン直後のセットアップ方法、プロジェクトの開発ルールなどを追記するようにしています。
vim README.md
+ # %PROJECT_NAME%
Sites/
└─%PROJECT_NAME%/ (Current)
├─.git/
└─README.md
README.md
の準備が完了したら初回コミットを行います。
git add README.md
git commit -m "Initial commit."
[master (root-commit) xxxxxxx] Initial commit.
1 file changed, 2 insertions(+)
create mode xxxxxx README.md
初回コミット完了後、必要に応じてブランチモデルの適用などを行います。
また、リモートリポジトリを登録し、プッシュしておきましょう。
以下、%REMOTE_REPOSITORY_URL%
は適宜変更してください。
git remote add origin %REMOTE_REPOSITORY_URL%
git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), xxx bytes | xxx bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To %REMOTE_REPOSITORY_URL%
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
以上で下準備は完了になります。
CakePHP3のインストール
下準備が完了したら、プロジェクトのディレクトリにComposerをインストールします。
curl -s https://getcomposer.org/installer | php
Downloading 1.x.x...
Composer successfully installed to: ~/Sites/project/composer.phar
Use it: php composer.phar
Some settings on your machine may cause stability issues with Composer.
If you encounter issues, try to change the following:
The xdebug extension is loaded, this can slow down Composer a little.
Disabling it when using Composer is recommended.
Sites/
└─%PROJECT_NAME%/ (Current)
├─.git/
├─composer.phar
└─README.md
次に、Composerを通してCakePHP3のインストールを行います。
正しいパーミッションの設定や、設定ファイルの自動生成などのセットアップも自動で行ってくれます。
以下、%APP_NAME%
は適宜変更してください。
php ./composer.phar create-project --prefer-dist cakephp/app %APP_NAME%
cd ~/Sites/%PROJECT_NAME%/%APP_NAME%
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
Installing cakephp/app (3.x.x)
- Installing cakephp/app (3.x.x)
Loading from cache
Created project in %APP_NAME%
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing aura/installer-default (x.x.x)
Loading from cache
: (省略)
- Installing cakephp/bake (x.x.x)
Loading from cache
cakephp/app suggests installing markstory/asset_compress (An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.)
: (省略)
Set Folder Permissions ? (Default to Y) [Y,n]? Y (←パーミッションの設定を行うかどうか)
Permissions set on ~/Sites/%PROJECT_NAME%/%APP_NAME%/tmp/cache
Permissions set on ~/Sites/%PROJECT_NAME%/%APP_NAME%/tmp/cache/models
Permissions set on ~/Sites/%PROJECT_NAME%/%APP_NAME%/tmp/cache/persistent
Permissions set on ~/Sites/%PROJECT_NAME%/%APP_NAME%/tmp/cache/views
Permissions set on ~/Sites/%PROJECT_NAME%/%APP_NAME%/tmp/sessions
Permissions set on ~/Sites/%PROJECT_NAME%/%APP_NAME%/tmp/tests
Permissions set on ~/Sites/%PROJECT_NAME%/%APP_NAME%/tmp
Permissions set on ~/Sites/%PROJECT_NAME%/%APP_NAME%/logs
Updated Security.salt value in config/app.php
Sites/
└─%PROJECT_NAME%/
├─.git/
├─%APP_NAME%/ (Current)
│ ├─bin/
│ ├─config/
│ ├─logs/
│ ├─plugins/
│ ├─src/
│ │ ├─Console/
│ │ ├─Controller/
│ │ │ └─Component/
│ │ ├─Model/
│ │ │ ├─Behavior/
│ │ │ ├─Entity/
│ │ │ └─Table/
│ │ ├─Shell/
│ │ ├─Template/
│ │ └─View/
│ │ └─Helper/
│ ├─tests/
│ │ ├─Fixture/
│ │ └─TestCase/
│ ├─tmp/
│ ├─vendor/
│ ├─webroot/ (DocumentRoot)
│ │ ├─css/
│ │ ├─img/
│ │ └─js/
│ ├─.gitattributes
│ ├─.gitignore
│ ├─.htaccess
│ ├─composer.json
│ ├─composer.lock
│ └─index.php
├─composer.phar
└─README.md
この状態でドキュメントルートであるwebroot
(http://localhost/%PROJECT_NAME%/%APP_NAME%/
)へアクセスし、正常にGet the Ovens Ready画面が表示されればインストールは完了です。(初期状態では.htaccess
によりwebroot
へのRewriteがかかっています。)
ローカルのドキュメントルートにバーチャルホストを設定するなどはお好みで。
テストサーバーや本番サーバーではドキュメントルートにドメインを割り当てましょう。
初期状態コミット前の調整
あわせて、CakePHP3の初期状態をコミットする前に.gitignore
の調整を行います。
環境設定ファイル/config/app.php
はコミットから除外するようになっていますが、共有させておきたい設定などもあると思います。(言語設定やセッションの保存方法、ログの管理など…)
その場合は/config/app.default.php
にも同じ設定を施しておけばよいでしょう。
+ # Ignore files #
+ ################
/vendor/*
/config/app.php
+ /config/Migrations/*.lock
/tmp/*
/logs/*
+
+ # Unignore files #
+ ##################
+ !empty
+
+ # Cache files #
+ ###############
+ .sass-cache
+ .codekit-cache
+
+ # Configuration files #
+ #######################
+ *.sublime-project
+ *.sublime-workspace
+ config.rb
+ config.codekit
+ .idea
+
+ # OS generated files #
+ ######################
+ .DS_Store
+ .DS_Store?
+ ._*
+ .Spotlight-V100
+ .Trashes
+ Icon?
+ ehthumbs.db
+ Thumbs.db
上記のUnignore filesの設定を正しく認識させるにはGit
のv2.7
以降を利用してください。
参照: Git 2.7 で .gitignore が便利になっている
また、フォントファイル等のバイナリファイルがリポジトリ管理下に置かれた場合に、Gitがバイナリ内改行コードを書き換えてファイルが破損してしまう問題があります。
これを回避するため、あらかじめフォントファイルはバイナリファイルであると正しく認識するように調整しなければいけません。
参照: アイコンフォントをgit管理するとファイルが破損するときの対応方法
CakePHP3もインストール時点で.gitattribute
の設定はされていますが、フォントファイルの設定は抜けているので追加しておきます。
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.mo binary
*.pdf binary
*.phar binary
+ *.otf binary
+ *.eot binary
+ *.svg binary
+ *.ttf binary
+ *.woff binary
ここまで終了したら、リポジトリにコミットしてリモートリポジトリへプッシュしておきましょう。
リモートリポジトリへのプッシュが完了した段階で、セットアップ編は完了になります。
クローン編
セットアップ編の手順で作成されたリモートリポジトリから、別の環境でクローンしてから開発に入るための準備をするための手順になります。
リポジトリのクローン
まずは、リモートリポジトリからプロジェクトをクローンします。
cd ~/Sites/
git clone %REMOTE_REPOSITORY_URL%
Cloning into '%PROJECT_NAME%'...
remote: Counting objects: xxx, done.
remote: Total xxx (delta xxx), reused xxx (delta xxx)
Receiving objects: 100% (xxx/xxx), done.
Checking connectivity... done.
クローン後のセットアップ
クローンが完了したら、composer.json
のあるディレクトリに移動してComposerを実行します。
cd ~/Sites/%PROJECT_NAME%/%APP_NAME%/
(composer.json
のあるディレクトリ)
php ../composer.phar install
composer.json
の記述通りにプロジェクトがセットアップされ、クローンした環境で実行できるようになります。
セットアップ後、webroot
(http://localhost/%PROJECT_NAME%/%APP_NAME%/
)へアクセスし、正常にGet the Ovens Ready画面が表示されればクローン環境でのセットアップは完了です。
アレンジ
上記の準備手順は一例に過ぎません。
上記のように%PROJECT_NAME%
ディレクトリの一段下に%APP_NAME%
ディレクトリを持ってくるのが苦手なひともいると思うので、その場合はSites
ディレクトリに汎用的に使うComposerを入れておくか、そもそもグローバルComposerをインストールしておいて、そこから%APP_NAME%
でCakePHP3をインストールし、そのままプロジェクトとしてGitリポジトリ管理する場合も考えられます。
自分に合った管理方法を模索してみてください。
まとめ
CakePHP3はComposerの恩恵をかなり受けているので、パッケージ管理のしやすさもプロジェクトの共有も格段によくなっており、非常に使い勝手がよいです。
事実、実務に導入してからCakePHP2時代より遥かに仕事がしやすいように感じます。
ただし、セットアップに関してはやはり黒い画面をメインに作業することになるので、プロジェクトにコーダーさんやデザイナーさんなど黒い画面が苦手な人が加わる前にプロジェクトの管理者がREADME.md
などの手順の資料を出来るだけ用意しておくと良いように思います。
また、コーダーさんがフォントデータが追加されたときにGitのバイナリバグが発生すると後々大変なので、その辺りも先んじて設定しておくのもお忘れなく。(経験談)