dstat インストール手順の覚書

dstat の紹介記事見て、早速インストールしてみた。そのときの手順を忘れないように書いておく。

手順

  • wgetでdstatのrpmを入手。
 $cd /usr/local
 $sudo mkdir src
 $sudo wget http://apt.sw.be/redhat/el5/en/x86_64/extras/RPMS/dstat-0.7.2-1.el5.rfx.noarch.rpm
 --2012-03-01 14:38:14--  http://apt.sw.be/redhat/el5/en/x86_64/extras/RPMS/dstat-0.7.2-1.el5.rfx.noarch.rpm
 apt.sw.be をDNSに問いあわせています... 193.1.193.67
 apt.sw.be|193.1.193.67|:80 に接続しています... 接続しました。
 HTTP による接続要求を送信しました、応答を待っています... 200 OK
 長さ: 249282 (243K) [application/x-redhat-package-manager]
 `dstat-0.7.2-1.el5.rfx.noarch.rpm' に保存中
 100%[========================================================================
 =====================================>] 249,282      154K/s 時間 1.6s
 2012-03-01 14:38:16 (154 KB/s) - `dstat-0.7.2-1.el5.rfx.noarch.rpm' へ保存完了 [249282/249282]
  • dstatのrpmをインストール。
 $sudo rpm -ihv dstat-0.7.2-1.el5.rfx.noarch.rpm
 準備中...                ########################################### [100%]
   1:dstat                  ########################################### [100%]
  • インストールされているパスを確認。
 $ which dstat
 /usr/bin/dstat 
 $sudo vi /etc/bashrc 
エイリアスはオプションを以下の内容で追記。
 if [ -x /usr/bin/dstat ]; then
   alias dstat-full='dstat -Tclmdrn'
   alias dstat-mem='dstat -Tclm'
   alias dstat-cpu='dstat -Tclr'
   alias dstat-net='dstat -Tclnd'
   alias dstat-disk='dstat -Tcldr'
 fi
  • ログインしなおして dstatコマンドを実行。
 $dstat-full
 --epoch--- ----total-cpu-usage---- ---load-avg--- ------memory-usage----- -dsk/total- --io/total- -net/total-
   epoch   |usr sys idl wai hiq siq| 1m   5m  15m | used  buff  cach  free| read  writ| read  writ| recv  send
 1330652945|  2   1  97   1   0   0|0.02 0.04 0.02| 601M  127M 1310M 9.94M| 110k  682k|4.81  67.0 |   0     0
 1330652946|  0   0 100   0   0   0|0.02 0.04 0.02| 601M  127M 1310M 9.94M|   0     0 |   0     0 | 132B 1284B
 1330652947|  0   0  99   1   0   0|0.02 0.04 0.02| 601M  127M 1310M 9.94M|   0  3224k|   0   542 |1017B 1222B
 1330652948|  1   0  99   0   0   0|0.02 0.04 0.02| 602M  127M 1310M 9556k|   0  2896k|   0   346 | 217B  672B
 1330652949|  0   0 100   0   0   0|0.02 0.04 0.02| 602M  127M 1310M 9556k|   0     0 |   0     0 | 130B  482B
  :

PHPのソース解析用の便利な検証ツール導入

概要

PHPでの開発は行なっているけどソースの品質を向上させるためのアプローチがけっこう停滞している。

unoh.github.com by unohを参考にさせてもらって
そのためのソースに対して解析を行えるツールを試しに利用してみる。

環境

試した環境は、さくらのVPSで
OSは、CentOS v5.5。
phpは、v5.3.8。
Apacheは、 v2.2.21。

導入してみたツール

phpcpd

sebastianbergmann/phpcpd · GitHub
コードの中でコピー&ペーストで記述されている部分の検出してくれるツール。

phpdcd

sebastianbergmann/phpdcd · GitHub
どこからもコールされていないファンクションが無いかをチェックするためのツール

phploc

sebastianbergmann/phploc · GitHub
phpのファイル構成を調べてくれるツール

phpmd

PHPMD - PHP Mess Detector
バグの可能性になりそうなコード、最適化できそうなコード、複雑すぎる記述になっているコード、使われていないファンクション・パラメータ、を検出してくれるツール。Jenkinsのpluginとしても動作できる。(Javafindbugsのような位置付け)

