[Zend Framework] Vagrant 環境に Zend Framework 1 と Zend Framework 2 をインストールする
以前に作った Zend アプリケーションを Vagrant 環境で動かせるようにしておくと良いかなと思いたち、ひとまずスケルトンプロジェクト作成をしました。
[markdown]
## System requirements
必要要件を確認します。
Zend Framework 1.12dev … PHP 5.2.11 or later.
> * [zendframework/zf1](https://github.com/zendframework/zf1)
Zend Framework 2.3.4dev … PHP 5.3.23 or later.
> * [zendframework/zf2](https://github.com/zendframework/zf2)
(CentOS 6.5 標準でインストールされるのは PHP 5.3.3 で、ZF2 のスケルトンアプリが表示されずにはまりました。)
## ファイルレイアウト
* /vagrant/www ディレクトリを作成し、そのなかにプロジェクトを作成します。
* composer でインストールします。
* PHP, ZF1, ZF2 のプロジェクトを動かせるようにします。
* それぞれのプロジェクトの /public を Virtual host のドキュメントルートに設定します。
“`prettyprinted:ファイルレイアウトのイメージ
.
├── Gemfile
├── Gemfile.lock
├── Vagrantfile
├── cookbooks
├── data_bags
├── environments
├── nodes
├── roles
├── site-cookbooks
│ └── zend
└── www
├── composer.json
├── composer.lock
├── php
├── vendor
├── zf1
└── zf2
“`
このディレクトリを synced_folder で /vagrant として読み込みます。
## バーチャルホストの設定をする
httpd.conf にバーチャルホストの設定を加えておきます。
> * [Chef: 用意したテンプレートを設定ファイルとして利用する | deadwood](https://www.d-wood.com/blog/2014/09/30_6949.html)
> * [Apache: 名前ベースのバーチャルホスト設定をする | deadwood](https://www.d-wood.com/blog/2014/10/02_6958.html)
“`ruby:/site-cookbooks/zend/templates/default/httpd.conf.erb
:
DocumentRoot <%= node['httpd']['php'] %>
ServerName php.local
DocumentRoot <%= node['httpd']['zf1'] %>
ServerName zf1.local
SetEnv APPLICATION_ENV “development”
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
DocumentRoot <%= node['httpd']['zf2'] %>
ServerName zf2.local
SetEnv APPLICATION_ENV “development”
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
:
“`
## composer でインストールする
`composer install` を実行し、ライブラリをインストールします。
“`json:composer.json
{
“repositories”: [
{
“type”: “composer”,
“url”: “https://packages.zendframework.com/”
}
],
“require”: {
“zendframework/zendframework”: “2.3.*@dev”,
“zendframework/zftool”: “dev-master”,
“zendframework/zendframework1”: “1.12.*@dev”
}
}
“`
ZF2 では zf コマンドがなくなったので、Zend Framework 2 Tool をあわせてインストールします。
> * [zendframework/zftool – Packagist](https://packagist.org/packages/zendframework/zftool)
> * [zendframework/ZFTool](https://github.com/zendframework/ZFTool)
## PHP のプロジェクトを作成する
ドキュメントルートに phpinfo を表示するファイルを置いておきます。
“`php:index.php
* [レンタルサーバに Zend Framework をインストールする | deadwood](https://www.d-wood.com/blog/2013/08/03_4440.html)
> * [Zend_Tool: zf を利用してプロジェクトを作成する | deadwood](https://www.d-wood.com/blog/2013/06/14_3929.html)
composer のオートローダーを呼ぶように /public/index.php に以下を追記します。
“`php
require_once realpath(‘/vagrant/www/vendor/autoload.php’);
“`
## Zend Framework 2 のプロジェクトを作成する
Zend Framework 2 Tool でプロジェクトを作成します。
> * [Zend Framework Tool (ZFTool) — Zend Framework 2 2.3.3 documentation – Zend Framework](http://framework.zend.com/manual/2.3/en/modules/zendtool.introduction.html)
プロジェクトディレクトリ内で composer を実行するよう指示されますが、すでに ZF2 はインストール済なので飛ばします。
“`prettyprinted
% vendor/bin/zf.php create project zf2
ZF2 skeleton application installed in zf2.
In order to execute the skeleton application you need to install the ZF2 library.
Execute: “composer.phar install” in zf2
For more info in zf2/README.md
“`
index.php を読むと、init_autoloader.php が呼ばれており、ZF2 のライブラリの場所を伝えてあげる必要があることが分かりました。
ZF2_PATH に composer でインストールしたパスを渡してあげるよう、下記を追記します。
“`php:public/index.php
:
chdir(dirname(__DIR__));
$path = realpath(dirname(__DIR__) . ‘/../vendor/zendframework/zendframework/library/’);
putenv(“ZF2_PATH=” . $path);
:
“`
## vagrant up
あとは `vagrant up` です。
`http://php.local/`
`http://zf1.local/`
`http://zf2.local/`
一式をまとめました。
> * [VMs/Zend at master · DriftwoodJP/VMs](https://github.com/DriftwoodJP/VMs/tree/master/Zend)
## 補遺
### remi, epel repo の追加
前述の通り PHP のバージョンを上げる必要があり、yum repo 追加をシェルスクリプトで間に合わせました。
“`ruby:/site-cookbooks/zend/templates/recipes/default.erb
:
bash “add_yum_repo” do
user “root”
cwd “/vagrant/www”
code <<-EOH
sudo rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo yum install -y --enablerepo=remi-php55 php php-mbstring httpd mysql-server
EOH
end
:
``` こちらを参考にさせて頂きました。 > * [CentOSにyumリポジトリを追加 – Qiita](http://qiita.com/kidachi_/items/40f862181050b78b9cc7)
> * [DQNEO/vagrant-php55-apache](https://github.com/DQNEO/vagrant-php55-apache)
[/markdown]