【至急・重要】ウィルスチェックのお願い

Change Style


WP ME 2.0.4 → WordPress 2.3 へアップグレード

10月4日、WordPress ME 2.0.4 から WordPress 2.3 へアップグレードした。

使っていたプラグインの互換性チェックはまだまだなのですけど、必須プラグインは使えそうなので、あとは、「2.3 の世界で何ができるか、どうやって実現するか」を楽しんでいくことにしました。 :-)

この記事では、自分用の記録として、アップグレード作業として行なった内容を書き連ねます。

注) 「アップグレード作業をこうすべき」という記事ではありません。元が ME 2.0.4 であったこと+テーマ・プラグイン仕切り直し+ぼのの趣味で、いろんな作業をしていますが、普通はここまでしなくて大丈夫です。

ただ、アップグレード前に Ultimate Tag Warrior のタグデータを整理しておくのはいいと思います。
2.3 に上げてから、タグをインポートをする際に、タグ一覧が表示されて、「これを全部インポートするけどいい?取り込みたくないものがあれば UTW で削除してね」(意訳)みたいなメッセージが出ました。インポートすると、カテゴリの続きから ID が採番されます(カテゴリと同名タグは統合)。(詳しくは別記事にて)

読みやすいように後で文章を直すかもです。。とりあえず忘れないうちにメモ。

参考資料

事前調査・検討

現状の整理 — 不要データの削除など

これを機に、不要データの整理等をしておく。

1. 作業前に DB バックアップ
2. 作業
  • プラグイン Favatars → Favicon API へ切り替え
    • wp_comments テーブルの comment_favicon_url フィールドも削除
    • ついでに comment_subscribe フィールドも削除
  • プラグイン Democracy テーブル削除
  • wp_options テーブル整理 — 不要なプラグインの設定データ削除
  • リンクデータ・リンクカテゴリを削除
    ほとんど使っていないし、勝手にカテゴリID 振られるのが困るので。
    • → 1件ずつ残した。リンクカテゴリはデフォルトを削除できなかったのと、アップグレード時の0件処理避け。
    • → アップグレード結果: 記事カテゴリの後ろにリンクカテゴリが採番された。記事カテゴリで使っている「WordPress」カテゴリにでもしておけば、マージで 1カテゴリに統合してくれたかも。。
  • UTW タグデータ整理
    wp_tags テーブルから不要レコード削除。誤記で登録されてしまったものとか残ってるので。。これは 2.3 へアップグレード後・UTW インポート前に行なった。
  • 使っているプラグインの設定をメモ — 初心に帰ることにして、省略

作業前(ME 2.0.4)のディレクトリ構成

「設置ディレクトリと異なるページをホームにする」設定のため、次のようになっている。

  • public_html
    • .htaccess
      wordpress/.htaccess からコピーしたもの。
      パーマリンクのリライトルール、php_value mbstring.internal_encoding UTF-8、自動広告挿入抑制などが入っている。
    • index.php
      訪問者のアクセスはここ(http://bono.s201.xrea.com/
      wordpress/index.php からコピーし、require('./wordpress/wp-blog-header.php'); に修正してある。
    • wordpress/ — WordPress ファイル一式
      • wp-admin/ — ログインはここ(http://bono.s201.xrea.com/wp-admin/
      • wp-content/
      • wp-includes/
      • .htaccess → ルートへコピー
      • index.php → ルートへコピー

アップグレード作業

通常のアップグレード+うち独自の作業。順序も自分向けにアレンジ。

1. 準備
  • ELA キャッシュクリア
  • wp-cache キャッシュクリア
  • コメント・トラックバック受付を拒否設定に1
  • Akismet 捕獲スパム削除
  • DB 最適化
  • デフォルトテーマに切り替え
  • プラグイン全部オフ
2. DB バックアップ
  • phpMyAdmin でエクスポート(各種組み合わせ)
  • XREA管理画面の「保存」
3. WordPress ファイル一式をバックアップ
  • ローカルの一式 → wp204/ にリネームして退避
  • サーバの wordpress/ ディレクトリ、index.php.htaccess ファイル → ローカルの別ディレクトリへコピー
4. 一旦 2.0.11 へアップグレード

Maintenance Mode Plugin の動作要件が 2.0.9 以上だったので、2.0.11 経由にしてみた。→ 作業詳細

5. WordPress 2.3 パッケージをダウンロード

http://wordpress.org/download/

6. 解凍した 2.3 に必要なものを追加して、ローカルの一式を作成
  • wp-config.php — 2.3 の wp-config-sample.php から作り直し。
    うちの wp-config.php 全文(矢印日本語コメントは当記事上の説明):

    <?php
    mb_language("Japanese");       // ←(注1)
    mb_internal_encoding("UTF-8"); // ←(注1)

    // ** MySQL settings ** // define('DB_NAME', 'アカウントID'); // The name of the database define('DB_USER', 'アカウントID'); // Your MySQL username define('DB_PASSWORD', 'パスワード'); // ...and password define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value 変更なし define('DB_CHARSET', 'utf8'); // ←(注2) define('DB_COLLATE', '');

    // You can have multiple installations in one database if you give each a unique prefix $table_prefix = 'wp_'; // Only numbers, letters, and underscores please!

    // Change this to localize WordPress. A corresponding MO file for the // chosen language must be installed to wp-content/languages. // For example, install de.mo to wp-content/languages and set WPLANG to 'de' // to enable German language support. define ('WPLANG', 'ja'); // ← 日本語化ファイルに合わせる。この場合は ja.mo(本体・プラグイン共通)。

    /* That's all, stop editing! Happy blogging. */

    define('ABSPATH', dirname(FILE).'/'); require_once(ABSPATH.'wp-settings.php'); ?>

    • 注1) ME の wp-config.php に入っていたこの2行も入れてみる。2
    • 注2) 以前の文字化け対策 set names utf8 の替わりにここで指定する。3
  • ルートに従来どおりの .htaccess を置く。wordpress/ 下にもコピー(一時的)