インストール方法・実行方法などなど

  • phpcpd

さっそくインストールしてみる。インストール方法はPEAR経由で簡単にできる。


[naoki@www22404u ~]$ php -v
PHP 5.3.8 (cli) (built: Sep 30 2011 20:07:13)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
with Xdebug v2.1.1, Copyright (c) 2002-2011, by Derick Rethans

[naoki@www22404u ~]$ sudo pear config-set auto_discover 1
config-set succeeded

[naoki@www22404u ~]$ sudo pear install pear.phpunit.de/phpcpd
Attempting to discover channel "pear.phpunit.de"...
downloading channel.xml ...
Starting to download channel.xml (804 bytes)
....done: 804 bytes
Auto-discovered channel "pear.phpunit.de", alias "phpunit", adding to registry
Attempting to discover channel "components.ez.no"...
downloading channel.xml ...
Starting to download channel.xml (591 bytes)
...done: 591 bytes
Auto-discovered channel "components.ez.no", alias "ezc", adding to registry
phpunit/phpcpd requires PEAR Installer (version >= 1.9.4), installed version is 1.9.2
downloading File_Iterator-1.3.1.tgz ...
Starting to download File_Iterator-1.3.1.tgz (5,157 bytes)
...done: 5,157 bytes
downloading PHP_Timer-1.0.2.tgz ...
Starting to download PHP_Timer-1.0.2.tgz (3,686 bytes)
...done: 3,686 bytes
downloading ConsoleTools-1.6.1.tgz ...
Starting to download ConsoleTools-1.6.1.tgz (869,994 bytes)
...done: 869,994 bytes
downloading Base-1.8.tgz ...
Starting to download Base-1.8.tgz (236,357 bytes)
...done: 236,357 bytes
install ok: channel://pear.phpunit.de/File_Iterator-1.3.1
install ok: channel://pear.phpunit.de/PHP_Timer-1.0.2
install ok: channel://components.ez.no/Base-1.8
install ok: channel://components.ez.no/ConsoleTools-1.6.1

pear のバージョンがv1.9.4より古かったので、pear自体のupgradeを実施。


[naoki@www22404u ~]$ sudo pear upgrade pear
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
downloading PEAR-1.9.4.tgz ...
Starting to download PEAR-1.9.4.tgz (296,332 bytes)
.............................................................done: 296,332 bytes
downloading Archive_Tar-1.3.8.tgz ...
Starting to download Archive_Tar-1.3.8.tgz (17,995 bytes)
...done: 17,995 bytes
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.8
upgrade ok: channel://pear.php.net/PEAR-1.9.4
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
PEAR: To install optional features use "pear install pear/PEAR#featurename"

[naoki@www22404u ~]$ sudo pear config-set auto_discover 1
config-set succeeded

[naoki@www22404u ~]$ sudo pear install pear.phpunit.de/phpcpd
downloading phpcpd-1.3.5.tgz ...
Starting to download phpcpd-1.3.5.tgz (8,746 bytes)
.....done: 8,746 bytes
install ok: channel://pear.phpunit.de/phpcpd-1.3.5 ※今度は、phpcpd v1.3.5のインストールできた。

利用方法は phpcpd [directory/path]。
今回は、index.phpという全く同じ記述をしたソースファイルを、index_cp.phpとして用意した。


[naoki@www22404u php_sandbox]$ ll /home/naoki/src/php_sandbox/
-rw-rw-r-- 1 naoki naoki 3599 11月 27 04:24 index.php
-rw-rw-r-- 1 naoki naoki 3599 2月 5 14:29 index_cp.php

[naoki@www22404u php_sandbox]$ phpcpd /home/naoki/src/php_sandbox/
phpcpd 1.3.5 by Sebastian Bergmann.

Found 1 exact clones with 15 duplicated lines in 2 files:

- /index.php:67-82
/index_cp.php:67-82

3.62% duplicated lines out of 414 total lines of code.

Time: 0 seconds, Memory: 2.50Mb

  • phpdcd

インストール方法はpear経由。


[naoki@www22404u ~]$ sudo pear config-set auto_discover 1
config-set succeeded

