WordPress MU(マルチドメイン)導入

2007/09/06 | SNS/CMS/ブログ

新規契約した3iX。いつものことだが、サポートチャットでいろいろ文句をつけて、ようやくなんとか正常動作にこぎつけた。うまく動いてしまえば、こっちのもん!。

動かないときに文句が言えない人はやめたほうがいいです。相手の気持ちも考えず文句を言ってしまえる人にはお奨めです。はっきり言ってサポートスタッフはお客をお客とも思ってないので、ガンガン文句言ったほうがいいです。文句を言う手間は省かなければ、この料金は激安です。

さて、一段落したところで、手持ちのライブラリをアップロードしたり、してると、急に・・・。
管理画面のcPanelがアップデート(?)してた(急に画面が変わったからびっくりした)。でもこれ、新しくなって使いやすい!。確認したところバージョンは「11.11.0-STABLE」となっていた。
以前はよくわからなかったのだが、新しくなってドメインを追加したりサブドメインを追加したりする際に、ターゲットとなるディレクトリを指定できるようになったらしい。これはチャンス!、と思って別で取得したドメインをアドオンとして登録した。このドメインをWordPress MU(マルチドメイン版)のテストとして使用するためだ。

まずはインストール。インストールに際して、ファイル群を眺めてみた。日本語対応をうたっているわけではないので、怪しそうなところがないかチェックするためだ。といっても1個だけ。htmlentitiesという関数が使われているかどうかチェックをしたのだ。ちなみにこの関数はすべてhtmlspecialcharsで置き換えた。実際は元の関数のままでも、別な箇所を変更することで対応できると思うけど、htmlentitiesは日本語環境では問題が出ることが多い。ということで事前に変換したのだ。

で、ファイルをアップロードし、インストール。とりあえず最低限、動くようになったらしい。まずは日本語のチェック、ということでデフォルトで投稿されている記事を日本語で書き換えてみた。・・・。だめじゃん。日本語が全部??????となってしまっている。でも、これはどこかで見た記憶がある。そう、昔MySQLのバージョン4.1を始めて使ったときの文字化けだ。ということで、データベースへの接続時にコマンドを一発飛ばすことにした。

SET NAMES binary

