ほとんどの PHP エージェントの設定変数 は、ディレクトリごとに設定することができます。このオプションは、一台のウェブサーバーで複数のアプリケーションを提供していて、 アプリケーションごとに設定(例えばアプリ名)を調整したい場合によく使われます。
ディレクトリごとの値を設定するプロセスは、環境によって異なります。このドキュメントでは、最も一般的な3つの環境について説明します。
その他のアプリの名前の付け方については、 Name your PHP application を参照してください。
PHPのためのApacheのディレクトリ毎の設定
PHPモジュールを使用する場合、ApacheはINIファイルの外でPHP変数を設定するための2つのメカニズムを提供します。
ウェブサーバーが複数のドメインを提供している場合は、INIファイルの例にある構文を使用してください。New Relic でこれらのドメインをそれぞれ個別に表示するには、次のようにします。
メインドメインの場合、グローバルINIファイルにnewrelic.appname = "My Main Domain"
を設定します。
仮想ホスト構成の一部としてphp_value
エントリを追加して、各仮想ホストの値を上書きします。
重要
PHPのインストールに適切なモジュール名を使用していることを確認してください。以下の例のPHP_MODULE
は、インストールされているPHP5モジュールの名前に置き換えてください。この名前は、使用されているLinuxおよび/またはPHPディストリビューションによって異なります。たとえば、一般名にはphp5_module
、 mod_php5
、 php_module
などがあります。大文字と小文字は異なる場合があります。
Apache サーバの場合、以下のいずれかの方法でモジュール名を見つけることができます。それぞれ、インストールされているモジュールのリストが生成されます。
コマンドラインから、以下を実行してください。
$apachectl -t -D DUMP_MODULES
OR
ウェブページ内では
print_r(apache_get_modules());
以下はドメインを分割する例です。ここで、 PHP_MODULE
は PHP5 モジュールの名前です。
<VirtualHost 192.168.42.43>
ServerName www.myvhost1.com
DocumentRoot "/path/to/vhost1/"
php_value newrelic.appname "Virtual Host 1"
<VirtualHost 192.168.123.45>
ServerName www.myvhost2.com
DocumentRoot "/path/to/vhost2/"
php_value newrelic.appname "Virtual Host 2"
上記の例では、 newrelic.appname
は仮想ホストごとに異なる値に設定されています。
文字列と数値の値には、 php_value name VALUE
を使用します。ここで:
name
PHP INI設定にリストされているように、変更するINI設定の名前です。
VALUE
その特定の仮想ホストに設定する値です。
文字列値は必ず引用符"
で囲んでください。
ブール設定を変更する場合は、構文php_flag name VALUE
を使用します。ここで、 name
はPHP INI設定にリストされている変数名であり、 VALUE
はon
またはoff
のいずれかです。
バーチャルホストのNew Relicエージェントを完全に無効にするには、ブーリアンフラグを使用します。
<VirtualHost 192.168.56.78>
ServerName www.myvhost3.com
DocumentRoot "/path/to/vhost3/"
php_flag newrelic.enabled off
.htaccess
ファイル内のINIファイルの例の構文を使用します。例えば:
php_value newrelic.appname "My Blog App"
これにより、ディレクトリ単位での設定をディレクトリ内から制御することができます。
この例では、Webサーバーのドキュメントルートは/data/webroot
です。また、特殊なアプリケーション用に2つのサブディレクトリがあります。
サイトの3つの部分がNew RelicのUI上で別々のアプリケーションとして報告されるようにするためです。
- INIファイルにメインアプリケーションの名前を設定します。
- 各専用ディレクトリの
.htaccess
ファイルを使用してその名前を上書きします。
特定の.htaccess
ファイルを持たないWebサーバーの部分(たとえば、 /data/webroot/something
)は、INIファイルで定義されたグローバルアプリケーション名を使用します。
重要
.htaccess
ファイルは、そのアプリケーションの最上位ディレクトリにある必要があります。そのディレクトリまたはそのサブディレクトリ内のオブジェクトは、 .htaccess
ファイルで指定された値を使用します。
.htaccess
ファイルの使用とセキュリティ保護の詳細については、 Apache HTTP サーバー チュートリアルを参照してください。
PHP-FPMのディレクトリ毎の設定
FastCGI プロセス マネージャー ( PHP-FPM ) は PHP 専用です。 リクエストを待機するワーカー プロセスをいくつか生成します。 呼び出しごとに PHP エンジンを再初期化しないため、各プロセスがリサイクル前に複数のリクエストを処理できるため、パフォーマンスが向上します。
PHP-FPM についての詳細は、 PHP-FPM の about page および FastCGI Process Manager on php.net を参照してください。
PHP-FPM を使用する場合、INI ファイルの外部で PHP 変数を設定するためのメカニズムが 2 つと、 NGINX用の特別なテクニックが 1 つあります。
重要
PHP-FPMを使用すると、ディレクトリごとに変数を変更するのが難しくなる可能性があります。 仮想ホストまたは固有のアプリケーションごとに 1 つずつ、複数の PHP-FPM プールを使用する必要があります。
poolは、そのプールのリクエストのみを処理する専用のワーカーの子セットです。 PHP-FPM は専用のワーカー子プロセスを必要とするため、個別のオプションを設定する必要がある仮想ホストまたはアプリケーションの数が多すぎると、スケーリングが不十分になります。
PHP-FPMをディレクトリごとに設定するには、次のようにします。
INIファイルにメインアプリケーション名を設定する。
追加した2つのアプリケーション用に2つのプールを設定します。
これらのプールでアプリケーション名の設定を上書きします。
各プールには固有の接続メカニズムが必要です(Webサーバー構成ファイルで使用するプールを識別できるようにするため)。 php-fpm.conf
の例を次に示します。
listen=/tmp/pool-app1.sock
php_value[newrelic.appname] = "My App 1"
listen=/tmp/pool-app2.sock
php_value[newrelic.appname] = "My App 2"
listen=/tmp/pool-app3.sock
php_flag[newrelic.enabled] = off
プールごとの変数設定の一般的な形式は、文字列変数または数値変数の場合はphp_value[name] = VALUE
、ブール値の場合はphp_flag[name] = VALUE
です。文字列値は常に引用符で囲みます"
。ブール値はon
またはoff
のいずれかでなければなりません。
設定ファイルをセットアップしたら、Webサイトのさまざまな部分に異なるプールを使用するようにWebサーバーに指示する必要があります。詳細については、お使いのWebサーバーのドキュメントを参照してください。
.user.ini
ファイルのCGI/FastCGIのINIファイルの例の構文を使用できます。これはApacheの.htaccess
ファイルに似ていますが、PHP-FPMに固有のものです。 PHPが実行されるディレクトリで.user.ini
ファイルがスキャンされます。この機能の詳細については、 PHP user.ini
ファイルのドキュメントを参照してください。
以下の手順でアプリの名前を変更します。 Webページのルートディレクトリで
.user.ini
ファイルを作成します
変更したい設定を追加します
newrelic.appname = "New Appname"
ファイルを保存します。
デフォルトでは、 .user.ini
fileは5分ごとに読み取られるため、再起動は必要ありません。
これは以下のような場面で有効です。
サーバー構成が機能しません。 NGINX / PHP-FPMセットアップでは、FastCGIとPHPの間の通信、およびからの情報が不足している可能性があります
fastcgi_param PHP_VALUE newrelic.appname="Appname"
PHPに到達することはありません。
PHPがsuPHPで実装されている場合など、 .htaccess
は機能しません
重要
このセクションは、PHP 5.3.3 以降にのみ適用されます。
ここでは、NGINX のロケーションに基づいて FastCGI マネージャに値を渡す一般的な手順を示す NGINX コンフィグファイルの小さな断片を紹介します。
fastcgi_param PHP_VALUE "newrelic.appname=My Blog";
fastcgi_param PHP_VALUE "newrelic.appname=Shopping Cart";
fastcgi_param PHP_VALUE "newrelic.enabled=false";
もう一つの選択肢APIコール
グローバルまたはディレクトリごとのINI設定でアプリケーション名を変更することをお勧めしますが、それが不可能な場合もあります。たとえば、プロバイダーの制限により、構成ファイルを変更できない場合があります。
もう1つのオプションは、 newrelic_set_appname()
API呼び出しを使用することです。 APIを使用して変更できるその他の設定については、 PHPエージェントAPIを参照してください。
開始する前に、 newrelic_set_appname()
のAPI呼び出しガイドラインを読んで、アプリケーション名に割り当てられたトランザクショントレースを最も完全にキャプチャすることをお勧めします。
アプリケーションのコードにアクセスできない場合、または他の理由でアプリケーションを独自の仮想ホストに分離する必要がある場合は、次のディレクトリごとの設定を使用して、構成ファイルの設定を上書きします。
ロールアップのアプリケーション名
すべてのバーチャルホストやすべてのアプリケーションでのサーバーのパフォーマンスを全体的に把握したい場合、一度に複数のアプリケーションにレポートできると便利です。たとえば、バーチャルホスト固有のアプリケーションに加えて、ロールアップのアプリケーションにもレポートします。
これを行うには、各アプリケーション名をセミコロンで区切って、 newrelic.appname
パラメーターに複数のアプリケーション名を設定します。プライマリアプリケーション名が最初で、セカンダリアプリケーション名が次にあります。最大2つの追加のアプリケーション名を定義できます。
例えば:
newrelic.appname="Virtual Host 1;All Virtual Hosts"
これは2つのNew Relicアプリケーション、"Virtual Host 1" と"All Virtual Hosts" に報告されます。