OSX, phpenv で作成した環境に memcached を設定する
メモです。
おそらく、 PECL のライブラリは memcached に限らず、ほぼ同様に設定できるはず。
※以下の例では、 php 5.4.16 を使用している。
brew から、memcached, libmemcached をインストール
memcached, libmemcached は brew からインストール。
$ brew install memcached
$ brew install libmemcached
php から使えるようにする。
- PECL のライブラリを取得。
- phpize
- ./configure
- make && make install
- 「extension=memcached.so」をどこかに設定
任意ディレクトリに移動し、phpize, ./configure, make, make install
例えば以下のコマンド。
$ cd ~/Documents/tmp/pecl_librares/memcached # どこでも良い
$ wget http://pecl.php.net/get/memcached-2.2.0.tgz
$ tar zxvf memcached-2.2.0.tgz
$ cd memcached-2.2.0
$ phpize
$ ./configure
$ make
$ make install
Installing shared extensions: ~/.phpenv/versions/5.4.16/lib/php/extensions/no-debug-non-zts-20100525/
$ ls ~/.phpenv/versions/5.4.16/lib/php/extensions/no-debug-non-zts-20100525/
memcached.so xdebug.so
これで、今 phpenv で使用しているバージョンの ./lib/php/extensions/ 以下に memcached.so が作成される。
memcached.ini を作成して memcached.so を適用
php.ini に記載しても同じ。
./conf.d/ 以下の *.ini を読み込むように設定済みなので、今回は memcached.ini に書くことにした。
$ vi ~/.phpenv/versions/5.4.16/etc/conf.d/memcached.ini
extension=memcached.so
$ php -i | grep mem # インストールされているか確認する
※当たり前ですが、この状態でWEBから動作確認すると、 memcached が起動してないエラーとなる。(memcached 起動させてないし、webサーバー再起動させてないし。)
$mc = new Memcached();
$mc->addServer("localhost", 11211);
$set_result = $mc->set("foo", "Hello!");
var_dump($mc->getResultCode());//int 47 // 47 = MEMCACHED_SERVER_TEMPORARILY_DISABLED via:http://www.php.net/manual/ja/memcached.getresultcode.php
memcached の自動起動を有効にする
brew でインストールしているので、提供されている plist を使う。
自動起動用ディレクトリを作成
無ければ作る。
$ mkdir -p ~/Library/LaunchAgents
作成したディレクトリに homebrew が提供する plist をコピー
普通にコピーすれば良いだけ。
$ cp /usr/local/Cellar/memcached/1.4.17/homebrew.mxcl.memcached.plist ~/Library/LaunchAgents/
/usr/local/Cellar/memcached/1.4.17/homebrew.mxcl.memcached.plist -> ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist
/usr/local/Cellar/memcached/1.4.17/homebrew.mxcl.memcached.plist は、 RunAtLoad が true なので、ロードされれば起動する。
<key>RunAtLoad</key>
<true/>
memcached の起動と動作確認
launchctl load で起動させる。
$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist
$ ps ax | grep memcached # 起動しているのを確認する
48184 ?? S 0:00.01 /usr/local/opt/memcached/bin/memcached -l localhost
webサーバーの再起動
必要に応じて web サーバーも再起動しておく。
$ sudo apachectl restart
これで良いはず。