karakaram-blog

お名前.com VPS にPHPをインストールし、APC、memcachedなど設定する

 ツイート 1  シェア 0  Google+1 0  Hatena 5

php-logo

お名前.com VPS メモリ2G プランに Nginx で WordPress を構築するメモ、第7回目。前回はお名前.com VPS にMySQLをインストールしWordPress用にチューニングでした。

今回は、お名前.com の VPS に PHP をインストールします。mbstring の設定、APC の設定、PHP の Session を memcached に格納する設定を行います。PHP エラーログを logrotate する方法にも触れます。

これまでの記事へのリンクはお名前.comのVPSに引越しました。引越し手順、他社 VPS との比較などにまとめてあります。

目次

  1. PHP をインストール
  2. PHP.ini 設定
  3. mbstring 設定
  4. APC 設定
  5. PHP の Session を memcached に入れる
  6. Session が memcached に入っているか確認
  7. PHP ログを logrotate する

PHP をインストール

CentOS 標準リポジトリの PHP は 5.3 と少々古いので、remi リポジトリから 5.4 をインストールします。remi リポジトリのセットアップが済んでいない方は お名前.com VPS で EPEL RPMforge remi リポジトリを利用する をどうぞ。PHP と一緒に mbstring、MySQL接続ドライバ、APC も一緒に入れます。PHP の Session を memcached に入れるので、memcached も入れておきます。

# yum --enablerepo=remi install php php-mysql php-mbstring php-pecl-apc memcached php-pecl-memcached

記事の執筆時点ではバージョン 5.4.15 がインストールされました。Apache ドキュメントルートに phpinfo.php を作成して動作確認します。

# echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php

ブラウザで次のようにアクセスします。http://vXXX.XXX.XXX.XXX.myvps.jp/phpinfo.php (XXX.XXX.XXX.XXX はご自身の IP アドレスに置き換えてください)

phpinfo

PHP.ini 設定

PHP.ini のデフォルトからの変更点です。

# vi /etc/php.ini
expose_php = Off
error_reporting = E_ALL | ~E_STRICT
error_log = /var/log/php.log
default_charset = "UTF-8"
date.timezone = Asia/Tokyo
session.cookie_httponly = 1
session.hash_function = 1

mbstring 設定

mbstring.ini のデフォルトからの変更点です。

# vi /etc/php.d/mbstring.ini

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_detection = Off
mbstring.http_output_conv_mimetype=

APC 設定

apc.ini のデフォルトからの変更点です。

# vi /etc/php.d/apc.ini

apc.shm_size=128M
apc.ttl = 3600
apc.user_ttl = 3600
apc.gc_ttl = 7200

APC の状況を確認するため、パッケージに付属している apc.php を Apache のドキュメントルートにコピーします。APC のバージョン番号は適宜置き換えてください。

cp /usr/share/doc/php-pecl-apc-3.1.15/apc.php /var/www/html/

ブラウザで次のようにアクセスします。http://vXXX.XXX.XXX.XXX.myvps.jp/apc.php

apc

apc の設定値はほとんどの場合デフォルトで問題ありませんが、apc.php を見ながら稼働状況に応じて調節します。詳細はPHP マニュアルをご確認ください。

PHP の Session を memcached に入れる

PHP の Session のデフォルトの保存先はファイルですが、memcached に入れるように変更します。

まずは memcached の設定変更から。デフォルトの状態だと、どこからでもアクセスできるので、-l オプションで localhost からのみアクセス可能にします。11211ポートを開けていないのであまり気にしなくてもよさそうですが。

# vi /etc/sysconfig/memcached

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1"

memcached 起動

# /etc/init.d/memcached start

netstat コマンドで動作確認します。

# netstat -nlp | grep memcached

tcp        0      0 127.0.0.1:11211             0.0.0.0:*                   LISTEN      3443/memcached
udp        0      0 127.0.0.1:11211             0.0.0.0:*                               3443/memcached

次に /etc/php.d/memcache.ini を以下のように変更し、セッションの保存先を memcached に変更します。

# vi /etc/php.d/memcache.ini 

session.save_handler=memcached
session.save_path="localhost:11211"

memcache.ini のコメントに書かれているように、/etc/httpd/conf.d/php.conf に Session の保存先が書かれているのでコメントアウトします。

# php_value session.save_handler "files"
# php_value session.save_path    "/var/lib/php/session"

apache 再起動

# /etc/init.d/httpd start

サーバ起動時に memcached も起動するように

# chkconfig memcached on

# chkconfig --list memcached
memcached      	0:off	1:off	2:on	3:on	4:on	5:on	6:off

Session が memcached に入っているか確認

以下のような簡単なプログラムで Session が memcached に入るか確認します。

# vi /var/www/html/session.php

<?php
session_start();
$_SESSION["count"]++;
echo $_SESSION["count"];

ブラウザからアクセスして、リロードのたびに数字がカウントアップされれば OK です。

memcached の中身を確認するには memcached-tool を使います。

# memcached-tool localhost dump
Dumping memcache contents
  Number of buckets: 3
  Number of items  : 3
Dumping bucket 3 - 1 total items
add memc.sess.key.h7e2g18t0gqhiu86ppe10n673msa15jr 0 1370835768 10
count|i:3;
Dumping bucket 6 - 1 total items
Dumping bucket 8 - 1 total items

count|i:3; のように memcached に Session の値が入っているのが確認できます。

memcached と PHP の詳細については PHP マニュアルをご確認ください。

PHP ログを logrotate する

PHP のエラーログが /var/log/php.log に出力されるので rotate するように設定します。

# vi /etc/logrotate.d/php

/var/log/php.log {
    daily
    rotate 4
    missingok
    notifempty
    create 640 root root
}

デバッグモードで実行して動作確認します。

# logrotate -dv /etc/logrotate.d/php

Handling 1 logs

rotating pattern: /var/log/php.log  after 1 days (4 rotations)

終わりに

お名前.com VPS に PHP をインストールし、mbstring、APC、memcached を設定しました。次回はさくらレンタルサーバのWordPressをお名前.com VPS に引越しする手順です。

 ツイート 1  シェア 0  Google+1 0  Hatena 5