[naoki@www22404u ~]$ sudo pear install pear.phpunit.de/phpdcd
Failed to download phpunit/phpdcd within preferred state "stable", latest release is version 0.9.3, stability "beta", use "channel://pear.phpunit.de/phpdcd-0.9.3" to install
install failed


最新だとstableじゃないからダメだって。stable版のv.0.9.3を利用してみる。


[naoki@www22404u ~]$ sudo pear install pear.phpunit.de/phpdcd-0.9.3
downloading phpdcd-0.9.3.tgz ...
Starting to download phpdcd-0.9.3.tgz (5,827 bytes)
.....done: 5,827 bytes
downloading PHP_TokenStream-1.1.2.tgz ...
Starting to download PHP_TokenStream-1.1.2.tgz (9,797 bytes)
...done: 9,797 bytes
install ok: channel://pear.phpunit.de/PHP_TokenStream-1.1.2
install ok: channel://pear.phpunit.de/phpdcd-0.9.3

これで準備完了。

利用方法は、第1引数に対象のソースがおいてあるディレクトリを指定してあげるだけ。
実行結果はこんな感じ。isIncluderメソッドがどこからもコールされていないことが分かる。


[naoki@www22404u ~]$ ll /home/naoki/src/php_sandbox/
-rw-rw-r-- 1 naoki naoki 1239 11月 27 04:24 geoIndex.php
-rw-rw-r-- 1 naoki naoki 2375 11月 27 04:24 geoSample2.php
-rw-rw-r-- 1 naoki naoki 691 11月 27 04:24 googleMaps.php
-rw-rw-r-- 1 naoki naoki 3599 11月 27 04:24 index.php
-rw-rw-r-- 1 naoki naoki 3599 2月 5 14:29 index_cp.php
-rw-rw-r-- 1 naoki naoki 609 10月 29 17:20 test.php
-rw-rw-r-- 1 naoki naoki 1857 11月 27 04:24 tweet.php

[naoki@www22404u ~]$ phpdcd /home/naoki/src/php_sandbox/
phpdcd 0.9.3 by Sebastian Bergmann.

- isIncludedUrl()
declared in /tweet.php:53

Time: 0 seconds, Memory: 4.50Mb

  • phploc

インストールはpear経由で。ほんと簡単。


[naoki@www22404u ~]$ sudo pear config-set auto_discover 1
config-set succeeded

[naoki@www22404u ~]$ sudo pear install pear.phpunit.de/phploc
phpunit/phploc can optionally use PHP extension "bytekit"
downloading phploc-1.6.4.tgz ...
Starting to download phploc-1.6.4.tgz (8,481 bytes)
.....done: 8,481 bytes
install ok: channel://pear.phpunit.de/phploc-1.6.4


実行方法は、上のツールと同じ。
実行すると、php内部の構成が解析されて数値として確認することができる。

[naoki@www22404u ~]$ ll /home/naoki/src/php_sandbox/
-rw-rw-r-- 1 naoki naoki 1239 11月 27 04:24 geoIndex.php
-rw-rw-r-- 1 naoki naoki 2375 11月 27 04:24 geoSample2.php
-rw-rw-r-- 1 naoki naoki 691 11月 27 04:24 googleMaps.php
-rw-rw-r-- 1 naoki naoki 3599 11月 27 04:24 index.php
-rw-rw-r-- 1 naoki naoki 3599 2月 5 14:29 index_cp.php
-rw-rw-r-- 1 naoki naoki 609 10月 29 17:20 test.php
-rw-rw-r-- 1 naoki naoki 1857 11月 27 04:24 tweet.php

[naoki@www22404u ~]$ phploc /home/naoki/src/php_sandbox/
phploc 1.6.4 by Sebastian Bergmann.

Lines of Code (LOC): 414
Cyclomatic Complexity / Lines of Code: 0.04
Comment Lines of Code (CLOC): 4
Non-Comment Lines of Code (NCLOC): 410

Namespaces: 0
Interfaces: 0
Classes: 1
Abstract: 0 (0.00%)
Concrete: 1 (100.00%)
Average Class Length (NCLOC): 33
Methods: 2
Scope:
Non-Static: 2 (100.00%)
Static: 0 (0.00%)
Visibility:
Public: 1 (50.00%)
Non-Public: 1 (50.00%)
Average Method Length (NCLOC): 16
Cyclomatic Complexity / Number of Methods: 3.50