7. メンテナンスモード発動!
8. 「設置ディレクトリと異なるページをホームにする」設定を一時停止

オプション設定画面でサイト URL を修正。

9. サーバの WordPress ファイル一式を 2.3 に入れ替え
  1. サーバの wordpress/ ディレクトリから、以下のものを除いて削除。
    • wp-config.php ファイル — 作り直すので
    • wp-content/ ディレクトリ
      • wp-content/uploads/ のみ残す
      • wp-content/cache/ ディレクトリは削除
      • wp-content/plugins/widgets/ ディレクトリは削除 — 2.0.4 だったのでなし
    • wp-images/ ディレクトリ — 自分では追加してなかったので
    • wp-includes/languages/ ディレクトリ — 言語ファイルを使っている場合、このフォルダは削除しないこと。
  2. ローカルに用意した一式をサーバへアップロード。
10. アップグレードスクリプト実行

http://~/wordpress/wp-admin/upgrade.php

11. アップグレード完了後、サイト表示で文字化けしていないこと、ログインを確認
12. phpMyAdmin にて、DB 変更、データの文字化けがないことを確認
13. Giving WordPress Its Own Directory を設定

Giving WordPress Its Own Directory の項番 1, 3, 6 はできているので、それ以外を実行。

  • Option > General で Blog address (URL) を修正、設定更新。
  • wordpress/index.php をルートへコピー、修正。
  • wordpress/.htaccess は削除。
  • ルートの .htaccess のパーミッションを 707 に。
  • ログイン (http://~/wordpress/wp-admin/
  • Option > Permalinks で [ Update Permalink Structure » ] ボタンをクリックして更新。
14. 設定を一通り確認
15. 必須プラグインを一つずつ有効化
  • PHP Markdown Extra 1.1.7
  • runPHP2.3.1
  • wp-footnotes.2.2
  • Decoder (忘れてたので後から追加)
16. コメント・TB 許可に戻す
17. メンテナンスモード解除・無効化
18. ログアウトし、サイト表示を確認
19. 新規投稿の文字化け有無確認

新規投稿して、文字化けがないことや正常動作を確認。

20. 追記 XREA の手動広告挿入用コードを、テーマ内の `header.php` に追加。

細部

途中で一旦 2.0.11 へアップグレード
  1. WordPress.org » Download › Release Archives から 2.0.11 をダウンロード、解凍。
  2. これをローカルの wordpress/ ディレクトリとして、必要なファイルを追加。
    • 2.0.4 の wp-config.phpwordpress/ へコピー
    • index.php は差がなかったので、ルートの index.php.htaccess はそのまま使用
  3. wp-includes/wp-db.php` の DB 接続直後に MySQL 文字化け対応の修正。

    function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
        register_shutdown_function(array(&$this, "__destruct"));
        $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
        if (!$this->dbh) { (中略)
        }
        mysql_query("SET NAMES utf8", $this->dbh); // ←コレ挿入
        $this->select($dbname);
    }

    最初、これを忘れて `http://~/wp-admin/ にアクセスしたら、次の警告とメッセージが出た。

    Warning: Invalid argument supplied for foreach() in /~/public_html/wordpress/wp-includes/capabilities.php on line 19
    Your database is out-of-date. Please upgrade.

    つい、「Please upgrade」からアップグレード画面に移動して実行してしまった(その間も Warning 出てた)。最終行はエラーのせいなのか本当にアップグレードが必要だったのかわからない。。orz
    その後、上記修正を上書きアップロードしたら、警告が消えた。

  1. でも 1件スパムが来た。見た目上だけ拒否なのかな?[back]
  2. .htaccessphp_value mbstring.internal_encoding UTF-8 を入れても入れなくても変化がなかったのは、ここに mb_internal_encoding("UTF-8") があったおかげではないかなあ、と。[back]
  3. s201 サーバはデフォルト文字コードが EUC-JP(MySQL の character_set_serverujis、かつ、mysqld --skip-character-set-client-handshake オプション指定)なので、DB を UNICODE で作成しても、ここで utf8 を設定しないと文字化けする。2.1.x 以前の MySQL 文字化け対策「wp-includes/wp-db.phpSET NAMES utf8 修正に替わるもの。
    s216 以降の PHP5 系サーバはデフォルトが UTF-8 なので、たぶん設定不要。[back]

2 Responses to “WP ME 2.0.4 → WordPress 2.3 へアップグレード”

  1. ひかげ :

    ぼのさん、おひさしぶりですー
    ついに本家に移行なんですね。

    いつもいろんな面を参考にさせてもらってます。

    少し葛藤があるので、こちらはまだ ME です。
    タグ機能は、期待なんですけどまだまだ勉強不足なひかげです。

    本家版になっても、よろしくお願いします。

  2. ぼの :

    ひかげさん、こんにちは。お返事遅くなってしまってごめんなさいー。(>_< )
    そうなんですー。予定ではアップグレードはもっと先になるはず、、というか、当面 2.0.x に居残りのつもりでいたのですけれど、唐突にアップしたくなって、本家版になっちゃいました。。

    > 少し葛藤があるので、こちらはまだ ME です。
    バージョン毎に結構機能が違うから、自分に合っているバージョンから変えるのには躊躇しちゃいますよね。
    うちは半分実験サイトのまま突っ走っているので、2.3 ではここはどうなってるの?とか、気になることがあったらいつでも聞いてくださいねー。

    こちらこそ、これからもよろしくお願いしますー。書き込みありがとうございました。 :-)

コメントをどうぞ