2009.06.08

WordPressのrevision機能でDBアクセスが遅くなったら

WordPress 2.6以降では、postをセーブするたびにそのリビジョンがデータベースに書き込まれ保存されるすばらしい機能があります。しかし、毎回「Save Draft」や「Publish」をクリックするたびに強制保存されるので、油断してる間に膨大な数のリビジョンが保存されています。

何かおかしいと気づくのは、サイトや管理画面のアクセスが極端に遅くなった時。私は安い洋物共用サーバを使っているのでパフォーマンスの低下が半端じゃありません。何が原因かと思ってたらどうもリビジョンじゃないか?と思ってググったら一発でした。

しなければならないことは二つ。

  1. リビジョン機能の停止
  2. 今までにたまったリビジョンのクリーンアップ

リビジョン機能の停止

今後リビジョンが作られないように、Wordpressのインストールディレクトリにあるwp-settings.phpのphpの領域(までの間)に以下の一文を書き込みます。

define('WP_POST_REVISIONS', false);

2つ目の引数をfalseにすると、今後リビジョンが全く作られません。
falseの部分を1にすると、各postに1つだけ過去のリビジョンが保持されます。

また、同様に鬱陶しい場合があるAutosaveの間隔を変えるには同じくwp-settings.phpの

define('AUTOSAVE_INTERVAL', 60);

の60の部分を変更して対応します。
ここは秒数指定です。

今までにたまったリビジョンのクリーンアップ

flyingmango.jpが2.6以降にアップデートしてからというものの、post番号が急激に増えてるのでそのうちなんか起こるかなと思ってましたが。。。100件もアップデートしてないのに1200ものリビジョンが作られてました。

この1200ものリビジョンを下記のSQLで消すとあら不思議、管理画面が嘘のように軽くなりました。

DELETE FROM wp_posts WHERE post_type="revision";

wp-config.phpのDBプレフィックス設定で「wp_」から変更している方はテーブル名称にご注意。DELETEの前にSELECTで中身を見ておいたほうが安心できるかもしれません。

SQLの使用には十分注意してください!バックアップを忘れずに!

おまけ:DBがつぶれてました

普通はないと思うのですが、revisionを消す作業中に、MyPHPAdminでコマンドを実行すると「Incorrect key file for table: ‘…’. Try to repair it.」というエラーが出てきて消したいものが消せず。以下のコマンドのお世話になりました。(以下はMySQL4.1です。5は多少違うかも。)

現時点のWordpressのバージョンは2.7ですが「将来revision機能をUIで設定できるようにすべき」と本家本元のサイトのマニュアル(執筆途中)に書かれているので、今開発中の2.8のフィーチャーリストに入ってるかもしれません。

2008.12.22

WordPressで管理コンソールURLを変更できた

今までのWordpressでは、ブログURLのルート直下の/wp-admin/が管理画面への入口として固定されていたと思っていました。これは世界に向けて自分の家の勝手口が見えてるようなものなので心理的にかなり嫌だったのですが、管理画面のURLを変える方法はなんと2.3くらいの時代からあったそうな。

やり方はこれ。日本語でも書いておきます。

