MovableType 5.2b2 を nginx + PSGI/Plack @ Mountain Lion な環境で動かす

MovableType 新版のベータ版がリリースされています。新バージョンの目玉はなんと言っても nginx + PSGI/Plack 環境に対応し、大幅な高速化が図られたことです。

Movable Type ベータ
http://www.movabletype.jp/beta/52/index.html
nginx – Wikipedia
http://ja.wikipedia.org/wiki/Nginx
PSGI/Plack – Perl Superglue for Web Frameworks and Web Servers
http://plackperl.org/

バージョンアップするに辺り、今まで Apache で運用してきた環境をそのまま生かすため、静的コンテンツは Apache で、動的コンテンツ(MovableType の .cgi)は Starman + PSGI/Plack で動かすことにします。PSGI/Plack 自体は Web サーバを選ばないのですが、MovableType 5.2 のドキュメントによると Starman がいいらしいです。

さらに nginx を Reverse Proxy として使うので、図に書くとこんな感じ。

Continue reading

Mountain Lion で Image::Magick と PHP のトラブル

前回 やっと MovableType の起動までこぎ着けたのですが、まだまだ動作がおかしいです。

MovableType 起動!しかし……

MovableType が起動したのですが、今度は Image::Magick が見つからないとか申しよります。いいよ、もう。わかったって。入れ直せばいいんでしょ。

$ brew doctor
# brew の状態もおかしかったので逐次修正。
$ brew -v install imagemagick
$ cpanm -v Image::Magick
(中略)
Magick.xs:60:10: fatal error: 'magick/MagickCore.h' file not found
#include <magick/MagickCore.h>
^
1 error generated.
make: *** [Magick.o] Error 1

以前もここで引っかかった気がするぞ。Makefile.PL を修正します。

Continue reading

Mountain Lion で Apache が起動しない?

前の記事 で MovableType のバックアップと、OS 自体のアップデートは完了しました。

で、マシンが再起動してローカルでサーバを見てみると、案の定、トップページがバグってます。

httpd.conf の設定

まあどうせ httpd.conf あたりが書き換わってるんでしょ? ってことで見てみると、(たぶん)以前のファイルが /etc/apache2/httpd.conf~previous にコピーされ、httpd.conf が新たに作成されていました。

diff とってみてみたところ、モジュールの記述が消えていたので、以下を追記しました。

LoadModule php5_module libexec/apache2/libphp5.so
LoadModule fcgid_module libexec/apache2/mod_fcgid.so

うん。これでも起動しません。Fastcgi の再インストールが必要です。

Continue reading

rsync と SSH で MovableType をバックアップする

このブログは Mac mini を使ったサーバーで運営しています。

本来サーバーの OS バージョンアップというのはリリースから時が立って慎重に行うべきなのでしょうが、元々個人の勉強ブログだし、トラブルも勉強の一つだよね、ってことでMountain Lion に速攻アップデート。

とはいえ、ブログ自体はバックアップ環境で動かしておきたいです。これを機に、スクリプト一つでバックアップを行うようにしました。

バックアップスクリプト

#!/bin/sh
SSH_KEY=/path/to/id_rsa
TOPDIR=/Library/WebServer/Documents
LOCAL_PERL=/usr/bin/perl
REMOTE_PERL=/path/to/perl
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/local/mysql/bin/mysqldump
DB_USER=foo
DB_PASS=bar

# MovableType を構成するファイルを rsync
# SSH でログインしてファイルをコピーする
for i in mt mt-static blog; do
    /usr/bin/rsync -e "ssh -i $SSH_KEY" -avz [email protected]:$TOPDIR/$i/ $TOPDIR/$i/
done

# Perl をインストールしているパスが違うのでスクリプトを修正
$LOCAL_PERL -i -ple "s/#!$REMOTE_PERL -w/#!$LOCAL_PERL -w/" $TOPDIR/mt/*cgi

# MySQL をリモートからローカルにバックアップしてリストア
ssh -i $SSH_KEY [email protected] "$MYSQLDUMP -u$DB_USER -p$DB_PASS mt | /usr/bin/gzip" \
    | /bin/zcat | $MYSQL -u$DB_USER -p$DB_PASS mt

# 最後に Apache を再起動
/usr/sbin/apachectl graceful

これで完了。DNS サーバーの設定を書き換えると、バックアップ環境での動作が確認できました。

さて、これから Mountain Lion のインストールに入るわけですが、それ自体はあっさり完了。ただ、その後にトラブルに見舞われたので、備忘録として書いていきます。

続く。

CSS でキーボードのキーのような装飾を

120725-0008.png

ここは Vim やらキーボードのネタが多いので <kbd> タグを多用するわけですが、ググったら丁度いいのがありました。


[CSS]キーボードのキートップのデザインを適用するスタイルシート -KEYS.css | コリス
http://coliss.com/articles/build-websites/operation/css/css-styling-key-top.html

CSS を一つ読み込みだけで <kbd> がぐっとかっこよくなります。

<kbd>あ</kbd>
<div class="light key">Option</div>
実行結果

Option

ただそのままだと、文中に置いた場合にちょっとだけずれてしまうので、調整しました。

kbd, .key {
    position: relative;
    top: -0.1em;
}

【Javascript】外部リンクに target=_blank を付ける

external-link-orange-dark03-Shapes4FREE.png

リンクがブログの外のものだったら target=_blank を付けて新しいタブで開くようにする jQuery コード。


$('.entry-content a[href^=http]')
    .not('[href*="' + location.hostname + '"]')
    .prop({target: '_blank'})
    .addClass('exlink')
;

ついでに exlink なるクラスも付加しています。以下のサイトを参考にしましたが、そのままでは動きませんでした。jQuery のバージョンの違いかね?

外部サイトへのリンクに target=_blank 属性を追加(jQuery) – せんむの技術ブログ
http://www.shikidahironori.jp/music/2011/01/target-blankjquery.html

おまけ

そもそも HTML4 〜 XHTML1.0 の時代は リンクを開くとき新しいウィンドウ(タブ)を使うかどうか利用者が決めるべき なんて言って HTML の仕様から target 属性が消えたりしました。

それが HTML5 の仕様では復活してます。まあ今時タブブラウザを使ってない方が少数派(スマートフォンを含んだとしても)ですもんね。

【MovableType】オンデマンドでブログに記事を投稿する

MovableType には cron を使って指定した時刻に記事の投稿を予約する機能があります。……はずが、なんかうまくいかなかったので別の方法を探していたところ、便利なプラグインを発見。

ほぼ指定日投稿(MT5用) – The blog of H.Fujimoto
http://www.h-fj.com/blog/archives/2010/01/20-094755.php

たとえば、明日の午前 09:00 に投稿を予約しておくと、09:00 の 少し後の 訪問者の閲覧と同時に記事が公開されます。

記事の公開(再構築)は結構重い処理なので、訪問者があるたびに実行するのではなく、一度実行したら最低 15 分は間隔が空くようです(だから「少し後」)。

Continue reading