MovableType: 2009年11月アーカイブ

bakebake.jpgいや、まあ、MySQL に限ったことじゃないけどな。

PostgreSQL にしても、バックアップしてリストアしたデータが化けちゃうってのは良くあることで、まあ、最初の原型作ったヤツらにとっては英語が全てなわけで、その後多言語化のために色々な仕組みが継ぎ足されたわけだから、問題が起こって当たり前って感じもしますが。
日本語だけでも、何個のコード体系があるんだよ、実際。(^^;

今回の MovableType の移行でもハマったぁ!

mysqldump によるバックアップ時と、mysql によるリストア時の、default-character-set の指定だけで何とかならんかいなと色々やったんだけど、結局、

mysqldump --default-character-set=binary -u hoge -phoge mtos > mtos_20091106.dump

で、文字コード変えずにバックアップして、mtos_20091106.dump を一旦ローカル PC にダウンロード。
で、秀丸エディタを使って中身を修正。

修正箇所は、

DROP TABLE IF EXISTS `mt_ts_job`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `mt_ts_job` (
  `ts_job_jobid` int(11) NOT NULL AUTO_INCREMENT,
<略>
  KEY `mt_ts_job_funccoal` (`ts_job_funcid`,`ts_job_coalesce`),
  KEY `mt_ts_job_funcrun` (`ts_job_funcid`,`ts_job_run_after`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;

この、「ENGINE=MyISAM DEFAULT CHARSET=latin1;」の部分。
ここが、latin1 になってるので、utf8 に修正する(テーブルの数だけ。40箇所くらいかな)。
「ENGINE=MyISAM DEFAULT CHARSET=utf8;」という具合に。

で、これを新サーバにアップして、

mysql --default-character-set=utf8 -u hogehoge -p mtos < mtos_20091106.dump

とリストアする。

この方法以外ではどうすることも出来なかった。

ああ・・・面倒臭い、面倒臭い。元の MySQL の設定にも依存しちゃうし、なかなかすっきりいかないもんですなあ。
次に遭遇した問題が、mt.cgi の実行で、

Connection error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

というエラーが発生しちゃう件。

いや、確かに、旧サーバでは Socket ファイルを /var/lib/mysql 以下に作成していたけど、新サーバでは /tmp の下に作成してる。だから、'/var/lib/mysql/mysql.sock' を使ってソケット通信しようとすれば、そりゃあエラーになるよ。

・・・が、決め打ちなの?(^^;

どこかで指定してるのかと思い、grep しまくったけど結局 '/var/lib/mysql/mysql.sock' を固定的にセットしている部分は見つからず。
でも、まあ、どっかに記述があるんだろうな・・・

別に、/tmp 以下にこだわっているわけではないので、ディレクトリを /var/lib/mysql に変えてもいいのだが(/etc/my.cnf の socket = /tmp/mysql.sock の記述を修正するだけだし)、何となく悔しいので MovableType 側で対応することに。

結局、mt-config.cgi に環境変数として path を記述するのが一番スマートな気がしたので、

DBSocket /tmp/mysql.sock

という記述を追加。
これで、件のエラーは発生せず、正常に管理画面を使うことが出来るようになったのである。

・・・が、そんな俺に、新たな敵が。
あ、いや、新たな問題が・・・
まず遭遇したのが、httpd-vhosts.conf の記述間違い。

これは、まあ、単純な俺のミスなのだが、実はミスったのが以前作業をしたとき(別の VirtualHost の追加をしたとき)なのだ。ただ、設定をしたものの、結局この VirtualHost 設定を行ったホストはまだ動かしてなかったので、ミスに気づかなかったのである。
で、そのミスが今回の作業に悪影響を及ぼしたと。

まあ、そういう話なのだが、うまくいかなかったらやっぱり今回追加した記述の部分のみ重点的に調べるじゃん。なので、なかなか問題を見つけることが出来ず、小一時間くらい悩んだのである・・・とほほ。

新サーバの httpd-vhosts.conf に、blog.netandfield.com の VirtualHost 設定を追加し、Apache の再起動をしたのだが、http://blog.netandfield.com/shar/ にアクセスしてもエラーになってしまうのである。

一応、今回追加した設定の ErrorLog や CustomLog の記述どおりにファイルが作成されているので(0 バイトなのが気になるが)記述内容は有効になっているようだ。
・・・が、アクセス出来ない。

結局、これは以前追加した VirtualHost の設定を間違えて、本来、

ServerName hogehoge.exsample.com

としないといけないところに、今回追加したホストと同じ

ServerName blog.netandfield.com

というホスト名を書いてしまっていたのである。
そのため、本来の blog.netandfield.com の VirtualHost 設定が使われなかったのだな。とほほ。

いや、ほんとに、特に何のエラーも出ないのでハマってしまった。
前回作業した時に、blog.netandfield.com の VirtualHost 設定を元ネタにしたのが敗因だったよ。(^^;
当社は現在インターネット上にサーバが 2台あり、そのうちの一台でブログを公開していたのである。
が、そのサーバが手狭になってきたため、ブログも含めて当社関連のサービスはもう一台のサーバに移すことにしたのだ。

んで、会社のオフィシャルな Web とメールに関しては二ヶ月ほど前に移行していたのだが、社長ブログである「電気ウナギ的○○」のみ、移行せずに元のサーバに置いたままになっていたのである。
理由はただ面倒臭かったから。(^^;

・・・が、さすがにそろそろ移さないとなあ・・・ということで、今日の午後から移行作業を行ったのである。

新旧サーバで、ディレクトリ構造などはほとんど一緒なので、手順としては、

(1) 旧サーバの DocumentRoot 以下のファイルを tar ball にして新サーバに持ってくる。
(2) 旧サーバと同じ場所にファイル展開。
(3) 旧サーバの httpd-userdir.conf の内容(ブログサーバの部分を)新サーバの httpd-userdir.conf にコピー。
(4) 旧サーバの MySQL データをバックアップ(ダンプする)。
(5) 新サーバで、ブログ用の DB 及びユーザを作成。
(6) 旧サーバから MySQL ダンプデータを FTP で GET。
(7) 新サーバ上で MySQL データをリストア。
(8) Apache の再起動。
(9) DNS を切替(blog.netandfield.com が新サーバに向くように)。

という簡単なものなので、まあ、楽勝だろうなあ・・・と思っていたのだが・・・ハマった・・・(^^;
昼過ぎからやってたのだが、やっと先ほど正常に動作するようになった。

いやあ、ほんとに、サーバ作業では色々思わぬ問題が発生します。

つーことで、備忘録代わりに別エントリに発生した問題をまとめておくことにしよう。
tsubuyaki.jpgTwitter のプロフィール情報(プロフィール押した時に表示される発言一覧)を表示するウィジェットをブログ(MTOS)に貼ってみる。

まずは、ウィジェットの HTML を取得する必要がある。

Twitter活用術→ウィジェットの画面(http://twitter.com/widgets)にアクセスする。
ちなみにこの画面、うちの InternetExplorer8 on Windows Vista Business SP2 の環境では正常に表示されない。
左の「Widgets for...」のメニューが表示されないのだ。
つーことで、俺は Firefox でアクセスした。

で、「自分のサイト」の「プロフィールウィジェット」を選択する。
設定画面が開くので、自分の環境に合わせて設定を行う。
俺は、「デザイン」で色を自分のブログに合わせ、「サイズ」で横幅をブログの右ペインの幅に収まるように、250→198 に変更。そして、ディフォルトでは 4つである表示するつぶやきの数を 5つにした。「Preferences」の「Number of Tweets」のところね。

そして、「完了&コード取得」ボタンを押せば、HTML が生成される。

ここから後は、MTOS のウィジェットの貼付手順どおりに作業をすればいい。
Nike+ のブログツールをサイドバーに」を参考にしてみてちょ。

取得した HTML ソースは、おきまりの <div> タグで囲っておくこと。

(例)
<div class="widget-twitter widget">
    <div class="widget-content">

<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<script>
new TWTR.Widget({
  version: 2,
  type: 'profile',
  rpp: 5,
  interval: 6000,
  width: 198,
  height: 300,
  theme: {
    shell: {
      background: '#e3b200',
      color: '#ffffff'
    },
    tweets: {
      background: '#ffffff',
      color: '#2e230b',
      links: '#f03c28'
    }
  },
  features: {
    scrollbar: false,
    loop: false,
    live: false,
    hashtags: true,
    timestamp: true,
    avatars: false,
    behavior: 'all'
  }
}).render().setUser('Shar6507').start();
</script>
    </div>
</div>


いやぁ、簡単ですねえ。MovableType へのウィジェットの追加。
エムロジック放課後プロジェクトで開発された PostToTwitter プラグインを MTOS に組み込んでみた。

方法は簡単で、

・エムロジック放課後プロジェクトのサイトから「MovableType用PostToTwitterプラグイン」の最新版をダウンロード
・ダウンロードしたファイルをパソコン上で展開。
・plugins ディレクトリの下にある PostToTwitter ディレクトリを、MTOS の plugins の下に全てアップ。
・プラグイン設定画面で、Twitter のユーザ名、パスワードを設定。

これだけ。

俺の場合は、エントリーを公開した後でも、けっこう「てにをは」の間違いなんかを頻繁に直すので、「エントリーの状態を未公開(下書き)から公開に変更した場合に投稿します。」にチェックを入れる。

これで、俺の Follower の皆さんはご存じのように、うちの MTOS の上で問題なく動いている。

いやあ、しかし、エムロジック株式会社さんは良いですねえ。こんな良い物をどんどん公開されて。うちのブログでも、他に EasyPodcasting を使わせていただいてます。
本当に、感謝、感謝です。:-)
nike_tool2.jpgということで、サイドバーの幅を Nike+ ブログツールの 198px(余白が 20px 付くので、218px 以上にせんと駄目かな?)に合わせて広げることにした。

[デザイン]→[テンプレート]で、ブログのテンプレート画面を表示。
「スタイルシート(styles.css)」を表示してみると、中身はなくて mt-static/themes-base/blog.css を import してる。

で、一覧から blog.css を探してみたけど、全然見つからないんですけど。(^^;
FTP で GET して、ローカルで直したものをまた PUT するのかね?

ま、そうしてみる。

ブログの公開ページのソースを見てみると、
<body class="mt-main-index layout-wt">
となっているので、blog.css の 164行目からの Wide-Thin のスタイル指定を変更する。

具体的には、

/* Wide-Thin */

.layout-wt #alpha {
    width: 750px;
}

.layout-wt #beta {
    width: 190px;
}

となっているのを、

/* Wide-Thin */

.layout-wt #alpha {
    width: 720px;
}

.layout-wt #beta {
    width: 220px;
}

と変更するだけだ。

修正したら FTP で PUT。

これで、ばっちり、Nike+ ブログツールが表示されるようになるのであります。
nike_tool.jpg他の人のブログで、Nike+ のブログツールの存在を知ったので、是非とも俺のブログにも貼りたいものだ・・・と思ったのだが、これが、Nike+ のサイトからなかなか見つからないのよ。
で、やっと、「旧デザインの Nike+ サイト」から配布ページに到達。
う~む・・・新しいデザインのサイトから到達出来ないってことは、いずれ、このウィジェットのサービスは止めるつもりなのかな?>Nike

でも、まあ、取りあえず今は動くので、早速貼り付けてみることに。

以前、サイドバーに携帯ブログの QR コードを埋め込んだときは「サイドバー (2カラム)」テンプレートを直接修正したし、おっぱいバレーのブログツールは、「サイドバー」テンプレートを直接編集して貼り付けたが、今回は正しい MovableType の作法に則ってみた。(多分)

まず、[デザイン]→[ウィジェット]でウィジェットの画面に移動し、「ウィジェットテンプレートを作成」をクリック。新規作成画面へ。

Nike+ のサイトでコピーしたブログツール貼付用の HTML を、

<div class="widget-nike-plus widget">
    <div class="widget-content">

と、

    </div>
</div>

で囲んで保存。

次に、ウィジェットの画面に戻り、(俺のブログに合わせて)ウィジェットセットの「2カラムのサイドバー」を選択。

そしたら、ウィジェットセットの編集画面で、右側に表示されている「利用可能」一覧の中にある「Nike Plus」をドラッグして、左側の「インストール済み」一覧の「掲載したい位置」まで持って行くだけ。
「変更を保存」すれば、これで新たに作られるブログページには、Nike+ のウィジェットが表示される。

楽勝じゃん!

・・・と思ったのだが、ああん、サイドバーの幅より、Nike+ ブログツールの幅の方が広いじゃん!はみ出してるよ!

さて・・・

このアーカイブについて

このページには、2009年11月以降に書かれたブログ記事のうちMovableTypeカテゴリに属しているものが含まれています。

前のアーカイブはMovableType: 2009年10月です。

次のアーカイブはMovableType: 2009年12月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら