前回 MovableType 5.2b2 を nginx + PSGI/Plack で動作させるところまで行きました。この方式では、以下の図のように動的コンテンツは Starman(PSGI/Plack)で、静的コンテンツは従来通り Apache で配信されます。
このとき、/mt
直下にある .cgi
ファイルは Starman で元気に動いているのですが、この前導入した「ほぼ指定日投稿プラグイン」を動かすことが出来ませんでした。
前回 MovableType 5.2b2 を nginx + PSGI/Plack で動作させるところまで行きました。この方式では、以下の図のように動的コンテンツは Starman(PSGI/Plack)で、静的コンテンツは従来通り Apache で配信されます。
このとき、/mt
直下にある .cgi
ファイルは Starman で元気に動いているのですが、この前導入した「ほぼ指定日投稿プラグイン」を動かすことが出来ませんでした。
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 として使うので、図に書くとこんな感じ。
前の記事 で 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 の再インストールが必要です。
このブログは 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 のインストールに入るわけですが、それ自体はあっさり完了。ただ、その後にトラブルに見舞われたので、備忘録として書いていきます。
続く。
ここは 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>
ただそのままだと、文中に置いた場合にちょっとだけずれてしまうので、調整しました。
kbd, .key { position: relative; top: -0.1em; }
リンクがブログの外のものだったら 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 には cron
を使って指定した時刻に記事の投稿を予約する機能があります。……はずが、なんかうまくいかなかったので別の方法を探していたところ、便利なプラグインを発見。
ほぼ指定日投稿(MT5用) – The blog of H.Fujimoto
http://www.h-fj.com/blog/archives/2010/01/20-094755.php
たとえば、明日の午前 09:00 に投稿を予約しておくと、09:00 の 少し後の 訪問者の閲覧と同時に記事が公開されます。
記事の公開(再構築)は結構重い処理なので、訪問者があるたびに実行するのではなく、一度実行したら最低 15 分は間隔が空くようです(だから「少し後」)。