PHPビギナーが挑むZend Framework 1(インストール)

2013.08.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。最近PHPの学習を始めましたクラスメソッドの稲毛です。

PHPと関わりの深いゼンド・テクノロジーズ社つながりということで、Zend Frameworkをエントリポイントとして学習しています。
中身がだいぶ異なるようなのですが、「2」を知るにはまず「1」からということで、Zend Framework 「1」のLAMP環境を構築してみました。

環境

今回は、VirtualBox仮想マシン上のUbuntuにZend Frameworkをインストールしました。

仮想環境
VirtualBox 4.2.16 r86992
ホストOS
Windows 7 Professional SP1 64bit
ゲストOS
Ubuntu 12.04.2 LTS 64bit
Zend Framework
Zend Framework 1.12.3 Full

コマンドヒストリ

下記はZend Frameworkをインストールした際のコマンドヒストリです。

$ sudo -s

# apt-get install python-software-properties
# add-apt-repository ppa:ondrej/php5

# apt-get update
# apt-get upgrade -y

# apt-get install aptitude -y

# aptitude update
# aptitude dist-upgrade -y

# aptitude install -y \
    apache2-mpm-prefork \
    libapache2-mod-php5 \
    php-apc \
    php5-cli \
    php5-common \
    php5-dev \
    php5-curl \
    php5-mysqlnd \
    php5-xdebug \
    php-pear \
    git-all \
    mysql-server \
    mysql-client \
    subversion \
    make

# git clone git://github.com/facebook/xhprof.git
# cd xhprof/extension
# phpize
# ./configure 
# make
# make install

# cd
# wget -c  https://packages.zendframework.com/releases/ZendFramework-1.12.3/ZendFramework-1.12.3.tar.gz
# tar zxvf ZendFramework-1.12.3.tar.gz -C /usr/share/php/

# sed -i 's~^;include_path = ".:/usr/share/php"~include_path = ".:/usr/share/php:/usr/share/pear:/usr/share/php/ZendFramework-1.12.3/library"~' /etc/php5/apache2/php.ini

# /etc/init.d/apache2 restart

コマンドの解説

コマンドについては、同じくPHPのWEBアプリケーションフレームワークである「BEAR.Sunday」の設定を参考にさせて頂きました。
機会があれば今後「BEAR.Sunday」についても触れてみたいと思います。

1. PHPを最新のバージョンへ更新する為のAPTリポジトリ追加

apt-get install python-software-properties
add-apt-repository ppa:ondrej/php5

「add-apt-repository」を使用する為に「python-software-properties」をインストールし、リポジトリ「ppa:ondrej/php5」を追加しています。

2. apt-getで管理されるパッケージ一覧の更新・適用

apt-get update
apt-get upgrade -y

yオプションを付与すると、確認「Yes/No」について全て「Yes」で進行するそうです。

3. aptitudeのインストールおよび管理されるパッケージ一覧の更新・適用

apt-get install aptitude -y

aptitude update
aptitude dist-upgrade -y

dist-upgradeではupgradeよりも依存性を考慮した処理が行われるそうです。

4. 必要(そう)なソフトウェアパッケージのインストール

aptitude install -y \
    apache2-mpm-prefork \
    libapache2-mod-php5 \
    php-apc \
    php5-cli \
    php5-common \
    php5-dev \
    php5-curl \
    php5-mysqlnd \
    php5-xdebug \
    php-pear \
    git-all \
    mysql-server \
    mysql-client \
    subversion \
    make

必要の無いパッケージなどもあるかもしれません。(-_-;)

5. プロファイラツール「XHProf」のインストール

git clone git://github.com/facebook/xhprof.git
cd xhprof/extension
phpize
./configure 
make
make install

6. Zend Frameworkのダウンロード・解凍

cd
wget -c  https://packages.zendframework.com/releases/ZendFramework-1.12.3/ZendFramework-1.12.3.tar.gz
tar zxvf ZendFramework-1.12.3.tar.gz -C /usr/share/php/

7. PHPの参照パスを有効化およびZend Frameworkの追加

sed -i 's~^;include_path = ".:/usr/share/php"~include_path = ".:/usr/share/php:/usr/share/pear:/usr/share/php/ZendFramework-1.12.3/library"~' /etc/php5/apache2/php.ini

「sed」コマンドで文字列置換していますが、「vi」などのエディタで直接編集しても問題ありません。

8. Apacheの再起動

/etc/init.d/apache2 restart

プロジェクトの作成

Zend Frameworkに付属している「zf.sh」を利用して「quickstart」プロジェクトを作成します。

$ /usr/share/php/ZendFramework-1.12.3/bin/zf.sh create project quickstart
$ sudo ln -s ~/quickstart/public/ /var/www/quickstart

http://localhost/quickstart/」にアクセスして下のようなページが表示されればZend Frameworkは正常に動作しています。

welcome_zf1

MySQLの動作確認

プロジェクト内のテンプレートを編集して確認してみました。

~/quickstart/application/views/scripts/index/index.phtml
<style>
    a:link,
    a:visited
    {
        color: #0398CA;
    }

    span#zf-name
    {
        color: #91BE3F;
    }

    div#welcome
    {
        color: #FFFFFF;
        background-image: url(http://framework.zend.com/images/bkg_header.jpg);
        width:  600px;
        height: 400px;
        border: 2px solid #444444;
        overflow: hidden;
        text-align: center;
    }

    div#more-information
    {
        background-image: url(http://framework.zend.com/images/bkg_body-bottom.gif);
        height: 100%;
    }
</style>
<div id="welcome">
    <h1>Welcome to the <span id="zf-name">Zend Framework!</span></h1>

    <h3>This is your project's main page</h3>

    <h3><?php echo $this->result; ?></h3>

    <div id="more-information">
        <p><img src="http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" /></p>
        <p>
            Helpful Links: <br />
            <a href="http://framework.zend.com/">Zend Framework Website</a> |
            <a href="http://framework.zend.com/manual/en/">Zend Framework Manual</a>
        </p>
    </div>
</div>
~/quickstart/application/controllers/IndexController.php
<?php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
        $con = mysql_connect("localhost", "root", "") or die($this->view->result = "Connection failed!");
        $this->view->result = "Connection successful!";
        mysql_close($con);
    }


}

ハイライトされている行が追記した箇所です。
http://localhost/quickstart/」にアクセスして「Connection successful!」と表示されればMySQLの準備もOKです。

connection_successful

VirtualBoxホストOSからのアクセス

ホストOSからゲストOSへアクセスする場合は、VirtualBoxのネットワーク設定で「ポートフォワーディング」を利用すると簡単です。

port_forwarding

ホストOSのポート「8080」へのアクセスをゲストOSのポート「80」へ転送させます。

port_forwarding_rule

ホストOSのブラウザから「http://localhost:8080/quickstart/」へアクセスすると、前述と同様のページが表示される筈です。

まとめ

とりあえずZend Frameworkが動作する環境を構築することはできました。
既存のLAMP環境へ設定する場合にも基本は「Zend Frameworkの設置」と「php.iniの編集」だけなので簡単に環境を構築できるかと思います。
この環境を使ってZend Frameworkを学習し、その結果をまたブログとして残していけたらと考えています。(^^)