HOMERSSサイトマッププロフィールお問い合せ

2006年10月12日

Movable Type で使っている Berkery DB を MySQL に移行し、アーカイブ関連をダイナミック・ページに変更する

前述のように、MT の自動再構築の際にエントリー・アーカイブを自動化すると、僅か100程度の再構築でもパンクするような状況なので、アーカイブ関連をダイナミック・ページに変更するように、、、しようとした。


1). 先ずは、MySQL に必要な Perl モジュールのインストール

    a) 普通にインストール
      # perl -MCPAN -e shell
      cpan > install DBI
      cpan > install DBD::mysql
      cpan > quit

      で、インストール完了。。。のはずが、、、すべてエラー

    b) それなら、、、CPAN を最新にしよう

      # perl -MCPAN -e shell
      cpan > install Bubdle::CPAN
      cpan > quit

      で、CPAN がなにか変になってしまった。。。a) を再実行したが相変わらず駄目!
      念のためにいつかは使うかもしれないモジュール ( Crypt::DSA ) をインストールしてみたら出来た。ほんとうは CPAN を元に戻したかったができそうにないのでそのままにしておいた。

    c) なんのことはなく、、、Vine Linux の Synapticパッケージマネージャーを使ってインストールできた。これなら CPAN インストールと違って、アンインストールが出来るので一安心。

    d) インストールを確認

      https://www.bit-consul.net/cgi-bin/MT/mt-check.cgi

2). MySQL の設定

    MySQL のバージョンが4.1以上の場合は /etc/my.cnf に文字エンコーディングの設定をするような記事があったが、ここでは4.0なので不要。
      [mysqld]
      default-character-set=utf8
      [client]
      default-character-set=utf8

    a) データベースの作成
      $ mysql -uroot -pxxxxxxxx
      mysql > create database xxxx;

    b) ユーザーの作成
      mysql > grant select,insert,update,delete,create,index,alter on xxxx.* to xxuser@localhost identified by 'password';
      mysql > quit
3). mt-config.cgi の設定
    データベースにアクセスするための設定を、次のようにする。
    ObjectDriver DBI::mysql
    Database xxxx
    DBUser mtuser
    DBPassword xxxxxxxx
    DBHost localhost
4). 移行
    ブラウザーから、次の URL でアクセス
    https://www.bit-consul.net/cgi-bin/MT/mt-db2sql.cgi

    ところが、ところが、、、エラー!で、データベースに沢山のテーブルを作成しただけで終わった。
      Loading data...
      MT::Author
      **** WARNING: Use of uninitialized value in -d at /var/bit-consul/cgi-bin/MT/lib/MT/ObjectDriver/DBM.pm line 27.

      **** WARNING: Use of uninitialized value in pattern match (m//) at /usr/lib/perl5/5.8.2/i386-linux-thread-multi/File/Spec/Unix.pm line 207.

      **** WARNING: Use of uninitialized value in join or string at /usr/lib/perl5/5.8.2/i386-linux-thread-multi/File/Spec/Unix.pm line 82.


      An error occurred while loading data:

      No ObjectDriver defined at /var/bit-consul/cgi-bin/MT/lib/MT/Object.pm line 172.


    考えてみれば・・・ mt-db2sql.cgi 君は移行するデータの在りかが分からないハズ。
    そこで、mt-config.cgi に 'DataSource /var/bit-consul/DB' を追記してアクセスしたところ、めでたく移行できたので再構築して確認した。

5). 一部のアーカイブをダイナミック・ページを使うように設定
    a) MySQL への移行が完了したので、Movable Type のテンプレート設定画面からエントリー・アーカイブをダイナミック・ページに設定した。(この項目はデータベースを MySQL、PostgreSQL、SQLite2 を使った場合のみ表示される)

    b) ダイナミック・パブリッシングのために .htaccess ファイルを利用できるように設定する。Apache の設定ファイル httpd.conf の AllowOverride 設定を All にする。なお、.htaccess ファイルは Movable Type でダイナミック・パブリッシングを使用する設定にしたときに自動的に作成される。

    c) テンプレート・キャッシュ・ディレクトリを、ブログのルートディレクトリに templates_c という名前で作成し、パーミッションを 777 に設定する。(アクセス時に勝手に作成してくれるようだ。)

    d) ブラウザーからアクセスすると、、、

      <?php ・・・・・・・・ ?>

      なんて、表示された。これって PHP を使っているようだ・・・

    6). PHP のインストール
      # apt-get update
      # apt-get install php5 php5-apache2 php5-devel php5-pear php5-mysql

      で、インストールするが、今回はSynapticパッケージマネージャーを使った。

      a) PHP の動作確認

        テスト用 PHP ファイルを Document root に置く
        first.php
        <?php
        phpinfo();
        ?>

      b) Apache2 MPM を worker から prefork に変更

        PHP をインストールした段階で Apache2 を再起動するとエラーで起動できなくなった。ネットの情報を頼りに Apache2 の MPM とやらを次のコマンドで変更
        # update-alternatives --config apache2

        とやり、prefork を選択。

        Apache2 を再起動。

      c) first.php にアクセスして動作を確認
        https://www.bit-consul.net/first.php

        PHP の仕様情報などが出てきたら OK!

      d) 日本語表示の設定

        /etc/php5/php.ini を編集して日本語が化けないように設定する。当ブログではデフォルトで UTF-8 を使用する設定になっているので、'default_charset=' 部を UTF-8 に変更。
        なお、最近の設定ファイルの最下部には [Vine] という項目があるのでそこを修正し、上部と重複しないように注意する。

        日本語問題はいろいろな組み合わせの結果なので都度の対応をする。上の設定では、fiest.php は日本語の文字化けが発生するし、'default_charset=' 部を EUC-JP に戻せば UTH-8 の当ブログの日本語が化ける・・・


    7). ブログのダイナミック・ページにアクセス

      すんなり行くとは思わなかったが、、、やはりエラーが出た。
      Smarty error: [in evaluated template line 3]: syntax error: unrecognized tag 'MTEntryIfCategories' (Smarty_Compiler.class.php, line 580)

      さっそくググってみると、MTEntryIfCategories プラグインがPHPプラグインとして提供されていないのが原因のようなことがメモられていた。確かに、MT/php/lib にあるMTタグの PHP化モジュールの中にはこのタグ名のものはなかった。

      結論は・・・このブログではダイナミック・パブリッシングは使えないということに。。。

      気になるので、、、簡単な標準的なブログで試してみたところダイナミック・パブリッシングは出来た。

      まぁ~納得・・・


    ところが、ところが、、、

    MySQL に移行したおかげで、もともとの問題であった自動再構築がすんなり走るようになっていた・・・結果オーライ!!

投稿者: 管理者 日時: 2006年10月12日 21:37 | パーマリンク |TOPページへ   ▲画面上へ

トラックバック

このエントリーのトラックバックURL:
https://bit-consul.net/cgi-bin/MT/mt-tb.cgi/135

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)