WordPress の引っ越し方法色々

WordPress を使っていると、「レンサバの期限が契約期限が切れるんだけど、他のレンサバ会社に移ろうかなー」とか「そろそろレンサバやめて VPS or AWS にしようかなー」とか思ったりする時があると思うんですよ。
そんなとき「でも引っ越しメンドくさそうだしなー」とか思って諦めたりするひとも多いと思います。
そこで、しょっちゅうサイトの引っ越しをしている私が引っ越し方法を解説。
基本は「WordPress をインストールしてあるディレクトリ以下のファイルを全部コピー」と「MySQL データをダンプ&インポート」するだけですが、その辺を簡単にやる方法をまとめます。
続きを読む

2012年の人気記事トップ10

去年 に引き続き、今年も dogmap.jp でこの1年で良く読んでもらった記事をあげてみます。
去年同様、ページビュー上位10記事だと1番アクセスがあったのは、去年どころか2009年のこの記事になっちゃうんですが、2012年に書いた記事と、去年のランキングに入っていない 2011年に書いた記事にしぼって10件ほど。

去年に引き続き、WordPress の高速化ネタが多いですね。
続きを読む

EC2 インスタンス起動時に自動で EIP をセットする (AWS Advent Calendar 2012 20日目)

12/1からクリスマスまで、1人ずつリレー形式でブログ記事を書く AWS Advent Calendar 2012 の20日目です。
去年・一昨年は、WordPres Advent Calendar 2011PHP Advent Calendar 2010 に参加しましたが、今年は AWS Advent Calendar に参加します。

さて EC2 インスタンスに EIP (固定IP)を設定して運用するケースって多いと思うんですよ。
しかし EC2 のインスタンスでは、一度停止した後再起動すると EIP が外れてしまいます。
一時的にスケールアップしたくて、インスタンス停止して再起動とかいうオペレーションは、まま有ると思います。
その時に EIP を associate し忘れて「あら、サイトに繋がらないわ」なんてうっかりミスをすることも多いと思います。
そんな、うっかりさんのために EC2 インスタンス起動時に自動で EIP を設定するための方法を解説したいと思います。
続きを読む

WordPress の wp_insert_post() とかを使いやすくするツールを作りました

既存の独自 CMS とかのデータを WordPress に移行する際に、csv に落として CSV Importer とかを使うことが多いと思います。
ただ、これだとかゆい所に手が届かないとか、細かく設定できないとか、往々にしてあると思うんですよ。
そんな時は、wp_insert_post() とか wp_add_post_tags() とか wp_insert_attachment() とかを駆使して移行プログラムを書いたりするんですが、微妙に使いづらいので、これらをラップして使いやすくするクラスを作って、github で公開しました。

wokamoto/wp_post_helper

簡単な使い方は memo.dogmap.jp にも書いたんですが、あっさりとしすぎてるので、ここにも書いておきますね。
以下、使い方
続きを読む

WordCamp Philippines 2012

WordCamp Philippines 2012 に行ってきた

シンガポールでの AWS イベントの次は、マニラで行われた WordCamp Philippines 2012 に行ってきました。
今回、僕らだけでなく、Nao さんとか、AWS の堀内さん、メッサリバティの篠原さん、GMO さんなど、日本からの参加者がいっぱい居て現地スタッフが「あいつら、なんか間違って登録したんじゃないの?」とかって思ったらしいです。

WordCamp PhilippinesWordCamp は、フィリピンでは4回目の開催になるそうです。
Cebu 島から、わざわざフィリピン入りした方も居るようで、フィリピンでの WordPress コミュニティも中々盛り上がってる感じです。
参加者からの質問も多く、中には5〜6分自分の言いたいことを言ってる人も(あんた、それ質問とちゃうやろ!)。
参加者・スタッフ共に、一体感のある良いイベントでした。
最初のサプライズプレゼント(座ったイスの裏に当たり券が貼ってある)とか、最後のプレゼント大会でもハッシュタグ #wcph2012 でツイートした人の中から Twicket という Web サービスでランダムで選ばれるとか、工夫されてて楽しかったです。
この Twicket ってサービス良いですね、イベントの最初に告知しておけば、イベント中のツイートを促進させる効果があると思います。
これ、ちゃんと独自ドメインにして、動きつけたりしたら面白そうなサービスです。
続きを読む

シンガポールで JAWS-UG Sg Meetup と WordPress ハンズオンに行ってきた

シンガポールの AWS オフィスで行われた二つのイベント、JAWS UG Singapore MeetupAWS hands-on in Singapore に行ってきました。
海外の IT 系イベントは初めてだったので、中々興味深かったです。

