Vagrant

Vagrant が何かに関しては検索すれば幾らでも情報が出てくるのでここでは述べない。

まずは Vagrant をインストールする。 公式からダウンロードしてインストールすれば良い。 VirtualBox も入っていなければインストールしておく。

Ubuntu 16.04 LTS に関しては公式に box が提供されているのでそれを使用する:

vagrant init ubuntu/xenial64

これでカレントディレクトリに VagrantFile が出来るので、この中の以下の行のコメントアウトを外す:

" VM 上の 80 番ポートへのアクセスをホスト側の 8080 番ポートに変換する設定. 8080 が使用済なら適宜変更する
config.vm.network "forwarded_port", guest: 80, host: 8080

その後以下のコマンドを叩いて VM を起動する:

vagrant up --provider virtualbox

以下のコマンドで VM に SSH 接続する:

vagrant ssh

試しに Apache を導入し動作確認を行う:

sudo apt install apache2

http://localhost:8080/ にアクセスし、正しく Ubuntu の Apache テストページが表示されるのを確認する。

PHP 7.0

PHP 7.0 の環境を構築する。 Ubuntu 16.04 における PHP 7.0 関連の項目を検索するには以下のコマンドを叩く:

apt search php7.0

まとめて必要そうなのを入れてしまう:

sudo apt install libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-intl php7.0-json php7.0-mbstring php7.0-sqlite3
/* sudo apt install php7.0-mysql */
/* sudo apt install php7.0-pgsql */

デフォルトの DocumentRoot が /var/www/html なのでそこに試しに PHP ファイルを置いてみる:

cd /var/www/html
sudo mv index.html index.html.old
sudo vi index.php

index.php の内容は以下とする:

<?php
phpinfo();

http://localhost:8080/ にアクセスし、正しく phpinfo が表示されるのを確認する。

DocumentRoot を /vagrant/xxx にする

デフォルトの DocumentRoot のままだとホスト側に /vagrant がマウントされる仕組みを活かすことが出来ないので変更する。 /vagrant/xxx だが xxx の部分は各自適当なプロジェクト名とする:

 sudo vi /etc/apache2/sites-available/000-default.conf

以下 DocumentRoot を編集しアクセス許可を与える:

DocumentRoot /vagrant/xxx
<Directory /vagrant/xxx>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

テスト用のページを用意しておく。 先程の phpinfo 再利用でよいだろう:

mkdir /vagrant/xxx
sudo mv /var/www/html/index.php /vagrant/xxx
sudo service apache2 restart

http://localhost:8080/ にアクセスし、正しく phpinfo が表示されるのを確認した上で DOCUMENT_ROOT/vagrant/xxx になっているのを確認する。

mod_rewrite 有効化

CakePHP 3 では mod_rewrite を使用しているが Ubuntu の Apache のデフォルトでは有効になっていないので以下で有効にしておく:

sudo a2enmod rewrite
sudo service apache2 restart

CakePHP 3 インストール

先程の index.php は不要なので消しておく:

rm index.php

CakePHP 3 のインストールに関しては公式のドキュメントが素晴らしいのでこれに従っておけば問題ない。 ただ composer create-projectzipunzip が必要なようなので以下で入れておく:

sudo apt install zip unzip

あと composer create-project で出来るプロジェクトがディレクトリに含まれているので (この例だと /vagrant/xxx のこと) /vagrant 直下で composer create-project するのがいい。

尚 DB ばデフォルトで MySQL を使用するように config/app.php に書かれているので例えば SQLite を使うつもりでそのまま http://localhost:8080 にアクセスしても「MySQL のドライバーが見つからない」といったエラーになってしまう。 これに関しては config/app.php を以下のように SQLite 用に直せば良い:

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Sqlite',  // Sqlite にする
        'persistent' => false,
        'host' => 'localhost',
        'username' => '',  // 空にする
        'password' => '',  // 空にする
        'database' => 'xxx.sqlite',  // 適当な SQLite ファイル名を書く
    ... (省略) ...
    'test' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Sqlite',  // こっちも Sqlite にしないと駄目
        'persistent' => false,
        'host' => 'localhost',
        'username' => '',  // 空にする
        'password' => '',  // 空にする
        'database' => 'test.sqlite',  // 適当な SQLite ファイル名を書く
    ... (省略) ...

これで http://localhost:8080 にアクセスしカラフルな Get the Ovens Ready ページが表示されれば開発環境構築完了である。