さくらインターネットからSharkSpaceに移行するのに一番の問題がMySQLでした.MySQLは4.0と4.1とで文字の扱いが大きく変わっています.また,MySQLの文字の問題は環境によって様々なケースがあり,これをすれば良いという解決方法がありません.きちんと現状を把握して,それぞれの環境に合わせて解決するしかありません.詳しくは日本MySQLユーザ会のWikiを参照してください.ここではMySQL-4.0, 3.X を現在運用しているひとは原則今のままキープ,と言われてしまっています.

色々試行錯誤の結果,私の場合は,”さくらのレンタルサーバで MySQL 4.0 から 5.1 へ移行した記録“が参考になりました.以下に手順を書きます.

まず,私の場合,MySQL4.0の設定はujisでしたが,データ自体はutf8にしていました.そのため,データをそのまま取得する必要があります.そこで,敢えて5.xのmysqldump を使い,–default-character-set=utf8を指定することでうまくいきました.mysqldump-4.0はutf8に対応していないため,5.xのを使う必要があります.実行時に一つ文句を言ってきましたが,問題はないようです.

$ mysqldump --user=user --password=pass --host=db --default-character-set=utf8  dbname > dump

次にdumpファイルの中に記述されている以下の行をsedなどで全部除きます.

SET @saved_cs_client     = @@character_set_client;
SET character_set_client = @saved_cs_client;

その後,dumpファイルの最初に以下の行を加えました.これでdumpをリストアするときの環境をutf8にしてくれます.

SET names utf8;

ここまで準備できたら,SharkSpaceのcPanelでデータベースの設定をします.cPanelは日本語化されているのでやり方はすぐわかると思います.Panel内にデータベースの項目がありますので,そこでデータベースとデータベース用ユーザを作成し,ユーザに権限を与えれば良いです.データベースはusername_hogeというデータベース名であればいくらでも作れます.

また,phpMyAdminで作成したデータベースを選択し,操作 -> 照合順序のところで utf8_general_ci を選択しておきました.

最後にsshでアクセスして,mysqlコマンドでリストアすればOKでした.

$ mysql --user=user --password=pass --host=host dbname < dump

当サイトをSharkSpaceというホスティングサービスに移転完了しました.

さくらインターネットのスタンダードを今まで使っていましたが,色々問題がありました.まず,重かったです.特に管理画面が重く,いつまで待っても編集できないということが良くあったため,更新するのが億劫になっていました.また,自分がさくらを使い始めたときにはMySQL4.0.xしかなかったのですが,WordPress2.9からMySQL4.0をサポートしなくなったので,アップグレードできずにいました.現在さくらでもMySQL5.0.xが使えるのですが,どちらにしろ移行作業をしないといけないので,移転先を探していました.私が望んでいた要件は以下の通りです.

  1. ssh
  2. WordPressの速度
  3. MySQL5
  4. 容量 (Disk・転送)
  5. 価格

1. のsshがなかなか厳しい条件です.何故か未だにsshを提供しない,または条件付きのホスティングサービスが多いのです.sshでアクセスするのは基本だと思うのですが,この条件でかなり選択肢が減ります.国内で且つ低価格でsshを提供するのはさくらかxrea系列くらいです.また,4. Disk容量については,さくらスタンダードの3GBでは足りなかったのと,月の転送量が10GBを越えてきたので,それを余裕を持って上回るものを探す必要がありました.

この条件で探すと国内では割高なので,海外のホスティングサービスを中心に探していました.その中で,安定した評判を得ていたのはBlueHost系列 (BlueHost, HostMonster, FastDomain)でした.値段も6-7USD/monthからと,そこそこです.sshを使うには,アカウント作成後にPhoto ID (パスポートなど)を登録する必要があるというのが面倒ですが,それ以外は良さそうでした.

試しにHostMonsterとかを使ってみようかと思っていたところで,SharkSpaceという,聞いたことのないホスティングサービスを推薦しているサイトを見つけました(海外サーバーコレがイチばん!).読んでみるとなかなか良さそうなことが書いてあるので,海外のホスティングサービスフォーラムとかも見てみたところ,確かに地味に評判が良さそうでした.個人的にはsshがPhoto IDなしでいけそうだというところと,値段が安いことに惹かれて,使ってみることにしました.

値段は,真ん中のHammerheadコースの2年契約だと7.95USD/月(190.80USD/2年)なんですが,50%offクーポン(クーポンコード: 50offlife)があるので,3.975USD/月(95.4USD/2年)になります.今1USD=90JPYなので,大体360円/月です.これは安い.これでDisk容量が20GB,データ転送が500GBあります.PHPもモジュールで動きます.さくらのようにCGIモードではありません.

