Posts Tagged “wordpress”


概要

CentOS5はyumでPHPをインストールすると標準では5.1.6が入ります。WordPressで使いたいプラグインが5.2以上を要求していたので、yumでPHP5.2を入れる方法を探してみました。
ついでにPHPの中間コードキャッシュ「APC」を導入してサイトの速度向上を計ってみました。

環境:

  • ServersMan@VPS のEntryプラン
  • CentOS 5.4

PHP5.2のインストール

まず古いPHPを削除します。私の環境では以下のものを削除しました。(/var/log/yum.log で後日確認)

php
php-mbstring
php-pdo
php-common
php-cli
php-mysql
gnupg
curl

次に取得先のGPG-KEYをインポートします。

rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

リポジトリの設定をします。

$ vi /etc/yum.repos.d/utterramblings.repo
(以下の内容を入力)
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

後は普通にyumで必要なパッケージをインストールします。

$ yum install php php-mbstring php-pdo php-pdo-mysql ...

インストールが終わったら、yum update でこのリポジトリが使われないように enabled=1のところを enabled=0に書き換えておきます。

apcのインストール

上記で追加した「Jason’s Utter Ramblings Repo」には php-apcも用意されていたので、普通に

$ yum install php-apc

で完了でした。
標準の5.1.6にインストールするには peclを使う方法、他のリポジトリを追加してyumでインストール方法などが紹介されていました。(下部の参考リンクを参照。)

ベンチマーク

Apacheを再起動してベンチマークしてみます。

APCなしの場合

Concurrency Level:      5
Time taken for tests:   103.595070 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      1881150 bytes
HTML transferred:       1869950 bytes
Requests per second:    0.48 [#/sec] (mean)
Time per request:       10359.507 [ms] (mean)
Time per request:       2071.901 [ms] (mean, across all concurrent requests)
Transfer rate:          17.73 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   8.8      0      32
Processing:  1749 10192 22227.7   4236  103562
Waiting:     1198 8469 21650.1   2593  102240
Total:       1749 10194 22232.4   4236  103594

APCあり(shm 32M)の場合

Concurrency Level:      5
Time taken for tests:   66.140733 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      1881150 bytes
HTML transferred:       1869950 bytes
Requests per second:    0.76 [#/sec] (mean)
Time per request:       6614.073 [ms] (mean)
Time per request:       1322.815 [ms] (mean, across all concurrent requests)
Transfer rate:          27.77 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.1      0       6
Processing:  3831 6405 1900.1   6155   13822
Waiting:     1797 3599 1741.1   3355   10780
Total:       3831 6405 1899.9   6155   13822

およそ40%ほどスピードアップしているようです。
ちなみに /etc/php.d/apc.ini にapc関連の設定があって共有メモリのサイズ(apc.shm_size)を128に増やしてベンチマークしてみましたが特に有意差はありませんでした。
キャッシュされるソースコードの量が増えてくるとこのパラメータが効いてくるようです。

参考

以下のサイトを参考にさせていただきました。ありがとうございます。

Comments CentOSのPHPを5.2にする。ついでにAPCも入れてみました。 はコメントを受け付けていません。


概要

今週からWordPressと格闘しています。主に技術情報をまとめるブログにしたいので、これまで慣れているはてな記法とコードを美しく見せるためのSyntaxHighlighterをプラグインで導入したいと思っていました。いろいろと試行錯誤してみた結果、

  1. 「WP HatenaNotation」と「SyntaxHighlighter2」をそれぞれインストールして有効化
  2. コードを書くときははてなのスーパーpre記法で書く

ことで望みどおりの結果を得られました。

※2010/10/28 追記:いろいろ弄っているうちにはてなのスーパーpreで書いたときにSyntaxHighliter2のJavascriptエラーが発生するようになってしまいました。結局、「はてな記法の設定」から「WordPressの改行を使用する」を「はい」に変更したところ、SyntaxHighlighter2の記法でいけるようになりましたので今はそちらを使ってます。

はてなのスーパーpre記法でコードを書いた場合

記法

>|php|
    public function serializeField($entity, $fields, $json=FALSE) {
        
        foreach($fields as $field) {
            if (! Teeple_Util::isBlank($this->$field)) {
                $entity->$field = $json ?
                    json_encode($this->$field) : serialize($this->$field);
            } else {
                $entity->$field = NULL;
            }
        }
        return;
    }
||<
表示
    public function serializeField($entity, $fields, $json=FALSE) {
        
        foreach($fields as $field) {
            if (! Teeple_Util::isBlank($this->$field)) {
                $entity->$field = $json ?
                    json_encode($this->$field) : serialize($this->$field);
            } else {
                $entity->$field = NULL;
            }
        }
        return;
    }

このように期待通りに表示されました。
おそらく動作原理は以下のようになっていると思います。

  1. WP HatenaNotationが >|php| ~ ||< までを
    <pre class="brush: php;"> ~ </pre>
    

    に変換。

  2. SyntaxHighlighter2が pre内をハイライト。

次はSyntaxHighlighter2の記法でやってみた場合の失敗例です。

SyntaxHighlighter2でのハイライト

記法

[ code="php" ]
    public function serializeField($entity, $fields, $json=FALSE) {
        
        foreach($fields as $field) {
            if (! Teeple_Util::isBlank($this->$field)) {
                $entity->$field = $json ?
                    json_encode($this->$field) : serialize($this->$field);
            } else {
                $entity->$field = NULL;
            }
        }
        return;
    }
[ /code ]

表示


    public function serializeField($entity, $fields, $json=FALSE) {
        
        foreach($fields as $field) {
            if (! Teeple_Util::isBlank($this->$field)) {
                $entity->$field = $json ?
                    json_encode($this->$field) : serialize($this->$field);
            } else {
                $entity->$field = NULL;
            }
        }
        return;
    }

このように<p>タグが入ってしまいます。。恐らくWP HatenaNotationが悪さをして <p>タグを入れてしまっているものと思われます。

参考

Comments WordPressのプラグイン「WP HatenaNotation」と「SyntaxHighlighter2」を同居させるには はコメントを受け付けていません。