ファイル群を検索するとwp-includes/wp-db.phpでデータベース接続処理をやっていることがわかった。この中で、
$this->query(“SET NAMES ‘$this->charset'”);
な処理の記述があったので、この行をコメントアウトし、以下の行に書き換えた。
$this->query(“SET NAMES binary”);

はい。ファイルを置き換えてコレで終わり。
再度日本語で記事投稿してみて、うまく日本語が通ることが確認できた。
これからマルチドメインな使い方を試してみるつもり・・・。使い心地やカスタマイズは、都度このブログで紹介するかも・・・です。

性懲りもなく海外サーバ3iXを利用

2007/09/05 | 海外サーバ

以前、海外の格安レンタルサーバ3ixの記事を書いたが、依然として利用を続けている。サポートがすばらしいからだ。
今回新たにスペースを追加でレンタルことにした。本来は追加で借りなくても、管理画面からアップグレードすることで上位のサービス(容量もドメイン使用数もデータベース数も増量)にできるのだが、以前から使っているほうは、いろいろお試し用としてそのまま残しておき、新しいスペースを借りることにした。
今回借りたのはEXPERT PLANで、容量50GB!もあって月額5ドル(600円ほど?)。使い切れません。安いので思い切って2年契約してみた(長期契約割引あり)。EXPERT PLAN以降はドメインも無料で付いてくるので、ドメインも別途新規。これで2年間99ドル(1万2千円ほど)。激安だ。
まぁ、この容量を使い切れるかどうかわからなかったので、さらに上位のサービスは申し込まなかった。さらに上位のEXTREMEプランでは・・・月額8ドルで容量が500GBになる。これは自分にはとても使い切れない。

さて、サービス開通後早速サポートのお世話になった。PHPのmbstringモジュールが有効になっていなかったので、その依頼。依頼はサポートチャットから英語のチャットになるのだが、とにかく知ってる単語を並べる。向こうも英語が母国語でないユーザが多いようでお手の物。しかも依頼に対する返答が「今コンパイルしなおしてるから2、3時間したらアクセスしてみて」だった。そしてわずか10分後くらいにはmbstringが有効になっていた。すごい。

海外のレンタルサーバ 3ix

もう日本のサーバを借りるのは馬鹿らしいです。

WordPress

2007/09/04 | SNS/CMS/ブログ

最近おすすめのブログツールはWordPress。
ここしばらくはSerendipityに入れ込んでいたけれど、老舗ブログツールも使いやすい(すこしだけ癖があるけれど)。WordPressは古株だけあって、さすがに情報も豊富だし、テンプレート(テーマ)もたくさん配布されている。いつもテーマをあさっているサイトはここ。

http://themes.wordpress.net/

WordPressはいろんなバージョンがあって、今使っているのは「WordPressMe」と呼ばれる日本向け配布パッケージ。前述のように少し癖がある点はしょうがないとして、さすがにこなれている。使いやすい。最近はウェブベースで設定ファイルを作成するものが多いが、WordPressMeはあらかじめ設定ファイルを作成しておいてアップロードするタイプ。面倒といえば面倒かもしれないけれど、設置するディレクトリのパーミッションとか気にしなくていいので個人的には非常に気に入っている。

実は別のバージョンで注目しているものがある。それはマルチドメイン版のWordPressMUだ。こちらは複数ドメインを運用できるすぐれものだ。ただし、いくつか不満点がある。

○設定ファイルはウェブベースで作成するので、設置場所のパーミッション変更できる必要あり
○example.comというドメインを使用して運用する場合は、インストール時に必ずexample.comとしてインストールしないといけない
○データベースのテーブルがドメインごとに作成される(らしい)
○mod_rewriteが必要

最初の制約があるので、例えばロリポップで設置できない。これは二つ目にも関係がある。www.example.comという名前でインストールできない(wwwはいらない、とメッセージが出る)ので、サブフォルダを作ってどうこう・・・ということもできないのだ。
多分、別フォルダで適当にインストールするか、うまくやって、ルートディレクトリに設置しなおせば何とかなるような気もしている。

三つ目のような構成はあまり美しくない。だってサブドメインを増やせば増やすほどテーブルが増えるのだから。それぞれのブログが別々のテーブルになるので、RSS出力などデータの一元管理が必要な場合にはそれなりの工夫をしなくては成らない。

四つ目は、まぁ最近なら多くのレンタルサーバで利用できるだろう。でも、本当はmod_rewriteでやるのではなく、MTのようにHTML書き出しタイプがほしいなぁ、と思っていたりする。いろいろ調べたのだが、MTのようなHTML書き出しタイプのブログツールは、PHPでは見つけられなかった。どこかにあるのだろうか。もし「これこれ」なんていう情報があれば、コメントヨロシクです。

XMLを配列に・・・これが最適解かも

2007/09/02 | XML

結局「PHP Classes」を探し回った。一時は自分で書いてみようかとも思った。xml_parse_into_structすればキーと値の関係がわかるわけで、これを使えば力技で配列に格納できるからだ。しかし、その苦労をしなくてすんだ。その力技をそのまま記述してくれているスクリプトに出会うことが出来た。

http://www.phpclasses.org/browse/package/2938.html

とりあえず、このスクリプトを、自分好みのコーディングスタイルでキレイに書き換えてみた(中身は同じだけど)。サンプルもファイル内に書いておいた。オリジナルのファイルがGPLだから、これもGPLということで。
暇があったら試してみてください。要コメントということでっ!(^-^)。

class.XmlToArray.lzh

楽天APIを少し・・・(XMLを配列に)

2007/09/01 | XML

久しぶりに楽天のAPIをさわってみた。
どうやら、とうとうコンテンツマッチな広告が出せるようになった模様。コンテンツマッチ広告自体は通常の(google等と同様に)JavaScriptを貼り付けるタイプなのだが、これがAPIとしても提供されている。具体的には、APIからRESTでリクエストを送る際に、マッチさせたいページのURLを引数として渡すというもの(ちょっと目からうろこ)。
ただページ内容との一致具合はイマイチ。どうやらページ内のh1タグ(もしくはタイトル?)のみ重要視しているような感じ。本文にはあまりマッチしていないのだ。もうちょっと改善の余地ありだ。少し期待。

RESTで返される形式はXMLとJSON、希望の形式を選ぶことが出来るが、ここではXMLで受け取ることにした。処理をする場合、まずXMLを配列に落とし込むわけだが、以前紹介したxml_parse_into_struct関数を使うのもいいのだが、今回は別の方法を試した。といっても自分でゴリゴリスクリプトを書くのがいやなので、「PHP Classes」をあさってみた。あっさり希望のクラスを見つけた。

adv_xml2array

DOMXMLが使える環境にないといけないのだが、これすごい簡単!。

$obj=new xml2array($rakutenXML);
$xmlArray=$obj->getResult();

XMLデータを引数に与えてオブジェクトを生成するだけ。後はgetResultメソッドで配列に取り出すだけ。面倒な処理を一切必要とせず、XMLを配列に格納してくれる。ファイル構成もいたってシンプル。ファイルは「class.xml2array.php」を1つだけでいい。逆に配列からXMLを生成する場合は「class.array2xml.php」。

きっとDOMXMLが使えなくても、こんなふうにお手軽にしてくれるクラスがあるはずと思うので、時間が出来たらまた探してみることにする。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net