FreeBSD – FreeBSD9.0-RELEASEにSymfony2を入れてみる。

先日入れたFreeBSD9.0-RELEASEにSymfony2を導入してみた。

前提

  • ローカル側でのみ使用(開発用途向け)
  • IPアドレスは192.168.1.175とした。
  • 作業はrootで。

portupgradeの導入

すっぴん状態なのでportupgradeを導入する。

# cd /usr/ports/ports-mgmt/portupgrade
# make install

MySQLの導入

とりあえず「日本Symfonyユーザ会」のチュートリアル向けにMySQLを入れる。

導入は基本的に「MySQL on FreeBSD」の通り。但しインストールは

# portinstall -f databases/mysql55-server

とした。

レプリケーションが不必要な場合は「MySQLのバイナリログが増殖していますた。」も参照。

※mysql_install_dbの実行は不必要?。

Apache2の導入

# portinstall -f www/apache22

Apache2ビルドオプション

Apache2ビルドオプション

php5の導入

# portinstall -f lang/php5

ビルドオプション

php5ビルドオプション

php5ビルドオプション

導入後、/usr/locaol/etcにあるphp.ini-development又はphp.ini-productionをphp.iniとしてコピーしておくのを忘れない事。

php5 Extensionsの導入

# portinstall -f lang/php5-extensions

ビルドオプション

php5 Extensionsビルドオプション

php5 Extensionsビルドオプション

Symfony2の入手と展開

Apacheのドキュメントルートを作成

# mkdir /usr/local/www/localip
# mkdir /usr/local/www/localip/data
# mkdir /usr/local/www/localip/log

Symfony.com」のダウンロードサイトより「Symfony_Standard_Vendors_2.0.9.tgz」を入手し、/usr/local/www/localip/dataに転送後

# tar zxvf Symfony_Standard_Vendors_2.0.9.tgz

として展開する。

Apache2の設定

/usr/local/etc/apache2/httpd.confを編集。

  • ServerNameを「192.168.1.175:80」に修正。
  • 「<IfModule dir_module>」にあるDirectoryIndexを

    DirectoryIndex index.html index.shtml index.cgi index.php

    のように修正。

  • 「<IfModule mime_module>」内に

    # PHP
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    を追記。

/usr/local/etc/apache22/Includesに「localip.conf」(ファイル名は拡張子が.confなら何でもOK)と言うファイルを下記内容で作成。

    <VirtualHost *:80>
        ServerAdmin 管理者のメールアドレス
        DocumentRoot /usr/local/www/localip/data
        ServerName  192.168.1.175
        UserDir     disabled
        HostNameLookups     ON
        ErrorLog /usr/local/www/localip/log/httpd-error.log
        CustomLog /usr/local/www/localip/log/httpd-access.log combined

        <Directory /usr/local/www/localip/data>
            AllowOverride All
            Allow from all
            Order allow,deny
        </Directory>

        <Location /usr/local/www/localip/data>
            Order deny,allow
            Deny from all
            Allow from 127.0.0.1
            Allow from 192.168.1
        </Location>

    </VirtualHost>

このままApacheを起動すると

[Tue Jan 17 19:46:19 2012] [alert] (EAI 8)hostname nor servname provided, or not known: mod_unique_id: unable to find IPv4 address of "9test"
Configuration Failed

とか言われて(/var/log/httpd-error.log)起動できない。

これは「マシン名の”9test”が名前解決できませんよ」と言う事なので、/etc/hostsへ

192.168.1.175           9test

を追記する。

次に/rtc/rc.confに

# Apache22
apache22_enable="YES"

を追記。

ここまで終了したら

# /usr/local/etc/rc.d/apache22 start

としてApacheを起動する。

Symfony2へのアクセス

Apachega起動したら、ブラウザから「http://192.168.1.175/Symfony/web/config.php」へアクセスすればSymfony2の環境チェックを行えるはずなのだが、導入当初はアクセスコントロールが有効になっている為、localhostからのアクセスしか受け付けないようになっている。

従って、Symfony2のスクリプトを下記の通り一部修正する。

  • /usr/local/www/localip/data/Symfony/web/config.php
    if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
        '127.0.0.1',
        '::1',
    ))) {
        header('HTTP/1.0 403 Forbidden');
        exit('This script is only accessible from localhost.');
    }

    をコメントアウト。

  • /usr/local/www/localip/data/Symfony/web/app_dev.php
    if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
        '127.0.0.1',
        '::1',
    ))) {
        header('HTTP/1.0 403 Forbidden');
        exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
    }

    をコメントアウト。

これで先程のURLにアクセスすると、

Symfony2環境確認画面

Symfony2環境確認画面

環境チェック後の問題点が表示される。(問題が有れば)

上記で構築した環境では

  • php.iniのdata.timezoneが設定されていない。
    /usr/local/etc/php.iniのdata.timezoneを”Asia/Tokyo”に設定。
  • APCが導入されていない。
    pecl-APCを導入。「FreeBSD + PHP に APC を適用する。」を参照。
  • intlが導入されていない。

    # portinstall -f devel/pecl-intl

    を実行してpecl-intlを導入。

  • phpのextensionを導入後

    # /usr/local/etc/rc.d/apache22 restart

    を実行してApacheを再起動する。

として対応した。

再度先程のURLにアクセスすると

修正後のSymfony2環境確認画面

修正後のSymfony2環境確認画面

のように正常状態となった。

余談

上記で作成したドキュメントルートはIndex表示を殺していないので、「http://192.168.1.175/」にアクセスすると/usr/local/www/localip/data内にあるファイル一覧が表示される。

なのでphpMyAdminなんかも展開しておくと便利かも。

※自環境ではESXiに内向きと外向き用のネットワークカードを指している都合上、こんな感じでphpMyAdmin等を入れてずぼらしています(爆)。


コメント

  1. […] 基本的に前回の「FreeBSD – FreeBSD9.0-RELEASEにSymfony2を入れてみる。」と同じ。変更箇所はApacheの代わりにnginxをインストールする事と、PHPのビルドオプションにphp-fpmを指定する事くらい […]

タイトルとURLをコピーしました