* http://yourdomain.com/blog/以下にすでにブログがインストールされている場合です。
* インストールディレクトリとブログルートディレクトリを両方とも変更したい場合です。このうち片方だけ変更したい場合は、下記手順中の片方の設定は固定のまま進めてください。

  1. 新しいWordpressのインストールディレクトリを決める
    (例:http://yourdomain.com/admin/)
  2. 新しいブログのルートディレクトリを決めておく
    (例:http://yourdomain.com/)
  3. WordPressのAdmin Consoleに入り、Settings > Generalにアクセス
  4. WordPress address (URL)に1.のインストールディレクトリを入力する
  5. Blog address (URL)に2.のブログルートディレクトリを入力する
  6. 設定を保存する
  7. http://yourdomain.com/blog/にあったWordpressのファイルを、新しいインストールディレクトリ(http://yourdomain.com/admin/)にコピーする
  8. コピーが終わったら、コピーされたindex.phpと.htaccessを、ブログのルートディレクトリにコピーする(http://yourdomain.com/ 直下)
  9. コピーしたルート直下のindex.phpを開いて、以下の行を修正する
    require(‘./wp-blog-header.php’);

    require(‘./admin/wp-blog-header.php’);

  10. 新しいインストールディレクトリのAdmin Consoleにログインする
  11. Permalinkをカスタム設定している人は、Settings > Permalinksで変更する必要があるかもしれませんのでご注意ください
  12. 今までの/wp-content/uploads/以下の画像などがすべてリンク切れになるため、ひとつひとつリンクを修正するか、もしくは/wp-contet/uploadsだけは残しておくのもよい

なぜ今までこれに気づいていなかったのか分からん。

2008.10.13

WordPressとExpressionEngineを比較

現在Wordpressを使っていますが、最近ExpressionEngine(ee)が気になっていて、今後のブログデザイン変更の際にエンジン変更しようかと迷っていて、ちょっと比較してみました。ExpressionEngineはインストールしてちょこっと触っただけです。

WordPress

2.6

ExpressionEngine

1.6.4

開発元 Automattic
Happy Cog2.5の管理インターフェイスデザイン
オープンソースコミュニティ
EllisLab
ライセンス 無料(GPL) 機能制限されたコアバージョンは無料、フルバージョンは有料
インストール PHPとMySQLが動く一般的なWebサーバ(ApacheやIIS)であれば、簡単にインストールできる
向き不向き 単一ブログ用のエンジン ブログとしてもCMSとしても使い勝手の良い万能エンジン(ただし無料版はブログしかできないと考えた方がよいい)
良い点 サードパーティのテンプレートやプラグインが豊富
sitemap.xmlや解析タグなどのインテグレーションを簡単に行えるプラグインがサードパーティによって提供されている
データフィールドの追加が簡単
管理画面の入口URLやディレクトリを変更可能
悪い点 時系列以外のコンテンツ管理もできないことはないが弱い
マルチサイト・マルチブログの一括管理はWordPress Muがあるが、Wordpressの最新バージョンについてきていない
管理用ページを含むwp-adminディレクトリが固定で、勝手口が丸見え状態(実は勘違いでそんなことはなかったようです。)
バージョンアップでのタグや関数の仕様変更が多い(そろそろ落ち着く?)
URLをクリーンに見せるためのカスタマイズが多少かなり面倒(.htaccessを自分で書く)
sitemap.xmlの生成が面倒(まだテンプレやプラグインはなく、検索エンジンにpingを打つ仕組みもない)
何か変わったことをしようとすると金がいる場合がある(無料版ではページ管理もできない)
評判や実績 注目度は他の追随を許さない世界No.1(Google Trendswordpressを抜くと
nytimes.comのどっかのセクションで採用されたことがあるそうな
Jeffery Zeldmanのお気に入り
IDEOも採用
今後の展望 2.5になって管理画面の改善が進み、2.7でさらに大幅に変わる予定 同じくEllisLab開発の人気PHPフレームワークCodeIgniterベースになって書きかわるExpressionEngine 2.0が期待。が、プロジェクトは遅れている様子。

結局ブログやりたいかブログ以上のものがやりたいか、という要素が大きいと思います。

現時点ではExpressionEngineはURL構造に難があり、使えません。いわゆる普通のサイト構造にあったURL構造にした場合、自分で.htaccessをいじるか、プラグインが登場するのをまつか、もしくは2.0で改善されないと、使えません。

現時点、ブログだけならWordpress。
update: ほぼ唯一の弱点だったadmin画面勝手口問題も実は勘違いだったことが判明し、Wordpressの勝ちがさらに堅くなりました。
Movable Typeはすっかり圏外。。。

EE 2.0が出たら、EEを本格的に試してみることにします。

2008.08.28

WPtouch iPhone ThemeでWordPressブログをいとも簡単にiPhone対応に

flyingmango.jpリニューアルの一環として、iPhone対応のテンプレートを作成しようと思っていたのですが。。。
WPtouch iPhone Themeプラグインで一発解決してしまいましたw
これでいいや!

主な機能など(バージョン1.3.3)
  • プラグインが有効になっている状態のブログにiPhone/iPod Touchでアクセスすると、iPhone対応テンプレートで構成された画面を表示します。
  • jQueryによるアドバンス機能を有効にしておくと、タイトルのリスト表示形式ページ上で遷移無しで記事を展開させることができます。Google Readerみたいな感じ。
  • ヘッダの色とリンクの色を変えることができます。
  • WP-CacheやWP Super Cacheとの相性があまり良くないそうです。私は使っていませんが。
  • 作者サイトによると、9月にバージョン2.0がリリースされる予定だそうな。

以下スクリーンショット。多少はしょってます。

WordPressを半自動でめっちゃ簡単にアップデートしてくれるプラグイン

ようやく先日このブログのWordpressを2.6にアップグレードした時にはすでに2.6.1がリリースされていて悲しい思いをしたのですが、ここでかねてから試してみようと思っていたWordPress Automatic Upgradeプラグインを使ってみました。

これはすごい。使えます。

私は2.6→2.6.1のマイナーアップグレードだったので簡単だったのだろうと思うのですが、それでも300程度の記事数で使った時間は10分に満たず。下記それぞれのステップを半自動処理(毎回クリックして次にのステップに進む)で行ってくれます。昔のバージョンは全自動処理があったようなのですが、今は半自動のみのようです。

ステップ
  1. ファイルのバックアップをとる(ダウンロード可能)
  2. データベースのバックアップをとる(ダウンロード可能、プラグインが使用するテーブルも選択可能)
  3. http://wordpress.org/latest.zipから最新版のダウンロードを行い、解凍する
  4. サイトをメンテナンスモードにする
  5. 本プラグインを除いた他のすべての有効プラグインを無効にする
  6. WordPressファイルをアップデートする
  7. 無効にしたプラグインをふたたび有効にする

しかし、最後の「一度無効にしたプラグインを再度有効にする」がうまくできていなかった。
あぶねーなーw 気がつかなかったら解析とかXML Sitemapとか全部無効じゃねーかw
作者のサイトを見るとFixされたバグリストに載っているので本来は起こらない現象のはずなのですが、アップデート時には念のためチェックしておいた方がよいですね。

使用時の注意
  • 作者のサイトで常に最新版をチェックし、自分のWordpressのバージョンと最新版のバージョンでの動作確認が取れているかを確認する。
  • WordPressの基本ファイル系にカスタマイズを加えている場合は勝手にデフォルトに戻るので注意が必要です。私はRSS2のテンプレに手を加えているのですが、見事にデフォルトに戻ってしまいました。
2008.08.15

WordPress 2.2.1から2.6にアップデート…Categoryに注意

flyingmango.jpリニューアルの一環として、まずはWordpress 2.2.1から2.6にアップデートをおこないました。

この手順に従って無事にアップデート…したのですが、categoryの値が変になっていたので、phpMyAdminを使ってデータベースのwp_termsテーブルに直接書き込みました。

WordPress.orgのforumをみると、既知の不具合のようでした。データベースを触らずに回避するには一気にアップグレードせずにバージョンをこまめにアップグレードするしかないようです(2.2→2.3→2.5→2.6とか)。カテゴリが少なかったからよかったものの、皆様もおきをつけください。DBのバックアップは忘れずに!

RSSテンプレを修正してトラッキングコードをつけていたものが、アップデートで消えていたのを修正。次回は忘れずにアップグレードしなければ。

2.6にアップグレードしたことで、iPhoneのWordpressが使えると思ったのですが、XML-RPCがうまくセットアップされてないとかで使えません。しかしiPhoneでブログするわけでもないので、問題解決は先になりそうな予感。

そして2.6にアップグレードしたDashboardを見ると。。。

WordPress 2.6.1 is available! Please update now.

なんというタイミング。。。

というわけで、WordPress Automatic Pluginを利用して2.6.1にアップデートしました