「WordPress」カテゴリーアーカイブ

WordPress MU 2.6から2.7へアップグレード

なにかと手こずらせてくれたWordpress MUだけど、2.7があまりにも魅力的なのでアップグレードしてみた。WPMU 2.6はいろいろと手を入れてきたので簡単にアップグレードできるかどうか不安だったけど、無事アップグレードできた。

一応WPMUサイトのアップグレードページを元に作業したんだけど、何かちょっと手順がおかしい。お陰様で試行錯誤したけど、最終的には以下のような手順になるんじゃないかな。

  1. WPMUのバックアップ
    これはDBのバックアップと、~/WPMU_backup のようなディレクトリを作って、その中に既存WPMUファイルを全てコピーする。
  2. 新しいWPMUファイルのダウンロード
    WPMU 2.7の圧縮ファイルをダウンロードしてきて、~/WPMU_new のようなディレクトリを作ってそこに展開する。
  3. 既存WPMUファイルのwp-adminとwp-includesディレクトリは残して、それ以外を全て削除する
  4. 新しいWPMUファイルを全て既存WPMUディレクトリにコピーする
    wp-adminとwp-includesディレクトリとそれ以下のファイルのほとんどは上書きになる。
  5. バックアップWPMUから.htaccessとwp-config.phpファイルをWPMUディレクトリにコピーする
  6. wp-config.phpファイルを以下のようにアップデートする
    • $base = ‘/’; の次の行に以下の設定を追加する。
      define('DOMAIN_CURRENT_SITE', 'yourdomain.tld'); // don't include "http://www." at the beginningyourdomain.tldにドメイン名を設定する。コメントにもあるように、”http://www.”などは設定しないように。
      define('PATH_CURRENT_SITE', '/'); // this should be the path relative to your domain. For instance, if your WPMU installation is located at 'http://www.example.com/blogs/', then the value of this constant should be set to '/blogs/' instead of just '/'トップディレクトリ以外のインストールの場合はディレクトリパスを設定する。
      define('BLOGID_CURRENT_SITE', '1');
    • 続いてWPMUのセキュリティ強化設定を追加する。
      define('ADMIN_COOKIE_PATH', '/');
      define('COOKIE_DOMAIN', '');
      define('COOKIEPATH', '');
      define('SITECOOKIEPATH', '');
    • define(‘SECURE_AUTH_SALT’… の次の行に以下の設定を追加する。
      define('NONCE_KEY', ''); // replace '' with value from http://api.wordpress.org/secret-key/1.1/
      define('AUTH_SALT', ''); // replace '' with value from http://api.wordpress.org/secret-key/1.1/
      これらのキーは実際にhttp://api.wordpress.org/secret-key/1.1/にアクセスすれば入手できるので、何も考えずに表示されたキーをコピペする。AUTH_SALTはないのでAUTH_KEYで代用する。
  7. サイト全体のブログにログインして、アップデート処理を実行する
    ログインしたら、サイト管理アップデートのリンクがあるのでたどって処理を進める。ちょっとだけ時間がかかる。

こんなところでしょうか。プラグインは停止させずにアップデートしちゃったけど、何事もなかったのごとく動いてる (^_^;;

jQueryで表示させている部分でレイアウトに少し乱れがある程度かな。これは以前CSSに手を入れたのが上書きされちゃったか、jQueryのバージョンが上がったからなのか今のところ不明。まあ、そんなに大きな障害ではないので追々調べましょう。こういうことを考えると、スタイルを変更するときは別ファイルを作ったほうがいいね。

やっぱり2.7はいいね。

WordPressのAmazonプラグイン

もうこの話題はいやと言うほどネットで出てるけど、やっぱり気になるしWordpressもAmazonも進化しているのでアップデートも必要。

以前はWordpressに標準的なWP-Amazonプラグインがあって、それを無理やり日本語化して使っていた。でも、Wordpress 2.6にはWP-Amazonは対応していないらしい。残念。と、引き下がっている場合ではなく、WP 2.6以上に対応したAmazonプラグインの探索の旅を始めた。

グーグル先生は真っ先にwp-tmkm-amazonを推薦してくれる。まあ様々なサイトがこのプラグインを導入しているようなので、よしこれにした、と思ったらこのプラグインの動作は特殊なタグを使ってAmazonの情報を埋め込む形をとっている。う~ん、できればWP-Amazonのようにプラグインの機能としてAmazonでの商品検索を行って欲しいもの。

でもまあ無いものねだりしてもしょうがないと諦めかけたその時、WordPress本家のプラグインをちゃちゃっと検索してみたら、ななななんとAmazon Reloaded for WordPressなるものがあるじゃないですか!! しかも、説明を見るとWP-Amazonの機能を踏襲しているとのこと。

早速いつものようにプラグインファイルをダウンロード、Wordpress Pluginディレクトリにプラグインディレクトリごと解凍、admin画面でプラグインの有効化を行ったら、WP 2.6.3であっさりと動いちゃった。そそそそして、驚くことに、WP-Amazonの機能を踏襲しているけど、AJAXを多用して無茶苦茶クールな出来栄えになってる!! これは関係なくともAmazonリンクを作っちゃいそうになる。

ちなみに、なぜかAmazon Reloaded for WordPressはadmin画面のAmazon Reloaded設定画面でアフィリエイトIDを入れないときちんと動かない。まあ、ID持っているから良かったけど。

WordPress MUのプラグイン

WordPress MUには二つのプラグインがある。mu-pluginsとplugins。mu-pluginsはすべてのブログに対して無条件に有効になるのに対して、pluginsでは普通のWordpress同様にブログ管理者が任意に有効/無効を切り替えることができる。

で、pluginsのほうはWordpressでも馴染み深いが、mu-pluginsはドキュメントがあまりない。フォーラムでの投稿を読み漁るとどうもmu-pluginsにディレクトリ毎放り込む形のプラグインは動かないとのこと。確かに見よう見まねでWordpress流のプラグインディレクトリをmu-pluginsに作って、中に極シンプルなプラグインを入れても動かない。mu-pluginsフォルダ直下に移動させると動く。

WordPress MU用プラグインはファイル名を統一するか、代表となるファイル一つと残りのファイルをディレクトリに入れるかのどちらかになるのかな? これはどうやら実際に試してみないといけないな。mu-plugins直下にファイルがワサワサあるのは好きじゃないけど、代表ファイル+ディレクトリはWordpressの流儀ではないし。。。

WordPress MU 2.6.3インストールのはまりどころ

実はWordpress MUをインストールするだけならそんなに大したことはない。フォーラムを見ているとホスティングサーバにインストールするのにてこずっているケースはちらほらあるけど。

けど、いざブログを作ろうと思うと作れない。いや、作成に成功したようなページが表示されるし、設定自体は正常に保存されている。実はブラウザに表示されないだけなのである。かなりふかくはまったのが.htaccessを有効にさせるところ。Wordpress MUは、Sub-directoryでもSub-domainでも同じだと思うけど、Apacheのmod_rewriteと.htaccessによって仮想的に複数のブログが存在するかのように振舞う。で、.htaccessが利用できるようApacheに設定が必要なのだった。それがDirectoryのAllowOverrideで、これはデフォルトではNoneになっている。これはようするに、.htaccessによる設定を無効にする働きがある。これを面倒なのでAllにした。

たとえば、/etc/apache2/sites-available/defaultで、DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory />

<Directory /var/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory />
などと設定する。

これで小一時間悩んでしまった。。。

あと、これはreadme.txtにも書いてあるけど見逃しがちなのがインストールディレクトリの注意。http://user.blog.domain.comやhttp://hoge.domain.com/blog/userとしてアクセスできるようにインストールするにはダウンロードして展開したディレクトリ wordpress-mu-2.6.3 を blog にリネームしないといけないということ。

今は無事ブログもユーザも問題なく作れて、普通のWordpressのテーマを適用させて、これからプラグインを試してみようとしているところ。。。

WordPress MU 2.6.3のインストール

WordPress.comのようなマルチユーザのサイトを作ってみたいな。。。 と思ってググるとWordpress MUなるものがあるそうな。Wordpressは1.x時代から使ってるけど、真剣に調べたのは初めてだったりする。

WordPress.comはAkismetのAPIキーをゲットするために登録して少し使ったことがあるけど、なかなかいい。WordPress MUを使っているとのことだから、これは試してみないといけませんね。

テスト用にVMを用意して、ゲストOSはUbuntu 8.04.1 LTS Server x64を入れてある。tar.gz版を /home/user/puglic_html にダウンロードして、解凍する。そうすると wordpress-mu-2.6.3 というディレクトリができるので、wordpress-muとリネームしてどうせテスト環境なので http://127.0.0.1/wordpress-mu としてアクセスすることにする。ちなみに、http://localhost/wordpress-muでアクセスするとlocalhostではインストールできないと怒られる。なぜだろ。。。

http://127.0.0.1/wordpress-muにアクセスするといろいろと指示が英語で書かれているんだけど、ようするに

  • 空のデータベースを作ってね
  • /home/user/public_html/wordpress-mu /home/user/public_html/wordpress-mu/wp-contentのアクセス権を 777 にしてね
  • Apacheのmod_rewriteが有効にしてね

ということを言っている。

順に作業すると、ます空のデータベースは、
$ mysql -u user -p
パスワードを入力
> create database wordpress_mu;
> quit
で作る。ちなみに、データベース名に “-” は使えないらしい。アクセス権は$ chmod 777 /home/user/public_html/wordpress-mu /home/user/public_html/wordpress-mu/wp-contentを実行すればOK。Apacheのモジュール有効化は$ sudo a2enmod rewriteのコマンドを実行する。

ちなみに、Wordpress MUの複数のブログをサブドメイン別(blog1.domain.com, blog2.domain.com …)にするのか、サブディレクトリ別(www.domain.com/blog1, www.domain.com/blog2 …)にするのか決める必要がある。サブドメイン別にするとDNSの設定とか必要だから、面倒だからサブディレクトリ別にする。フォーラムによるとサブドメイン型が推奨されているけど。。。

そのあと再び http://127.0.0.1/wordpress-mu にアクセスするとSub-domains/Sub-directories, Database Name, User Name, Password, Database Host, Server Address, Site Title, Emailを聞かれるので正しく設定するとadminのパスワードとログインページへのボタンが表示される。あと、アクセス権は755に戻してとも言われる。$ chmod 755 /home/user/public_html/wordpress-mu /home/user/public_html/wordpress-mu/wp-contentとアクセス権を元に戻す。

パスワードをコピーしてボタンを押すと、見慣れたwordpressログインページが現れる。すべて英語でメニュー構成もwordpressとちょっと違う。まずはusersのadminのパスワードを変更しよう。

次に、日本語化を行おう。ここはwpmu-jaに2.6.2用の日本語化情報および言語ファイルがあるので、書いてあるままに作業する。ちなみに、日本語を選択する箇所は2つあって、settingsのlanguageとsite admin→optionのlanguage。あと、日付のフォーマットも「Y/n/j l」に変更。これは普通のWordpressと同じ。

この後はテストサイト/ユーザの作成、プラグインの導入とテーマの設定かな。とりあえず、今回はここまで。

WordPressでページを公開できない

そういえばWordpressって、ページ作れるんだっけ。作ってみっか、って作ってみたけどなぜか公開できない。公開ステータスを「公開済み」に設定はできるけど、それじゃ公開されない。そもそも「公開」のボタンが表示されない。

それじゃとりあえず作ったページは削除ね、と思ったら今度は「あなたのユーザー権限ではこのページの削除はできません。」と冷たく突き放される。いや、本当にそんな感じのするグレー一色に白地のバックグラウンドに一行だけのページが表示される。

ググってみると、”管理者なのに新規にページが公開できない原因”とか、”あら、こんなところに落とし穴”に同じ症状の人がいた。このWordpressはまっさらインストールに旧データを流し込んだから、まあ怪しいといえば怪しい。

さらにググってみたら、自分のサイトが出てきた (^_^;;;
wp-optionsテーブルのoption_nameエントリの”wp_user_roles”のoption_value項目を弄ったんだけど、どうも参照したサイトの情報が古かったらしく、Wordpress 2.5.1の設定を欠いていたようだ。上にググったサイトに2.1用の設定でとりあえず更新してみたらうまくいった(いいのか、こんな行き当たりばったりで。。。)

ちなみに、書き換えた設定は以下のとおり。a:5:{s:13:"administrator";a:2:{s:4:"name";s:27:"管理人 - (Administrator)";s:12:"capabilities";a:47:{s:13:"switch_themes";b:1;s:11:"edit_themes";b:1;s:16:"activate_plugins";b:1;s:12:"edit_plugins";b:1;s:10:"edit_users";b:1;s:10:"edit_files";b:1;s:14:"manage_options";b:1;s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:6:"import";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:8:"level_10";b:1;s:7:"level_9";b:1;s:7:"level_8";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:12:"delete_users";b:1;s:12:"create_users";b:1;}}s:6:"editor";a:2:{s:4:"name";s:20:"編集者 - (Editor)";s:12:"capabilities";a:34:{s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;}}s:6:"author";a:2:{s:4:"name";s:20:"投稿者 - (Author)";s:12:"capabilities";a:10:{s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;s:22:"delete_published_posts";b:1;}}s:11:"contributor";a:2:{s:4:"name";s:25:"寄稿者 - (Contributor)";s:12:"capabilities";a:5:{s:10:"edit_posts";b:1;s:4:"read";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;}}s:10:"subscriber";a:2:{s:4:"name";s:24:"購読者 - (Subscriber)";s:12:"capabilities";a:2:{s:4:"read";b:1;s:7:"level_0";b:1;}}}

WordPress 2.0.2 ME to 2.5.1

長い間躊躇していたWordpressのアップグレードを行うことにした。でも、2.0.2 MEから2.5.1へとかなり大きく変わることと、2.0.2 MEが変則的にインストールされていることが大きなハードル。というのも、文字コードがEUCであるのにMySQLテーブルはUTF8という、今までよく文字化けしていなかったな、という不思議な構成になっている。phpMyAdminでDBの中を見てもバケバケ〜な状態。

アップグレードはサーバを新しく立てるので、そちらのほうで試行した。さすがに本番マシンでぶっつけで行うほど度胸はない。

まず、DBのバックアップをとる。いろいろと試行錯誤した結果、うちの構成の場合はWordPress Database Backup 日本語版プラグインを導入して、それでバックアップするのがベストだと分かった。まあ、phpMyAdmin、Webminでもバックアップをとっておくほうがいいとは思う。そして、すべてのプラグインを無効にして旧Wordpressのファイル一式をバックアップする。

その次にいよいよWordPress 2.5.1をダウンロードして、既存のファイルに対して上書きする。wp-config.phpは2.5.1のものをベースに新たに設定し直した。この時点で/wp-admin/upgrade.phpを起動しても、一見アップグレードはうまくいくようだけど、当然文字化けの嵐。

DBをダウンロードする時の文字コード設定、インポートするときの文字コード設定などを数限りない組み合わせで試したけど、もともとの構成が変則的だったためか、文字化けは一向に直らない。

そこで試したのがnkf。$ sudo apt-get install nkfでインストールして、Wordpress Database Backupにて作成したダンプファイルの文字コード変換を行う。$ nkf -w dumpfile > dumpfile.utf8文字コードが変換されたダンプファイルをphpMyAdminでインポートする。あ、もちろん、あらかじめDB(wordpress)をutf8-unicode-ciの照合順序で作っておく必要がある。

すると今度はphpMyAdminでDBの中を見るとちゃんと日本語が文字化けせずに見える!! これは感動(って、これが当たり前なんだけど・・・)。早速 /wp-admin/upgrade.phpにアクセスして、アップグレードを行う。やった〜〜! 文字化け解消〜!! と、喜ぶのは早い。まだ若干文字化けが残っている。それは以前のthemeでindex.phpとrecent-comments.phpに全角を使った修正を行っていたのだった。これらも同じく nkf -w で文字コードを変換すればOK!(index.phpのあるディレクトリにて)
$ mv index.php index.php.euc
$ nkf -w index.php.euc > index.php
(recent-comments.phpのあるディレクトリにて)
$ mv recent-comments.php recent-comments.php.euc
$ nkf -w recent-comments.php.euc > recent-comments.php

やれやれ、これで直った、と思った矢先にまたもや不具合。今度はログインができない。「このページにアクセスするための十分なアクセス権がありません。」とかなんとか言われる。ここはやはり先人の知恵を拝借しましょう。このサイトがまさしくこの回答であり、このサイトのphpMyAdminにてDBを直接いじる方法で解決した。備忘録的に書くと、phpMyAdminでwordpress DBのwp-optionsテーブルのエントリで、option_nameが”wp_user_roles”というものがある。そのoption_value項目をa:5:{s:13:"administrator";a:2:{s:4:"name";s:9:"管理人";s:12:"capabilities";a:30:{s:13:"switch_themes";b:1;s:11:"edit_themes";b:1;s:16:"activate_plugins";b:1;s:12:"edit_plugins";b:1;s:10:"edit_users";b:1;s:10:"edit_files";b:1;s:14:"manage_options";b:1;s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:6:"import";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:8:"level_10";b:1;s:7:"level_9";b:1;s:7:"level_8";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;}}s:6:"editor";a:2:{s:4:"name";s:9:"編集者";s:12:"capabilities";a:19:{s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;}}s:6:"author";a:2:{s:4:"name";s:6:"作者";s:12:"capabilities";a:8:{s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;}}s:11:"contributor";a:2:{s:4:"name";s:9:"寄稿者";s:12:"capabilities";a:4:{s:10:"edit_posts";b:1;s:4:"read";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;}}s:10:"subscriber";a:2:{s:4:"name";s:9:"協力者";s:12:"capabilities";a:2:{s:4:"read";b:1;s:7:"level_0";b:1;}}}に書き換える、というもの。

これで一件落着。

新しくしてから若干動作が重くなってるけど、旧テーマをそのままにしているし、プラグインもアップデートしていないから、追々手を加えていきましょう。

そして400スパム/日を切った

どうしちゃったんだろう???

あきすめっとにしてからのスパム数の伸びが尋常で無かったけど、この減りようも不気味。

バックアップファイルも4MB超だったものが今や3.1MB程度。このサーバは空き容量が200GB程度あるからファイル容量が問題だったわけでは無くて、このサイトのほとんどをスパムが占めていると言うのは気にくわないわけで。