契約してわかったことですが,残念ながらsshを使うにはやはりPhoto IDが必要でした.仕方がないのでiPhoneでIDを写真に撮って,手続きしました.5分程ほどでsshアクセスできるようにしてくれたので,応対は良いですね.

今のところ,不満点はPhoto IDだけで,それ以外はかなり快適に使っています.まだcronで動かしているスクリプトがあるのでしばらくさくらも使いますが,少しずつ移していこうと思っています.

以下は参考サイトです.実際のMySQLの移転作業については別途まとめます.

Twitterのログで普通の内容が埋もれてしまっていたので,以前からTwitter Toolsやめたいなとつぶやきつつ,なかなか踏ん切りがつきませんでした.しかし,ここ最近の1000日記念書き込みでTwilogを知り,割と満足したのでTwitter Toolsによる毎日の更新はやめることにしました.Twitter Tools自体をOffにしてしまうと,ブログの投稿時にtwitterに書くという機能も無くなってしまうので,ログ取りだけOffにしました.

ちなみに自分はまだ996日だったようで,他の人より1週間くらい遅く始めたということですね.後4日で1000日.何がきっかけでアカウント取ったのかもう覚えていないですが.

昨日記事を投稿するときにwp-tmkm-amazon pluginが動かなかったのですが,原因は8月からAmazon APIが認証を要求するようになったのに,wp-tmkm-amazonが開発停止となっていて対応できていないからでした.

調べたところ,wp-tmkm-amazonプラグイン配布というページで,別の方が対応したバージョンをダウンロードすることができます.以前のを削除し,これをインストールすればOKです.

また,Amazon APIの認証のために,Amazon Web ServicesでAccess Key IDとSecret Access Keyの対を取得する必要があります.

HNS: Hyper NIKKI SystemとtDiaryで昔日記を書いていたのですが,ある時点で全公開はどうなのかなと思うようになったので,mixiの中に閉じて書いていました.しかし,最近またオープンにしたほうが良いと思えるようになってきたので,過去日記の一部を公開しようかと考えています.

HNSからtDiaryには既にデータ移行してあるので,tDiaryからWordPressに移行する方法を探していました.どうやら,多くの人が,tDiary からMovable Typeへの移行にあるスクリプトによってtDiaryからMovableType形式に変換することで,WordPressに取り込んでいるようでした.

私はtDiaryでWiki記法を使っていたため,変換用スクリプトにいくつか修正を加えました.またいくつか不具合も修正しました.修正点は以下の通りです.

  • * のリスト形式を<ul><li>で置換
  • [[|]]をリンクに変換
  • EUC-JP/UTF-8の問題解決 (tDiaryをWordPressに移行する(1))
  • 日付が全部1970年1月になる問題を修正
  • 最初から公開するようになっているのを,下書き状態で保存するように変更

変換に使用したスクリプトとパッチを以下に置いておきます.

参考URL

以前のエントリで言っていた、Wp-MixiPublishermixiに投稿できないバグが取れました。user_can_edit_postがdeprecatedだったのが原因のようです。以下のパッチでとりあえずこのハッスルサーバーでは問題なく投稿できるようです。


--- wp-mixipublisher.php.backup 2008-07-29 15:05:00.000000000 +0900
+++ wp-mixipublisher.php        2008-07-29 16:15:33.081006700 +0900
@@ -112,7 +112,7 @@
     function publishToMixi($postId) {
         global $wpdb, $user_ID;

-        if(!user_can_edit_post($user_ID, $postId)) {
+        if(!current_user_can('edit_post', $postId)) {
             return $postId;
         }

修正後のwp-mixipublisher.phpをzipにして置いておきます。これは二つの変更(1, 2)もすでに適用されています。
wp-mixipublisher.zip

Wp-MixiPublisher 1.0.0 RC2というプラグインがあるのを知ったので試していたましたが、うまく投稿できません。mixiのWordPressコミュニティによると、変更版に差し替えて、さらにこの修正を行えばよいらしいですが、、動いていない人も多数います。どうもPHP5だと動き、PHP4だと駄目なようで。確かにここで使っているハッスルサーバーもPHP4。

@ITのPHP5とPHP4の変更点の記事(a,b)を見ましたが、大きな変更点はオブジェクトの代入らしい。そこらへんが間違っているんでしょうか。