VagrantにCakePHP ver3.3をインストールする

/

CakePHP

CakePHPはPHPのWebアプリケーション用フレームワークです。最近ではLaravelなどに押されている感もありますが、特に日本ではいまだに大きなシェアを誇っており何かと目にする機会も多いのでVagrantで開発環境を構築してみました。

CakePHP

実行環境

ホストOS ubuntu16.04LTS
ゲストOS CentOS7.2
Vagrant 1.8.6
VirtualBox 5.0.24
CakePHP3.3

インストールの準備

今回は現在の時点(2016/10)で最新のver3.3のCakePHPをインストールしていきます。CakePHPではバージョン毎にコードネームが着けられているようで、ver3.3は Red Velevet というケーキの色としては大分派手な名前で呼ばれています。

PHP

CakePHPのサイトのシステム要件によればCakePHPのver 3.3を実行するにはPHPのver 5.5.9以上が必要との事ですが、CentOS7のyumからインストール出来るPHPがver5.4.16だったのでPHPのver7をインストールためのリポジトリとしてRemi’s RPM repositoryを追加します。

Remi repositoryの追加

# epelリポジトリの追加
$ yum install epel-release
# remiリポジトリの追加
$ yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

PHP7のインストール

リポジトリを追加したのでPHP7とシステム要件にあるPHPのモジュールをインストールしていきます。php-pdoとphp-mysqlに関してはサイトに記載はありませが一度インストールした際にエラーが発生したので追加しました。

# 古いバージョンのPHPの削除
$ yum remove php-*
$ yum install --enablerepo=remi,remi-php70 php php-mbstring php-intl php-pdo php-mysql

Apache

WebサーバーとしてApacheをインストールしてサービスを起動します。

$ yum install httpd
$ systemctl start httpd
$ systemctl enable httpd

データベース

CakePHP ver3.3は以下のデータベースに対応していますが、今回はMySQL(MariaDB)を利用します。

  • MySQL (5.1.10 or greater)
  • PostgreSQL
  • Microsoft SQL Server (2008 or higher)
  • SQLite 3

参照: RDBMSとしてMariaDBをインストールする(CentOS7.2 | ubuntu16.04)/Koltatt

Git

環境を新しく作った場合に忘れがちですがComposerからCakePHPのプロジェクトを作るのに必要になるのでGitと、ついでに今回の環境に無かったのでunzipもインストールしておきます。

$ yum install git unzip

プロジェクトの作成

準備が整ったらCakePHPのプロジェクトをビルドしていきます。

Composer

CompoesrはPHPの依存管理システムです。
CakePHPは3.xから正式にComposerでのビルドに対応したようなので、Composerを使ってプロジェクトをビルドしていきます。
Vagrantの仮想環境にPHP Composerの導入/Koltatt

#グローバルにインストールしたComposerからプロジェクトをビルド
$ composer self-update && composer create-project --prefer-dist cakephp/app my_app
# ビルドしたプロジェクトをApacheのルートディレクトリに移動
$ sudo mv my_app /var/www/html

パーミッション

CakePHPはフレームワークからキャッシュの書き込みなどを行うため、プロジェクトディレクトリ内のtmpとlogsのパーミッションとユーザーをCakePHPがファイルへの書き込みが出来るものに設定してやる必要があります。
CakePHPのドキュメントのパーミッションの項目にもある通り、実際にネット上で公開する場合セキュリティを意識した設定を考える必要がありますが、今回は開発環境なのでとりあえずプロジェクトのディレクトリごとユーザーをApacheのものにし、tmpとlogsディレクトリのパーミッションを変更してCakePHPからの書き込みが出来るようにしました。

$ cd /var/www/html
$ sudo chown -R apache:apache my_app
$ sudo chmod -R 0777 my_app/logs
$ sudo chmod -R 0777 my_app/tmp
#Apcheの再起動
$ sudo systemtl restart httpd

CSSを読み込まない

ここまでの作業でCakePHPがインストール出来たのでVagrantで指定したipアドレスに接続するとページが表示されるのですが、CSSが読み込まれていません。

調べてみたところ以下のサイトで同じ状況の解決策が乗っていたので、参考にしてhttpd.confを見直しました。
Vagrant環境でCakePHPの初期画面でcssが反映されないのはapacheの設定だった/System.NormalBlog.net
Apacheの設定を修正してから再起動した後に再度ブラウザから接続したところ無事に完全なCakePHPのスタート画面が表示されました。

あとがき

CentOSとCakePHPは高機能というよりどちらかと言えば手堅いというイメージだったので、PHPのバージョンを合わせるためにリポジトリの追加が必要なのがちょっと意外でした。
CentOS7が標準で用意しているPHPが古いだけかもしれませんが、せっかくフレームワークを使うのに環境構築で手間が増えるのも面倒なのでもう少しだけバージョンを上げといてくれればなと思います。