WordPress MU と /server-status

3月 4th, 2010

WPMU を利用しているサイトに munin をセットアップしたところ /server-status へのアクセスができなくてはまりました。

http://example.com/server-status へアクセスすると WPMU トップページへmod_rewrite によってリダイレクトされてしまいます :cry:
色々なサイトに記載されている設定を試してみましたが思うように行かず mod_rewrite 以外の方法で何とかしようか…と悩んでいたところHF164.comさんの記事を読んで解決できました :smile:

# for server-status
RewriteCond %{REQUEST_URI} =/server-status
RewriteRule ^.*$ server-status [L]



hf164さんありがとうございます、助かりました :smile:

WordPress に GoogleAnalytics コードを挿入するプラグイン

2月 5th, 2010

前回に続き
また勉強と実務を兼ねて WordPress に GoogleAnalytics 用のコードを
挿入するプラグインを作ってみました :smile:


CMS として WordPress を使ってサイトを作成しているので、開発中はテスト用の
コード、リリース後は本番用のコードと切り替える必要があります。



また、リリース後も開発環境はテスト用コードを使い続けるので切り替えを
簡単にできるようにしたかったのです :smile:


管理画面で PC 用のウェブプロパティID、ktai_style 用のウェブプロパティID を
セットして、ktai_style のテンプレートで ks_wp_head(), ks_wp_footer() を
有効化すればOK



すでに同じようなプラグインはありますが自分で作ってみました :cool: このサイトでテスト中です… :mrgreen:

年末年始の目標を達成できました!

1月 5th, 2010

年末に目標を立てました。(しょぼい目標ですが)

  1. 荷物を片付ける
  2. 仕事ができる環境を作る
  3. WordPressのプラグインを作る

  • 1. 荷物を片付ける


  • 年末に引越しをしたので全てのダンボールから荷物を出して、快適に(?)暮らせるようになる事を目標としました。
    全てのダンボールを開けて片付けなくても生活をスタートする事もできたのですが、最初にやらないとずーっとやらないと思ったのでガンバリました :razz:


  • 2. 仕事ができる環境を作る


  • これは当たり前の事で目標にするまでもないのですが、色々と大変でした :sad: 事情があって引越しをしてすぐに仕事部屋が使えなかったので別の部屋にPCを置いて使う時だけPCをルータに接続して、それ以外はノートPCで乗り切りました :mrgreen: 今は仕事部屋で仕事ができる状態になって快適です :razz:


  • 3. WordPressのプラグインを作る


  • 以前から作ってみたかったのですがなかなか着手できなかったので、年末年始時間があるので作ってみました。

    作成したプラグインはコメントスパムを検知して自動的に「承認待ち」か「spam」にするモノです。
    「承認待ち」にするか「spam」にするかはプラグインインストール後管理メニューから選択できるようにしました。
    spam判定は単純に英数字記号のみのコメントはspam扱いにします :cool:
    少しだけ自分でテストは行ったのですが、本物のspamコメントをちゃんと検知できるかこのブログでテストをしてみます。
    akismetを停止して作成したプラグインをインストールしました :mrgreen:
    とこんな記事を投稿したら英数字記号以外のspamコメントが増えるかもしれませんね… :cry:





とりあえず小さいながらも目標を達成できて2010年は良いスタートとなりました。
今年もがんばります :smile:

WordPress 予約投稿

11月 26th, 2009

WordPress の予約投稿が上手くいきませんでしたが、解決できました :smile:
ただし cron と wget が使える事が前提条件となります。


例えば blog の URL が http://example.com/myblog/ だった場合、
example.com 上で、cron から wget で以下のように wp-cron.php に
アクセスすると上手くいくようです。

* * * * * wget http://localhost/myblog/wp-cron.php \
--header="Host: example.com"



私は WordPress MU で全てのブログで予約投稿ができるように
以下のようなスクリプトを作成して cron から実行しています。
(WordPress MU 2.8.4a で実際に使っています)

#!/bin/sh
MYSQL=/usr/bin/mysql
OUT=/tmp/wp-cron.out
paths=`$MYSQL --user=DBユーザ名 --password=DBパスワード -D DB名 \
-e "SELECT path FROM wp_blogs" -N -s`
 
for path in ${paths[0]}
do
wget http://localhost${path}wp-cron.php \
--header="Host: example.com" \
-O $OUT
\rm -f $OUT
done



上記スクリプトに実行権(chmod +x)をつけて cron から実行しています。

* * * * * /usr/local/path/to/wpcron.sh



今のところ問題なさそうです :smile:
:!: スクリプトに MySQL のパスワードなどが記述されているので注意してください
:!: スクリプトは自分だけ、または管理者だけが読めるようにしましょう :mrgreen:

sendmail nocanonify

7月 13th, 2009

