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版
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を孊がうかず思いたす。