openSUSEなど、LinuxでPHPプロファイラーBlackfireを使う
MacOS、Debin/Ubuntu、RedHat/Fedora/CentOSであれば、Getting Startedページの説明通りに行えば、インストールは簡単に完了できます。
それ以外のLinuxディストリビューションで、blackfire.ioのPHPプロファイラーを使用したい時の、インストールを解説します。なお、2014年12月20日現在ベータ状態のサービスですので、内容が変更されるかも知れません。
なお、インストールする前にBlackfire.ioのサイトへログインしておいてください。ログインすることで、必要なAPIの認証情報がページに表示されます。
Agentのインストール
Agent(エージェント)は、収集したプロファイル結果をblackfire.ioに送信する役目を持つサービス(サーバー)です。最初にこれをインストールします。
Getting Startedページの"Installation"セクションで、"Manual Installation"タブを選択してください。
続いて、その下のセクション、"Installing the Agent"で、OSとプラットフォームの選択になります。OSでは、"Linux Binary"、プラットフォームでは64bitのOSであれば"x64"、32bitのOSであれば"i368"を選びます。
続いて"Download"ボタンでAgentをダウンロードするか、表示されるURLを指定し、wgetで取得しましょう。
取得したファイルをblackfire-agent
にリネームし、/usr/local/bin
か/usr/bin
に移動します。(Rootユーザー権限が必要でしょう。sudoで実行してください。)確実にコマンドに実行権限を付けてください。例えば次のようになります。
sudo chmod a+x /usr/bin/blackfire-agent
続いてAgentの設定ファイルを作成します。パスは/etc/blackfire/agent
です。
[blackfire] ; ; setting: ca-cert ; desc : Sets the PEM encoded certicates ; default: ca-cert= ; ; setting: collector ; desc : Sets the URL of Blackfire's data collector ; default: https://blackfire.io collector=https://blackfire.io ; ; setting: log-file ; desc : Sets the path of the log file. Use stderr to log to stderr ; default: stderr log-file=stderr ; ; setting: log-level ; desc : log verbosity level (4: debug, 3: info, 2: warning, 1: error) ; default: 1 log-level=1 ; ; setting: server-id ; desc : Sets the server id used to authenticate with Blackfire API ; default: server-id= ; ; setting: server-token ; desc : Sets the server token used to authenticate with Blackfire API. It is unsafe to set this from the command line ; default: server-token= ; ; setting: socket ; desc : Sets the socket the agent should read traces from. Possible value can be a unix socket or a TCP address. ie: unix:///var/run/blackfire/agent.sock or tcp://127.0.0.1:8307 ; default: unix:///usr/local/var/run/blackfire-agent.sock socket=unix:///var/run/blackfire/agent.sock ; ; setting: spec ; desc : Sets the path to the json specifications file ; default: spec=
socket
項目にはunixソケットのパスを指定します。ディストリビューションにより、作成するディレクトリーが通常決まっていますので、自分のLinuxの場合どこになるのか調べてください。openSUSEの場合は、"/var/run"になります。今回指定したblackfireサブディレクトリーは存在していませんので、作成する必要があります。(sudo mkdir -p /var/run/blackfire
)
次にAgentを実行し、認証コードを設定します。ログインしている場合、Getting Startedページにキーが表示されています。ログインしていない場合は予め、https://blackfire.io/account/credentialsページにアクセスし、ログインし、コードを表示しておきましょう。
キーを登録します。
blackfire-agent -register
"Server ID"と"Server Token"を入力します。(Clientの認証コードと間違えないでください。)
次に、このAgentをサービスとして登録するほうが良いとGetting Startedページには書かれていますが、プロファイルが必要なときに"sudo blackfire-agent"で起動できますので、飛ばします。(サーバーとして動作しますので、制御は戻ってきません。必要であれば最後に"&"をつけ、バックグラウンドで実行するか、説明通りにサービスとして登録しましょう。)
これでAgentの登録は終了です。続いて、コマンドラインツールをインストールします。
Clientをインストールする
コマンドラインツールは、Client(クライアント)と名付けられています。Getting Startedページの、"Installing the Client"を見てください。
Agentと同じ内容が指定されています。"Download"ボタンか、Wgetで表示されているURLから、Clientをダウンロードしてください。
ダウンロード済みのファイルは、"blackfire"に名前を変更し、/usr/bin
か/usr/local/bin
へ移動します。実行権限を忘れずに付けてください。
続いて、このツールのAPIキーを指定します。https://blackfire.io/account/credentials#clientページを表示してください。Clientへ指定するIDとトークンが表示されます。
以下のコマンドを実行すると、IDとトークンを尋ねられます。上記のページで表示された値を指定してください。
blackfire configure
Probeをインストールする
Probe(プローブ)は、プロファイルを取るためのPHP拡張です。いわば、本体の部分です。PHPの拡張モジュールのインストールを行います。
Getting Startedページの"Installing the Probe"セクションをご覧ください。OSとプラットフォームに加え、PHPのバージョンを指定するようになっています。自分の使用している環境にインストールしてあるPHPのバージョンを指定します。
続いて"Download"ボタンか、表示されているURLからwgetでファイルを取得し、名前をblackfire.so
に変更します。
これを保存するパスは、Linuxディストリビューションにより異なります。以下の方法で表示されるディレクトリーパスをコピーしておきます。
php -i | grep 'extension_dir'
上記のディレクトリーへblackfire.so
を移動します。openSUSEの場合、パスは"/usr/lib64/php5/extensions"になります。
sudo mv blackfire.so /usr/lib64/php5/extensions
続いて、PHPの設定で上記の拡張を有効にします。動作環境のphp.iniファイルに直接記述するか、設定ファイルが拡張ごとにわけられているLinuxディストリビューションであれば、適当なディレクトリーに設定ファイルを新しく作成します。openSUSEの場合は、"/etc/php5/conf.d/"ディレクトリーが拡張の設定ファイルのディレクトリーですから、"/etc/php5/conf.d/blackfire.ini"ファイルを新しく作成します。
[blackfire] extension="/usr/lib64/php5/extensions/blackfire.so" blackfire.agent_socket = unix:///var/run/blackfire/agent.sock blackfire.agent_timeout = 0.25 ;blackfire.log_level = 1 ; Log file on Linux systems ;blackfire.log_file = /tmp/blackfire.log ;blackfire.server_id = ;blackfire.server_token =
"extension"項目には、移動先のsoファイルを指定します。"blackfire.agent_socket"項目には、"/etc/blackfire/agent"ファイルに指定したLinuxソケットのパスを指定します。サーバーのIDとトークンの項目が存在していますが、指定しなくても動作するようです。
これで、新しいPHP拡張が準備出来ましたので、Apache2を再起動するか、もしくはPHP-FPMを再起動し、有効にしましょう。
注意:blackfileのプロファイラーは、xDebugやXHProfとコンフリクトを起こす可能性があるため、同時には使用できません。
最後に、Google Chromeに拡張機能をインストールします。
Companionのインストール
これで、Agentが起動していれば、Clientツールを使用し、コマンドラインからプロファイルを実行し、blackfire.ioのサイトで結果を調べられます。(参照:https://blackfire.io/doc/web-services)
ですが、Chromeが使用可能であれば、拡張をインストールすることで、表示しているページのプロファイラーをワンタッチで表示できます。
Chromeでhttps://blackfire.io/doc/web-pageにアクセスしてください。未インストールであれば、"Install the Companion"ボタンが表示されます。クリックしてください。
サイトにログイン状態であれば、インストールはすぐに終わり、右上に新しいボタンが追加されます。blackfire.ioへログインしていないと、インストールに失敗します。ログインしてから、インストールボタンをクリックしましょう。
あとは、自分の環境のPHPで生成されているページを表示しておき、そのボタンをクリックし、項目を指定すれば、プロファイルされ、表示ボタンクリックで結果がわかります。
くれぐれも、Agentを起動しておくのをお忘れなく。