先日入れた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
php5の導入
# portinstall -f lang/php5
ビルドオプション
導入後、/usr/locaol/etcにあるphp.ini-development又はphp.ini-productionをphp.iniとしてコピーしておくのを忘れない事。
php5 Extensionsの導入
# portinstall -f lang/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にアクセスすると、
環境チェック後の問題点が表示される。(問題が有れば)
上記で構築した環境では
- 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にアクセスすると
のように正常状態となった。
余談
上記で作成したドキュメントルートはIndex表示を殺していないので、「http://192.168.1.175/」にアクセスすると/usr/local/www/localip/data内にあるファイル一覧が表示される。
なのでphpMyAdminなんかも展開しておくと便利かも。
※自環境ではESXiに内向きと外向き用のネットワークカードを指している都合上、こんな感じでphpMyAdmin等を入れてずぼらしています(爆)。
コメント
[…] 基本的に前回の「FreeBSD – FreeBSD9.0-RELEASEにSymfony2を入れてみる。」と同じ。変更箇所はApacheの代わりにnginxをインストールする事と、PHPのビルドオプションにphp-fpmを指定する事くらい […]