JAWS-UG Singapore Meetup では、シンガポールで仕事をしている日本企業の担当者の方々とお会いしました。
ブイキューブの塗師さんの講演は、中々興味深かったです。
障害対策として AWS の東京リージョンとシンガポールリージョンをまたいでファイル同期してるとか。
あと、OSSの分散ファイルシステム Gluster も興味深かったです。
試してみよう、そうしよう。

網元紹介してもらいましたWordPress ハンズオンでは、AWS の堀内さんとウチの小賀さんに WP Booster網元 を紹介していただきました。
以外だったのは、一般での AWS の認知度が低かった点。
AWS のシンガポールリージョンは、東京リージョンよりも前からあったので、もっと浸透してるのかと思ってたんですが、法人利用の方が多くて個人利用は少ないんですかね?
まぁ、初心者向けハンズオンなので来場していただいた層が、たまたまそうだっただけかもです。
# 日本でも、個人利用はまだそんなに浸透してないですしね。
WordPress に特化した網元とか WP Booster は、個人でも AWS 利用するハードルを下げてくれると思うので、こちらを頑張って浸透させたい感じです。
続きを読む

Amazon ElastiCache

WordPress で Amazon ElastiCache を利用する

手軽に memcached サーバを使うことができる Amazon ElastiCache を WordPress で使用するための方法を解説します。
# なんか、あまり日本語での説明とか見つけられなかったんで

WordPress には Object Cache って機能があって、複雑なデータベースクエリなどの生成に負荷のかかるデータをキャッシュすることができます。
ただ、この Object Cache でキャッシュされるデータは永続的な物ではなく、キャッシュされたデータはすべてのページをまたいで使用される訳ではありません。
このキャッシュされたデータを永続的に使用するための特殊なプラグイン(正確には、ドロップイン)は、いくつか提供されています。
今回は、それらのプラグインの中で memcached にキャッシュデータを貯めておくことができる Memcached Object Cache を使います。

以下 Amazon ElastiCache の設定方法から、Memcached Object Cache の導入方法まで
続きを読む

mod_pagespeed

mod_pagespeed を試してみました

Google の Apache サーバ向け高速化モジュール mod_pagespeed の最初の安定版がリリースされました。

折角なので WordPress で試してみました

mod_pagespeed の設定は、デフォルトのままです。

比べてみてもらうと分かるんですが、CSS、JS、画像のファイルサイズが小さくなってます。
幾つかの画像は、すでに Yahoo! Smush.it で最適化されているので、それほど違いがありません。
しかし、Yahoo! Smush.it を適用していない以下の画像は mod_pagespeed を通したものと通していないものでは、ファイルサイズに差が出ています。

また、CSS は Minify するだけでなく、複数 CSS を結合後、小さい画像ファイルは自動でデータURIスキーマに変換してくれたりします。

これらを、特に意識することなく勝手にやってくれるのでラクチンですね。
以下、インストール方法。
続きを読む

WordPress のDB上のサイトURLを一気に変換

WordPress を、別サーバに移行するにあたってサイト URL を変更したい時があります。
例えば、開発環境から本番環境に移行する時とか

そんな時は、以下の SQL 文を発行することで wp_posts 内のデータを一発で置換できます。

UPDATE `wp_posts`
 SET post_content=REPLACE(post_content, "{旧URL}", "{新URL}")
 where post_content like "%{旧URL}%";

ただ wp_options とか wp_postmeta とかにはシリアライズされたデータが入っていることもあるので、これらはそのまま置換するとまずいです。
(シリアライズデータの中には、文字列の長さとかも含まれてるので)
そこで、シリアライズされたデータは一度アンシリアライズしてから置換して、シリアライズした後に DB に書き戻してやる必要があります。
ただ、手作業でこれやってるとかったるいので、それらを自動で行う PHP スクリプトを作りました。
https://gist.github.com/3627972
上記の gist から download するなり raw データを取得するなりして、PHP スクリプトを取得してください。
以下、使い方
続きを読む

WordCamp Tokyo 2012

WordCamp Tokyo 2012 と PHP Conference 2012 に行ってきました

9/15 に大田区産業プラザ PiO で合同開催された WordCamp Tokyo 2012PHP Conference 2012 に行ってきました。
新しい試みのブースも盛況で、中々楽しかったです。
僕はというと PHP カンファレンスの方で「NGINX + PHP」ってセッションをやらせていただいたり(開始時、ぐだぐだになってしまいすいません)、WordCamp Tokyo 2012 の方で「AWS ハンズオン」のお手伝いをさせていただいたりしてました。

PHP カンファレンスでやったセッションのスライドはこちら

回を重ねる毎にドンドン大規模になって行くイベントですが、大きな混乱も無く、今年も非常に楽しかったです。
スタッフとして関わった方々、お疲れさまでした&ありがとうございました。