Anonymous Functions: 0
Functions: 3

Constants: 0
Global constants: 0
Class constants: 0

  • phpmd

インストールは、pear経由でこれもOK。


[naoki@www22404u ~]$ sudo pear channel-discover pear.phpmd.org
Adding Channel "pear.phpmd.org" succeeded
Discovery of channel "pear.phpmd.org" succeeded

[naoki@www22404u ~]$ sudo pear channel-discover pear.pdepend.org
Adding Channel "pear.pdepend.org" succeeded
Discovery of channel "pear.pdepend.org" succeeded

[naoki@www22404u ~]$ sudo pear install --alldeps phpmd/PHP_PMD
downloading PHP_PMD-1.3.0.tgz ...
Starting to download PHP_PMD-1.3.0.tgz (45,722 bytes)
.............done: 45,722 bytes
downloading PHP_Depend-1.0.0.tgz ...
Starting to download PHP_Depend-1.0.0.tgz (180,666 bytes)
...done: 180,666 bytes
downloading imagick-3.0.1.tgz ...
Starting to download imagick-3.0.1.tgz (93,920 bytes)
...done: 93,920 bytes
install ok: channel://pear.pdepend.org/PHP_Depend-1.0.0
13 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
Please provide the prefix of Imagemagick installation [autodetect] : y
building in /var/tmp/pear-build-rootIOlddC/imagick-3.0.1
running: /var/tmp/imagick/configure --with-imagick=y
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ANSI C... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-redhat-linux-gnu
checking host system type... x86_64-redhat-linux-gnu
checking target system type... x86_64-redhat-linux-gnu
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib
checking for PHP extension directory... /usr/lib64/php/modules
checking for PHP installed headers prefix... /usr/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking whether to enable the imagick extension... yes, shared
checking whether to enable the imagick GraphicsMagick backend... no
checking ImageMagick MagickWand API configuration program... configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
ERROR: `/var/tmp/imagick/configure --with-imagick=y' failed
install ok: channel://pear.phpmd.org/PHP_PMD-1.3.0


早速、実行してみる。実行方法は、
> phpmd [filename|directory] [report format] [ruleset file], i.e:

ルールセットは、カスタマイズ可能だが、今回はもともと用意されてあるルールセットで
解析を実行してみた。codesize, unusedcode,namingを指定。
まずはtext形式で実行してみる。


[naoki@www22404u ~]$ phpmd /home/naoki/src/php_sandbox/ text codesize,unusedcode,naming

/home/naoki/src/php_sandbox/geoIndex.php:33 Avoid variables with short names like $i. Configured minimum length is 3.


実行結果としては、変数$iが短すぎるよって解析結果が、text形式かxml形式で出力される。
結構効率よく、コードの静的な解析ができて便利!!
xml形式に指定も可能。

[naoki@www22404u ~]$ phpmd /home/naoki/src/php_sandbox/ xml codesize,unusedcode,naming




Avoid variables with short names like $i. Configured minimum length is 3.

まとめ

これらのツールを活用してコードの中身をもっと、リファクタリングしていったり、
品質あげるアプローチをしていきたいと思う。
phpunitについては、まだ未導入であるため、今度はphpunitを利用してあわせて
リファクタリング・TDDの導入をやっていきたいところ。

はてなブログ、始めました!

はてなブログ、キター!タイマンはらせてもらうぜ!

・・ってちがいますね・・・。

 

このリニューアルしたはてなブログを利用することをいい機会だと捉えて、

改めて、技術ネタのアウトプット場所として、ブログ書く習慣を復活させると、

ここに誓います!!

 

性能・負荷を把握するためのコマンドについて

Linuxで性能・負荷を把握するための方法を覚えたいなと思って、まずはそのためにもボトルネックを見極める作業をベースに性の方法とそのためのコマンドを整理しておきたい、と思ったので書いておく。

ボトルネック見極め作業の基本的な流れ

ロードアベレージを見る

CPU、I/Oのいずれがボトルネックかを探る

  • ロードアベレージが高い場合、CPU、I/Oのどちらかに原因があるかを探る。
  • sar, vmstatを利用することで、時間経過とCPU使用率やI/O待ち率の推移を確認することができる。この結果を参考にして、CPU、I/Oの当たりを付ける。

CPU負荷が高い場合

  • ユーザプログラム、システムプログラム、なんの処理がボトルネックの原因かをtop,sarを利用して見極める。
  • psを利用して、確認できるプロセスの状態やCPU使用時間などを見ながら、原因となっているプロセスを特定する。
  • プロセスの特定後、より詳細を調査したい場合は、starceでのトレース、oprofileでのプロファイリング、などを行い、ボトルネック箇所を絞り込む。
  • ディスクやメモリ容量などその他の部分がボトルネックとなっていないにもかかわらず、スループットが上がらない場合は、サーバ増設やプログラムのロジックやアルゴリズムの改修で対応。
  • プログラムが暴走してCPUに必要以上の負荷がかかってしまっている場合は、発生している不具合を取り除く。

I/O負荷が高い場合

  • たいてい、プログラムからの入出力が多くて負荷が高いか、スワップが発生してディスクアクセスが発生しているのか、が原因。そのため、sar,vmstatを利用して、スワップの発生状況を確認して問題を切り分ける。
  • psを利用して特定のプロセスが極端にメモリを消費していないかを確認する。
  • プログラムの不具合でメモリを使い過ぎている場合は、プログラムを改善する。
  • 搭載メモリが不足している場合は、メモリ増設(スケールアップ)で対応する。メモリが増設できない場合は、分散を検討する。
  • メモリ増設でキャッシュ領域を拡大できる場合、メモリを増設する。
  • メモリ増設で対応できない場合、データの分散やキャッシュサーバの導入等を検討する。また、プログラムの改修によるI/O頻度の軽減を検討する。

性能、負荷計測に利用するコマンド(OS)

top
ある瞬間のOSの状態のスナップショットを表示する。


ps
ps(Report Process Status)は、プロセスが持つ情報を出力するツール。
よく使うpsコマンドの例。

$ ps aux | sort -nr -k2 | head -5 #CPU使用率の高い順5件を表示
$ ps aux | sort -nr -k3 | head -5 #Memory使用率の高い順5件を表示


sar
sar(System Activity Reporter)は、OSが報告する各種指標を参照するツール。
2つの用途がある。

  • 過去の統計データにさかのぼってアクセスする(デフォルト)
  • 現在のデータを周期的に確認する

sarが利用出来るように、sysstatパッケージに含まれているため、sysstatパッケージをインストール。

$ sudo yum install sysstat

よく使うsarのオプションとその内容。

コマンド・オプション 内容
sar -u CPU使用率を見る
sar -q ロードアベレージを見る
sar -r メモリの利用状況を見る
sar -W スワップ発生状況を見る


vmstat
vmstat(Report Virtual Memory Statistics)は、仮想メモリ関連情報を参照するツール。

参考書籍

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

DevLOVE Beautiful Development( #devlove, #devlove0409, #DDDjp ) に参加しました。

2011/4/9(土)にオラクル@青山センターにて、DevLOVE Beautiful Developmentに参加してきた。なにげにDevLOVEは、初めての参加。

このイベントは、JavaEE勉強会所属のid:digitalsoulさんが翻訳を行ったDDD本が出版されて、QCONの前夜祭というの位置づけの認識。定員は90名。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

アジェンダは、こんな感じ。

  • 13:00-13:30 オープニング
    • 和智右桂 氏, papanda 氏
  • 13:40-14:20 第一枠
    • 陽の巻 都元ダイスケ 氏
    • 陰の巻 じゅんいち☆かとう 氏
  • 14:30-15:10 第二枠
    • 陽の巻 渡邉健太郎 氏
    • 陰の巻 角田直行 氏
  • 15:10-15:40 長休憩
  • 15:40-16:20 第三枠
    • 陽の巻 和田卓人 氏
    • 陰の巻 綿引琢磨 氏
  • 16:30-17:10 第四枠
    • 陽の巻 増田亨 氏
    • 陰の巻 佐藤匡剛 氏
  • 17:20-18:10 キーノート
    • 和智右桂 氏
  • 18:30-20:30 ビアバッシュ


自分はいちおうJavaEE勉強会所属の身と自負していて、発表される方々は、ほとんどJavaEE勉強会に参加したことのある人達だったので、これは自分も行くしかないと思い、参加してみた。DDDについて、陽と陰と2コマで分けられていて、初めての人は陽へ、初めてでなく裏話とか聞きたい人は陰へ、ということでした。


自分は、陰にしか参加しないということをやったら、どうやら全て陰にしか参加しないということをする人はほとんどいなかった。 まあ全然気にしてはいないw


感想は、参加費が無料だというのに、面白い内容の発表ばかりで充実していた。参加してよかったと思う。


本題のQCONには残念なことに参加することはできないが、これを機にDDDの敷居が下がるようなきっかけになったらいいなーって思えた。こういう前を向いたエンジニアの人たちと触れ合えるってのは、ほんとに良い!!

symfonyを使ってみる

symfonyの学習

PHPを勉強するにあたり、なにかしらのフレームワークを利用してみたいという気持ちが
強かったので、symfonyを勉強しようと思った。ということでまずは環境の構築をせねば
と、そのときの覚書を残しておく。


Webで調べながらだと個人的には体系的にサクサク進めないかなー、と思い、
以下の書籍を利用してみた。環境は、さくらのVPSの環境(CentOS 5.5)で。
symfony 1.4によるWebアプリケーション開発―オープンソース徹底活用

symfonyの関連ソフトのインストール

symfonyのインストールにあたり必要なソフトをインストールする。

$ yum install --enablerepo="remi" php php-pear php-devel php-pdo php-xml
php-mbstring php-process php-pecl-apc mysql-server subversion
$ chkconfig httpd on
$ chkconfig mysqld on
$ /etc/init.d/mysqld restart
$ /etc/init.d/httpd restart


ソフトの動作確認として以下の作業を実施した。

  • PHPのバージョン確認
  • mod_rewriteが有効になっているかの確認
  • AllowOverrideが有効になっているかの確認
  • APCが有効になっているかの確認


php.ini に以下の内容を追記。デフォルトタイムゾーンを設定しないため、
Warningが発生してしまっていたため。

date.timezone = Asia/Tokyo

symfonyインストール

  • サンドボックスパッケージからsymfonyのインストールを行った。

インストール方法は、これ以外にリリースパッケージ、subversionリポジトリ、からの
インストールを行うことができる。

$ cd /var/www/html
$ wget http://www.symfony-project.org/get/sf_sandbox_1_4.tgz
$ tar zxvf sf_sandbox_1_4.tgz
$ mv sf_sandbox_1_4 sf14
$ rm sf_sandbox_1_4.tgz
  • インストール後の動作確認
$ cd /var/www/html/sf14
$ php symfony -V
symfony version 1.4.11 (/var/www/html/sf14/lib/vendor/symfony/lib)
  • .htaccesの編集

/var/www/html/sf14/webディレクトリにある.htaccessに以下のような修正を行う。

RewtireBase /sf14/web/
  • sfディレクトリをコピー

雛形として作成されるサイトの画像などを適切に表示するためにシンボリックリンクを作成する。

$ ln -s /var/www/html/sf14/lib/vendor/symfony/data/web/sf /var/www/html/sf14/web
  • symfonyのインストール後の動作確認

http://(DomainName)/sf14/web/frontend_dev.php
にアクセスすると「Symfony Project Created」が表示されれば
インストール成功。

localhostからではなく、リモートでアクセスする場合は、
frontend_dev.phpの記述でリモートアクセスを禁止している
記述があるため、その箇所をコメントアウトする必要がある。

//if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1')))
//{
//  die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
//}

さあ、これで環境が整ったので、symfony使ったアプリ作りをやってみるか。

CentOSでPHP開発環境の設定

Xdebugのインストール

$ sudo pecl install xdebug

設定ファイルの作成。

最後にiniに以下のように書く、zend_extension。

extension=xdebug.so

Config File Scan Dir に xdebug.ini ファイルを作成する。

/etc/php.d/xdebug.ini

に、以下の内容を記述する。

zend_extension=/usr/lib64/php/modules/xdebug.so

なおzend_extensionには絶対パスを書かなければいけないので、
分からない場合は pear config-show のext_dirを確認して、
絶対パスを/usr/lib64/php/modulesとした。

pearのconfig-showで設定内容を確認した。

$ pear config-show
:
: