WinXPローカルでXAMPPを使ってMovable Typeを動かす―2010年3月版 その2

前回に引き続き、XAMPPでMovable Typeを動作させるチュートリアルの第2弾です。

  1. XAMPPのインストール、Apacheの設定
  2. ActivePerlのインストールと設定、MySQLの設定
  3. ImageMagickのインストール、Movable Typeのインストール

今回はActivePerlのインストールと設定、MySQLの設定を行います。

  1. ActivePerl のダウンロードページにアクセスし「ActivePerl DOWNLOAD NOW」をクリックして次のページに進みましょう。

    ActivePerlのダウンロードページ

  2. プラットフォーム別のダウンロードファイルの一覧が表示されます。一番上のRecommended version(s) for your platformにリストアップされている ActivePerl 5.10.1.1007 for Windows (x86) をダウンロードします。
    お使いのWindowsが64bit版である場合、ActivePerl 5.10.1.1007 for Windows (64-bit, x64) を選択します。

    ActivePerlのダウンロードページ

  3. ダウンロードしたインストーラを実行しましょう。インストールウィザードが開始されます。

    ActivePerlのインストールウィザード

  4. ライセンス規約に同意(I accept the terms in the License Agreement)を選択し、「Next」をクリックします。

    ActivePerlのインストールウィザード

  5. インストールするプログラムと、インストールするディレクトリを設定します。インストールするディレクトリはデフォルトで C:\Perl\ になっていますが、これを C:\usr\ に変更します。「Browser」をクリック。

    ActivePerlのインストールウィザード

  6. ディレクトリの選択画面となるので、「Folder name:」の欄に C:\usr\ と入力し、「OK」をクリックします。

    ActivePerlのインストールウィザード

  7. 「Location:」に C:\urs\ が正しく設定されたかを確認し、「Next」をクリックします。

    ActivePerlのインストールウィザード

  8. オプションを選択する画面になります。特に変更せず「Next」をクリックします。

    ActivePerlのインストールウィザード

  9. これで設定は終わりです。「Install」をクリックしてしばらく待ちます。

    ActivePerlのインストールウィザード

    ActivePerlのインストールウィザード

  10. インストールが完了したら、「Finish」をクリックしてインストールウィザードを完了します。

    ActivePerlのインストールウィザード

  11. さて、前回の記事の環境の通り、D:\htdocs\site1 というディレクトリを http://site1.localhost/ というローカルホストドメインで参照できるようにし、ここで開発を行うことを前提に話を進めましょう。

    サイトのルートディレクトリ(D:\htdocs\site1)に Movable Type(ここではMTOS 5.01) のファイルを展開し、mtos というディレクトリ名をつけます。

    MTOSのファイルを展開

  12. 念のため、インストールしたPerlが正しく動作するか確認してみます。テキストエディタを開いて以下のコードを記述し、C:\test.pl というパスで保存します。(あくまで例です。実際はどんなパスでもOKです)

    #! /usr/bin/perl
    print("It works!\n");

    Perlのテストプログラムを作成する

    これをコマンドプロンプト(※1)で以下のように入力し、Enterキーを押して実行します。

    perl c:\test.pl

    Perlのテストプログラムをコマンドプロンプトから実行してみる

    入力の次の行に It works! と表示されれば正しく実行できたということです。

    Perlのテストプログラムをコマンドプロンプトから実行してみる

    ここまでくればMovable TypeのCGIプログラムをひとまず表示はできる環境になっています。(※2

  13. http://site1.localhost/mtos/mt-check.cgi にブラウザからアクセスします。ここまでの作業が正しくできていれば、MTのシステムチェック画面が表示されるはずです。

    mt-check.cgiでのシステムチェック結果

  14. この時点では Movable Typeの構成ファイルが見つかりませんでした。 というメッセージが表示され、まだMovable Typeが正しく動作しないことが分かります。ページをスクロールしていくと、DBD::mysql というPerlモジュールがシステムにインストールされていないことが分かります。これは MySQL データベースを使用するために必要となるモジュールです。

    mt-check.cgiでのシステムチェック結果

  15. では DBD::mysql モジュールをインストールしましょう。コマンドプロンプトを起動し、ppm と入力しEnterキーを押します。

    コマンドプロンプトでppmを起動する

  16. すると「Perl Package Manager(略称PPM)」が起動します。Synchronizing Database…(データベースと同期中) とステータス表示されてしばらく固まるので、じっと待ちます。

    GUI ppmの操作画面

  17. 同期が完了して操作できるようになったら、画面左上の「View all packages」アイコンをクリックします。

    GUI ppmの操作画面

  18. そして画面上部の検索エリアに dbd-mysql と入力しましょう。すると中央のモジュール一覧に DBD-mysql と表示されるはずです。

    GUI ppmの操作画面

  19. リストアップされた DBD-mysql を右クリックし「Install DBD-mysql 4.011 + 」を選択します。これでインストールするモジュールの一覧に登録されます。

    GUI ppmの操作画面

  20. 画面右上の「→(Run marked actions)」アイコンをクリックします。

    GUI ppmの操作画面

    すると Ready to install 1 package? とアラート表示されるので「OK」をクリックします。

    GUI ppmでインストールの確認アラート

  21. しばらく待つと、DBD::mysqlモジュールのインストールが完了します。

    GUI ppmの操作画面

  22. もう一度ブラウザで mt-check.cgi にアクセスしてみましょう。サーバーにDBD::mysqlがインストールされています と表示され、エラー表示になっていなければOKです。

    mt-check.cgiでのシステムチェック結果

  23. では今度はMySQLの設定を行っていきます。今回インストールするMTOS用のデータベースを作成しましょう。まずXAMPPコントロールパネルでMySQLが「Running」状態になっていることを確認し、「Admin」ボタンをクリックします。

    XAMPPコントロールパネル

  24. するとブラウザでphpMyAdmin(MySQLデータベースをブラウザから操作できるツール)が開きます。「言語 – Language」に「日本語 – Japanese」が設定されていることを確認し、ユーザ名、パスワードを入力してログインしましょう。ここでのユーザ名は rootパスワードは前回の記事のStep16でXAMPPの管理画面から設定したパスワードになります。

    phpMyAdminのログイン画面

  25. phpMyAdminにログインすると、様々なメニューが並んだ画面が表示されます。ページ中ほどにある「新規データベースを作成する」という入力フォームから、今回使用するデータベースを作成しましょう。

    左のフィールドにはデータベース名を入力し(今回は「mtos5」とします)、隣のプルダウンメニューでデータベースの文字コードを選択します。ここでは「utf8_general_ci」を選択してください。このプルダウンメニューが結構長いのですが、一番下の方にあります。そして「作成」ボタンをクリックします。

    phpMyAdminの操作画面

  26. データベース mtos5 を作成しました。 と表示されたら完了です。

    phpMyAdminの操作画面

以上でActivePerlのインストールと設定、MySQLの設定までが完了し、今回の記事はここまでです。次回はImage Magickのインストール、そしていよいよMovable Typeのインストールを取り上げます。

  • ※1 コマンドプロンプトは、スタートアップメニューから「ファイル名を指定して実行」(もしくは「Windowsキー + r」)で cmd と入力してEnterキーを入力すると起動することができます。
  • ※2 Movable Type を含む、Perl言語で書かれた大抵のCGIプログラムはデフォルトでPerlを /usr/bin/perl というパスで参照するように書かれています。(ファイルの冒頭にPerlのパスが記述されています)Step5~7でActivePerlを C:\usr\ というパスを指定してインストールしたことにより、Perl が /usr/bin/perl で参照できるようになります。

XAMPP for Windows環境でPerlのパスを /usr/bin/perl にする

XAMPPをインストールしたまんまだと、perlは以下のところにあります。

C:\xampp\perl\bin\perl

つまりperlのパスは以下のようになります。

/xampp/perl/bin/perl

cgiファイルを1個1個開いてパスを変更するのは正直面倒くさいので(それに本番環境と同じファイルが使えないということにも)、なんとか解決することができないかググってみるとやはりありました
シンボリックリンクを設定するソフトウェアを導入すれば解決するらしい、ということでこちらから早速ダウンロード&インストール。

C:\xamppディレクトリとC:\ディレクトリ(というかCドライブルート)を両方エクスプローラーで開いて、C:\xampp\perlフォルダを右クリックしてC:\の方に、ドラッグアンドドロップ。右クリックメニューに「リンクを作る」というのが追加されているのでこれを選択。するとCドライブルートにperlフォルダが作られます。これがC:\xampp\perlへのシンボリックリンクです。

「リンク作成シェル拡張」を使う様子

このままではパスがおかしいのでC:\perlフォルダ(シンボリックリンク)をusrにリネーム。するとperlのパスは

/usr/bin/perl

になるというわけ。

シンボリックリンクで作ったディレクトリは、エクスプローラー上でも普通のフォルダと同じように扱えます。そして、シンボリックリンクとなるフォルダ自体を削除すれば、リンクを解除することができます。

Perl始めました

初めてのPerlもう12月も半ばに差し掛かり、今年も残すところあと20日程度となりました。
昨月くらいから「今年やり残していること」を考えていたのですが、今年1月にPerlを学ぼうと言ってたにも関わらず特にアクションを起こしていないことに気づき、取り組んでみることにしました。

手始めに会社に転がっていた(?)「プログラミングPerl」をかじってみたのですが、硬派な内容でなかなか読み進むことができず、途方に暮れてしまいました。そこで少し情報収集してみたところ、Perlの入門書としては「初めてのPerl 第5版」が有力であり、その上位版として「プログラミングPerl」があるということが分かりました。
しかも「初めてのPerl」はつい最近(2009年10月)に第5版に改訂されているということが分かり、嬉々としてAmazonで購入。現在、最初から読み進めつつ、章末の演習問題に取り組んでいます。年内に半分くらいまでは読めたらいいなぁ、と思っています。とりあえず目標は低めで。

初めてのPerl 第5版
初めてのPerl 第5版
posted with amazlet at 09.12.11
Randal L. Schwartz Tom Phoenix brian d foy
オライリージャパン
売り上げランキング: 5310
プログラミングPerl〈VOLUME1〉
ラリー ウォール ジョン オーワント トム クリスチャンセン
オライリー・ジャパン
売り上げランキング: 138874

PageButeプラグインで静的ページ分割

明けましておめでとうございます。
本年もこのサイトをどうぞよろしくお願いいたします。
遅ればせながら新年のご挨拶。2009年の初エントリーです。

昨年は転職という大きな転機を迎えましたが無事乗り越え、今に至っております。一昨年に引き続きスクールで講師を務めたり、雑誌に寄稿させてもらうという経験もでき、充実した一年となりました。

さて、年始の挨拶はここまでで・・・ここから本題です。
昨日MTの案件をやっていたのですが、アーカイブページ分割の作業をすることとなり、いろいろと調べていました。

MTが<MTEntries>で書き出すアーカイブ一覧は、lastnモディファイアなどで設定された値を上限に記事を順番に出力します。ただし、上限値を超える数の記事が登録されていた場合、超えた分の記事は表示されないという不親切な仕様となっています。
この上限値を超えた分を「次のページへ」などとして参照できるようにするのがページ分割です。ページ分割を実現するには、専用のプラグインを導入するのが一般的になっています。

MTPaginateプラグインが使えればこのサイトと同じやり方でできるのですが、PHP化はされていないし、商用利用は有料ということでボツに。そこで、PageButeプラグイン(現バージョン:3.2.2)を使うことにしました。

このPageButeプラグイン、PHP化していなくても使えるとあって、静的HTMLとしてページを書き出してくれます。例えば「index.html」を分割設定すると、「index_2.html」、「index_3.html」…というようにページを自動的に増やしてくれるという、素晴らしいプラグインです。

公式ページを見て導入はあっさりできたのですが、シンプルであるが故に任意に設定できる項目が少ない印象を受けました。

このプラグインで書き出す<$MTPageLists$>は、分割後の各ページへのリンク一覧を書き出すMTタグですが、リンクテキストとなるページ番号は必ず昇順(1、2、3…というように1から始まる)になります。今回の案件ではこの番号を降順(10、9、8…というように最後の番号から始まる)としなければならなかったので、プラグインを改変して解決しました。

この改変をすると、リンク一覧に並ぶリンクテキスト(ページ番号)が降順になります。順番が入れ替わるのはリンクテキストのみで、記事の並び順自体は変更されません。動作確認をしたのはMovableType 4.23に、改変したPageBute 3.2.2をインストールした環境です。

改変した点は以下の通りです。

  1. PageBute.pl の182行目?189行目のforループの部分を以下のように変更

    my $temp_page_count = $lists->{max_page};
    for (my $i = $lists->{min_page}; $i <= $lists->{max_page}; $i++) {
    $page_lists .= $i == $lists->{min_page} ? '' : $delim;
    $page_lists .= $pb->{link_start};
    $page_lists .= $i == $page_count
    ? "<span class=\"current_page\">$temp_page_count</span>"
    : &_create_link($i, $site_url . $filename, $file_ext, $temp_page_count, 'link_page');
    $page_lists .= $pb->{link_close};
    $temp_page_count--;
    }

    最大ページ数を格納する変数をもう1個作って、ループの度にデクリメントして、リンクの名前として代入してあげます。

  2. MTテンプレートの<MTPageContents>タグを以下のように変更。

    <MTPageContents count="10" navi_count="999">

    countモディファイアには1ページに表示したい数を書きます。navi_countモディファイアはリンク数の上限を表す値です。公式ページには掲載されていないモディファイアですが、改変後はこの値を与えてあげないと特定の条件でうまくいきません。

あとは改変後のプラグインをインストールしなおして、該当のアーカイブを再構築すれば完了。

仕事初めの日からperlを触ったので、これも何かの縁かと考えて今年はperlを学ぼうかと思います。