phpの初期設定ファイルを編集する
phpの初期設定は、初期設定ファイル(php.ini)を編集して行います。
以下の箇所を、それぞれ編集します。
RedHat系(CentOS,Scientific Linux)では、php.iniファイルは、/etc/php.ini にあります。
Debian系(Debian,Ubuntu)では、php.iniファイルが、それぞれの用途によって別れて存在します。
- CGI用 : /etc/php5/cgi/php.ini
- CLI用 : /etc/php5/cli/php.ini
- FPM用 : /etc/php5/fpm/php.ini
それぞれのファイルを編集する必要があります。
[ php.ini ]
[PHP]
...
;# phpのバージョンを表示しないように変更します。
;#expose_php = On
expose_php = Off
...
;# phpの実行時間を3000秒までにしています。
;# 必要に応じて設定しましょう。
;#max_execution_time = 30
max_execution_time = 3000
...
;# phpの最大メモリ量を128Mまでにしています。
;# 必要に応じて設定しましょう。
;#memory_limit = 16M
memory_limit = 128M
...
;# phpのアップロードの最大容量を20Mまでにしています。
;# 必要に応じて設定しましょう。
;#upload_max_filesize = 2M
upload_max_filesize = 20M
...
;# phpで使用するタイムゾーンを指定します。
;date.timezone =
date.timezone = Asia/Tokyo
...
[mbstring]
;# phpで取り扱うマルチバイト文字列は、どこの言語にするかを設定します。
;# ここでは日本を指定しています。
; language for internal character representation.
mbstring.language = Japanese
...
;# phpで取り扱うマルチバイト文字列のエンコードの文字コードを設定します。
;# ここではUTF8を指定しています。
;mbstring.internal_encoding = EUC-JP
mbstring.internal_encoding = UTF-8
...
;# phpで取り扱うマルチバイト文字列をhttpから入力された文字コードをエンコードする文字コードを設定します。
;# ここでは自動を指定しています。
; http input encoding.
mbstring.http_input = auto
...
;# phpで取り扱うマルチバイト文字列をhttpへ出力される際のエンコードする文字コードを設定します。
;# ここでは変換しないを指定しています。
;mbstring.http_output = SJIS
mbstring.http_output = pass
...
;# phpで取り扱うマルチバイト文字列をhttpから入力された文字コードをエンコードするかを設定します。
;# ここでは変換するを指定しています。
;# ここをONにしておくと、mbstring.internal_encodingで指定した文字コードへ変換します。
;mbstring.encoding_translation = Off
mbstring.encoding_translation = On
...
;# phpで取り扱うマルチバイト文字列をどの文字コードから判断していくか順番を指定します。
;# ここでは自動を指定しています。
; auto means
mbstring.detect_order = auto
...
;# phpで取り扱うマルチバイト文字列の無効な文字を代替する文字を指定します。
;# ここでは変換なしを指定しています。
;# 下手に変換すると混乱しますから、ここでは、変換なしが無難だと思います。
; one from another
mbstring.substitute_character =
...
|
上記内容を編集して保存します。
memory_limitは、メモリの上限値であって、メモリ確保値ではありません。そのため、ここの値が大きくても必要以上にメモリが常に確保されるわけではありません。
ここでの設定は、あくまで上限値を設けることで、プログラムの暴走によるリソース喰いをなくすための設定になります。
また、仮にこの値を上回ってメモリを必要とするphpのスクリプトがあった場合、そのスクリプトは直ちに強制終了されます。
php-APCの初期設定ファイルを編集する
phpのエクステンションの初期設定は、各エクステンション毎に初期設定ファイル(保存ディレクトリ : /etc/php.d/ (RedHat系) , /etc/php5/conf.d/ (Debian系) )を各エクステンション名前.iniのファイル名で用意してあげます。
ここでは、APCなので apc.ini というファイルを用意します。
RedHat系(CentOS,Scientific Linux)では、apc.ini ファイル は、/etc/php.d/apc.ini にあります。
Debian系(Debian,Ubuntu)では、apc.ini ファイル は、/etc/php5/conf.d/apc.ini にあります。
[ apc.ini ]
;# apc extension module を有効にします。
extension = apc.so
apc.enabled=1
;# apc extension module のオプションを設定します。
;## コンパイラキャッシュのために割り当てる共有メモリセグメントの数。
apc.shm_segments=1
;## 個々の共有メモリセグメントの大きさを MB 単位で指定します。
;#apc.shm_size=32
apc.shm_size=128M
;## 最適化レベル。ゼロは最適化を無効にし、 値を大きくするほど最適化のレベルが高くなります。
apc.optimization=0
;## キャッシュされているエントリが、 他のエントリに割り当てられるまでスロットに残っていることの可能な秒数。
;#apc.ttl=7200
apc.ttl=86400
;#apc.user_ttl=7200
apc.user_ttl=86400
;## Web サーバで読み込まれるソースファイルの総数についての 「ヒント」。よくわからない場合はゼロを指定するか、 単に無視してください。
apc.num_files_hint=1024
;## --enable-mmap を用いて MMAP サポートつきでコンパイルされている場合、ここで mktemp 形式のファイルマスクを指定します。
apc.mmap_file_mask=/tmp/apc.XXXXXX
;## たいていは、テストやデバッグ用に使用します。これを設定すると CLI バージョンの PHP で APC を有効にします。
apc.enable_cli=1
;## デフォルトで On です。しかし、これを Off にして + で始まる apc.filters とともに使用することで、 フィルタに一致したファイルのみをキャッシュすることが可能です。
apc.cache_by_default=1
|
phpを実行したときに以下のような警告メッセージが表示されることがあります。
PHP Warning: PHP Startup: apc.shm_size now uses M/G suffixes, please update your ini files in Unknown on line 0
|
この場合、
に単位を設定してあげるとOK。
のように。
ここで指定するメモリ量は、apacheのプロセス毎に確保されます。そのため、サーバーの許容メモリを超えてしまうとスワップが発生し、かえってレスポンスが悪くなることがありますので、十分、計算の上、設定しましょう。
※通常、利用可能なハードメモリが
2GB以上あれば、環境やアクセス数にもよりますが、128Mでも良いかもしれません。
- 1GB以上 : 64M
- 500MB以上 : 32M
概ねこれぐらいが目安かなぁという気はします。あくまで参考程度にお願いします。設定の後、必ず、ログ情報、メモリ消費量などを確認し、調整を行うようにしましょう。
上記内容は、あくまで参考までに。各サーバーの環境によって設定する内容も異なりますから、確認の上、編集しましょう。
編集を終えたら保存します。
とりあえず、apcが動作しているか確認しておきましょう。
確認は、簡単です。phpinfo(); で出力したら apc の項目が確認できるはずです。
$ echo "<?php echo phpinfo(); ?>" > info.php
|
上記のinfo.phpをウェブサイトから確認できるディレクトリへコピーしてアクセスしてみてください。
以下のようにAPCの項目が出力されればOKです。
また、APCのキャッシュ状態を確認することもできます。
$ wget http://svn.php.net/viewvc/pecl/apc/tags/APC_3_1_9/apc.php?view=co -O apc.php
|
上記でダウンロードしたapc.phpをウェブサイトから確認できるディレクトリへコピーしてアクセスしてみてください。
以下のように現在のキャッシュ情報が出力されるはずです。
いずれの設定においても、メモリ関連のリソース情報設定に関しては、
格安の共有レンタルサーバーでは、ほとんど意味の無い設定かもしれません。
VPSや専用サーバー、自宅サーバーでは、メモリの管理は大事です。
特に限られたリソースで動作させるには、ここのメモリの設定を誤ると、メモリ不足などに陥り、遅延発生の要因にもなりかねません。十分注意して設定、チューニングしましょう。
ここでの設定によっては、かなりのパフォーマンスを引き出すこともできるようになります。
また、ここに記述のある設定例以外にも、いろいろとパラメータはありますので、試されると良いと思います。
それらの設定によっては、高速になることもありますし、逆に低速になることもあります。あくまでVPSなどリソースを占有できる場合ですが、いろいろと試してみると良いと思います。
こういった設定を自分の思うとおりに設定できるのもVPSの醍醐味ですね。
VPSなら、格安・実績のさくらのVPSがおすすめでしょう。お試し期間14日、まずは、お試し期間で試してみるのも良いと思います。さくらのVPSは、
さくらのVPS ページからどうぞ。
コメントを投稿 :