サーバのドメインをサブドメインに変更したらメールを受信してブログ記事を
投稿する処理がエラーになってしまう現象が発生 :cry:
開発用のサーバなので良かったのですが :neutral:
調べるのに結構時間がかかってしまったのでメモ。

調べてみたところ記事投稿用アドレスにサブドメインを付けると
sendmail がサブドメインを削除していて、メールアドレスの
validate でエラーになっている事がすぐに分かりました。

原因が分かったのですぐに解決できると思い軽い気持ちで、
Google で「sendmail アドレス書き換え」などで色々と調べてみましたが
答えに辿り着く事ができませんでした :cry:

そこで基本に帰ってアドレステストモードしてみました。

# /usr/sbin/sendmail -bt -C/etc/mail/sendmail.cf
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> /parse foo@sub.example.com
Cracked address = $g
Parsing envelope recipient address
canonify           input: foo @ sub . example . com
Canonify2          input: foo < @ sub . example . com >
Canonify2        returns: foo < @ example . com . >
canonify         returns: foo < @ example . com . >
parse              input: foo < @ example . com . >
Parse0             input: foo < @ example . com . >
Parse0           returns: foo < @ example . com . >
ParseLocal         input: foo < @ example . com . >
ParseLocal       returns: foo < @ example . com . >
Parse1             input: foo < @ example . com . >
Recurse            input: moblog
canonify           input: moblog
Canonify2          input: moblog
Canonify2        returns: moblog
canonify         returns: moblog
parse              input: moblog
Parse0             input: moblog
Parse0           returns: moblog
ParseLocal         input: moblog
ParseLocal       returns: moblog
Parse1             input: moblog
Parse1           returns: $# local $: moblog
parse            returns: $# local $: moblog
Recurse          returns: $# local $: moblog
Parse1           returns: $# local $: moblog
parse            returns: $# local $: moblog
2                  input: moblog
2                returns: moblog
EnvToL             input: moblog
EnvToL           returns: moblog
final              input: moblog
final            returns: moblog
mailer local, user moblog
>


※ moblog というのはブログを投稿する為の alias です


canonify2 で sub が削除されている事がわかりました :!:
そこで今度は Google で「canonify」を検索したところ情報が出てきました。

RBBTODAY

sendmail.mc に nocanonify を追加して sendmail を再起動して解決できました :mrgreen:
FEATURE(nocanonify)dnl




基本に立ち返る事が基本 :!:

WordPress MU のライブラリを CLI から使う時の注意

6月 5th, 2009

このブログではないのですが、ktai_entry の inject.php を使って受信したメールから記事を投稿できるようにしました :mrgreen: その時に気がついた事です。

inject.php から WordPress MU のファイルを沢山読み込むのですが、
その中に wpmu-settings.php ファイルがあります。

wpmu-setings.php の中に以下の記述があり、WordPress MU は CLI から利用する事を想定していないようです。

if( defined( "WP_INSTALLING" ) == false && constant( 'VHOST' ) == 'yes' && !is_\
object( $current_blog ) ) {
// NOBLOGREDIRECT が define されていたら NOBLOGREDIRECT へリダイレクト
// NOBLOGREDIRECT が define されていないならサインアップへリダイレクト
die();
}



つまり CLI からアクセスすると wpmu-settings.php を読み込んだ時点で die() してしまいます。

CLI のときには上記処理へ行かないようにして回避しました。

if( defined( "WP_INSTALLING" ) == false && constant( 'VHOST' ) == 'yes' && !is_\
object( $current_blog ) && isset($_SERVER['REQUEST_METHOD']) ) {
// NOBLOGREDIRECT が define されていたら NOBLOGREDIRECT へリダイレクト
// NOBLOGREDIRECT が define されていないならサインアップへリダイレクト
die();
}



使っている WordPress MU のバージョンは 2.7.0 です。

他にもいくつか気がついて手を加えた箇所があるので暇を見て書いく予定です :smile:

テーマデザイン

3月 24th, 2009

テーマデザインを変更しました。

フランスのモンサンミッシェルで撮った写真を使いました :mrgreen:

500

msm bird



WordPress XHTML validator

1月 17th, 2009

一度公開した記事のソースが見たくて編集をしようとしたところ
編集ができなくなってしまいました!

色々と調べてみたところ以下のようなプロセスが沢山動いている事に気が付きました。

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
apache   11688  0.0  0.0  4440  996 ?        SN   00:46   0:00 xmllint --nonet --xmlout --
encode UTF-8 -


xmllintでピンときました!

先日WordPress XHTML validator というプラグインをインストールしていたのでそれが原因?

install instructions に tidy が必要と書いてあったのですが、
無くても動いているようだったので無視していた事を思い出しました。

そこで tidy をインストールしたところ解決しました :smile:
ちゃんとインストールしないとダメですね :lol: