FreeBSD + PHP に APC を適用する。

FreeBSD上のPHPにAPCを設定するメモ。(2013.09.19 追記しました。)

いつもどおり Ports から。

  • portinstall -f www/pecl-APC
  • portinstall -f databases/pecl-memcache

インストール出来たら /usr/local/etc/php/extensions.ini を確認して、下記行が追加されている事を確認。

extension=memcache.so
extension=apc.so

/usr/local/etc/php.ini 内の [PHP] セクションに apc 関係の設定を追記する。(「; Module Settings ;」とある行の上辺り)

apc.enabled = 1
apc.shm_size = 30

上記はデフォルト値なので、 apc.shm_size は 128 程度にしておくと吉。

[bash]
apc.enabled = 1
apc.shm_size = 256M
; The number of shared memory segments to allocate for the compiler cache.
apc.shm_segments=1
; A "hint" about the number of distinct source files that will be included or
; requested on your web server. Set to zero or omit if you’re not sure;
apc.num_files_hint=1024
; Just like num_files_hint, a "hint" about the number of distinct user cache
; variables to store. Set to zero or omit if you’re not sure;
apc.user_entries_hint=4096
; The number of seconds a cache entry is allowed to idle in a slot in case this
; cache entry slot is needed by another entry.
apc.ttl=7200
; use the SAPI request start time for TTL
apc.use_request_time=1
; The number of seconds a user cache entry is allowed to idle in a slot in case
; this cache entry slot is needed by another entry.
apc.user_ttl=7200
; The number of seconds that a cache entry may remain on the garbage-collection list.
apc.gc_ttl=3600
; On by default, but can be set to off and used in conjunction with positive
; apc.filters so that files are only cached if matched by a positive filter.
apc.cache_by_default=1
; A comma-separated list of POSIX extended regular expressions.
apc.filters
; The mktemp-style file_mask to pass to the mmap module
apc.mmap_file_mask=/tmp/apc.XXXXXX
; This file_update_protection setting puts a delay on caching brand new files.
apc.file_update_protection=2
; Setting this enables APC for the CLI version of PHP (Mostly for testing and debugging).
apc.enable_cli=0
; Prevents large files from being cached
apc.max_file_size=1M
; Whether to stat the main script file and the fullpath includes.
apc.stat=1
; Vertification with ctime will avoid problems caused by programs such as svn or rsync by making
; sure inodes havn’t changed since the last stat. APC will normally only check mtime.
apc.stat_ctime=0
; Whether to canonicalize paths in stat=0 mode or fall back to stat behaviour
apc.canonicalize=0
; With write_lock enabled, only one process at a time will try to compile an
; uncached script while the other processes will run uncached
apc.write_lock=1
; Logs any scripts that were automatically excluded from being cached due to early/late binding issues.
apc.report_autofilter=0
;This setting is deprecated, and replaced with apc.write_lock, so let’s set it to zero.
apc.slam_defense=0
[/bash]

運用中の環境だとこんな感じ。

設定が終わったら、apc の適用を確認するため、下記を実行。

php -r 'echo phpinfo();'

表示されたメッセージの中に

APC Support => disabled
Version => 3.1.4
MMAP Support => Enabled
MMAP File Mask =>
Locking type => File Locks
Revision => $Revision: 301663 $
Build Date => Oct 27 2010 10:38:09

のような内容があれば適用OK。

php -v 等を行った時に

PHP Warning:  PHP Startup: apc.shm_size now uses M/G suffixes, please update your ini files in Unknown on line 0

のように表示される場合がある。この場合は、サイズに対する単位(suffixes)を設定しろという事なので

apc.shm_size = 128M

のように単位付きで apc.shm_size を設定する。

後は apache を再起動させれば、apc が適用された状態で WordPress が動くはず。

管理用のプログラム「apc.php」が付属されているので、そっちを使って動作確認してもOK。

APCのインストール時に「/usr/local/share/doc/APC/」にapc.phpがインストールされているはずなので、これをWebサーバのドキュメントルートにコピー。

ブラウザからアクセスすると

APCINFO

こんな感じで表示されるはず。

# この環境だと、キャッシュは256Mもいらないですね(笑)。

ログイン必須のメニューがあるので、これを使う場合はapc.phpをエディタで開いて

[bash]
defaults(‘ADMIN_USERNAME’,’apc’); // Admin Username
defaults(‘ADMIN_PASSWORD’,’パスワード’); // Admin Password – CHANGE THIS TO ENABLE!!!
[/bash]

「パスワード」の部分を設定する。

コメント

  1. […] FreeBSD + PHP に APC を適用する。 | シカでした。 […]

  2. […] APCが導入されていない。 pecl-APCを導入。「FreeBSD + PHP に APC を適用する。」を参照。 […]

  3. […] 実際の設定参考ページはこちらのページ。 FreeBSD + PHP に APC を適用する。 実際に設定し、apacheを再起動させてみたところ・・・ […]

  4. […] FreeBSD + PHP に APC を適用する。 | シカでした。 […]

タイトルとURLをコピーしました