Mixhostに移行したMovableTypeのログイン画面がエラーで出ない!Perlモジュールとパスが原因でした。

レンタルサーバーの Mixhost に旧サーバーからMovableTypeを移行したときにいきなりPerlモジュールの不足とPerlのパスが原因でつまづいたので、今後のためにメモ。

事前準備したのにいきなりエラー

旧サーバーから書き出した MySQL のデータを PhpMyAdmin で Mixhost の MySQL に流し込み、MovableType の mtフォルダ も移行し、mt-config.cgi の内容も Mixhost の環境に合わせて書き換え、事前準備も整ったところでいざ管理画面にアクセス!と mt.cgi にアクセスしたみたらエラー…。

install_driver(my_sql) failed: Can’t locate DBD/mysql.pm in @INC (@INC contains: /home….. という内容からして MySQL のドライバーがないらしいです。

原因1:Perlモジュールの不足

MySQL のドライバというのは **DBD::mysql **という Perlモジュール のことみたいです。他のレンタルサーバーで Perlモジュール を求められたことないので気が付きませんでしたが、 Mixhost には標準ではインストールされてないみたいですね。高速なレスポンスを発揮するために不要な機能は入れてないのかもしれません。

Perlモジュールのインストール方法

MT に必要な Perlモジュール は Mixhost のコントールパネルである cPanel から簡単に入れることができます。 DBD::mysql を検索してインストールボタンを押すだけで簡単にインストールできました。

参考ページ

Perlモジュール を間違って入れたり、試しにいれてもアンインストールは簡単にできます。

MovableTypeに必要なPerlモジュールまとめ

DBD::mysql 以外に、既に標準でインストール済みや無くても大丈夫かもしれないませんが、いろいろな参考ページを元に必要かもしれない**ドライバ(Perlモジュール)**をまとめておきます。

Movable Type を実行に必要

  モジュール名
  説明




  CGI
  -


  Image::Size
  -


  File::Spec 
  (バージョン0.8以上)


  CGI::Cookie
  -


  LWP::UserAgent
  -

 

データベース モジュールとして必要

  モジュール名
  説明




  DBI
  バージョン1.21以上


  DBD::mysql
  MySQLを使用する場合に必要


  DBD::ODBC
  バージョン1.25以上、Microsoft SQL Server を利用する場合 (Movable Type Advanced のみ対応)


  DBD::Oracle
  バージョン1.25以上、Oracle Database を利用する場合(Movable Type Advanced のみ対応)

(参考ページ)

オプション機能を利用する場合

  モジュール名
  説明




  Digest::SHA
  パスワードのセキュリティを強固にする場合に必要です


  Plack
  PSGI 環境下で mt.psgi を実行する場合に必要です


  CGI::PSGI
  PSGI 環境下で mt.psgi を実行する場合に必要です


  CGI::Parse::PSGI
  PSGI 環境下で mt.psgi を実行する場合に必要です


  XMLRPC::Transport::HTTP::Plack
  PSGI 環境下で mt.psgi を実行する場合に必要です


  HTML::Entities
  特殊な文字をエンコードする場合に必要です


  HTML::Parser
   トラックバック機能や更新通知機能を利用する場合に必要です


  SOAP::Lite (バージョン 0.5 以上)
  XML-RPC による作業を行う場合に必要です


  File::Temp
   ファイルのアップロードで上書きを行う場合に必要です


  Scalar::Util
  再構築キューを利用する場合に必要です


  List::Util
  再構築キューを利用する場合に必要です


  Image::Magick

  画像のサムネイルを作成したり、CAPTCHAを利用する場合に必要です

  ( [または GD、Imager のいずれかの Perl モジュールか、NetPBMツール](https://www.movabletype.jp/documentation/appendices/config-directives/imagedriver.html))


  IPC::Run
  Movable Type のイメージドライバとして NetPBM を利用する場合に必要です


  Storable
  外部プラグインの利用の際に必要となる場合があります


  Crypt::DSA
   コメント投稿時のサインインを高速化したい場合に必要です


  Crypt::SSLeay
   AOL や Yahoo! などの SSL を利用する OpenID のコメント投稿者を認証する場合に必要です。または、Google Analytics を利用する場合に必要となります


  Cache::File
  Yahoo! Japan によるコメント投稿者の OpenID 認証を許可する場合に必要です


  MIME::Base64
  コメントの認証機能を利用する場合やメール送信に SMTP を利用する場合に必要です


  XML::Atom
  Atom API を利用する場合に必要です


  Cache::Memcached
   Movable Type のキャッシング機能として memcached サーバーを利用する場合に必要です


  Archive::Tar
  バックアップと復元で圧縮の機能を利用する場合に必要です


  IO::Compress::Gzip
  バックアップと復元で圧縮の機能を利用する場合に必要です


  IO::Uncompress::Gunzip
  バックアップと復元で圧縮の機能を利用する場合に必要です


  Archive::Zip
  バックアップと復元で圧縮の機能を利用する場合に必要です


  XML::SAX
  復元の機能を利用する場合に必要です


  Digest::SHA1
  LiveJournal、OpenID でコメント投稿者を認証する場合に必要です


  Net::SMTP
  メールの送信に SMTP を利用する場合に必要です


  Authen::SASL
  CRAM-MD5、DIGEST-MD5 / LOGIN を SASL メカニズムとして利用する場合に必要です


  Net::SMTP::SSL
  SMTP 認証に SSL を利用する場合に必要です (Movable Type 6.1.2 まで)


  Net::SMTP::TLS
  SMTP 認証に STARTTLS コマンドを利用する場合に必要です (Movable Type 6.1.2 まで)


  IO::Socket::SSL
  SMTP 認証に SSL / STARTTLS コマンドを利用する場合に必要です。または、Google Analytics を利用する場合に必要となります


  Net::SSLeay
  -


  Safe
  -


  Digest::MD5
  -


  Text::Balanced
   ブログ内検索で必要


  XML::Parser
  -


  Time::HiRes
  run-periodic-tasks を実行するために必要です。


  Mozilla::CA
  Google Analytics を利用する場合に必要になります。


  XML::SAX::ExpatXS

  (または、XML::SAX::Expat)
  バックアップデータの復元に必要となります


  XML::LibXML::SAX
  バックアップデータの復元に必要となります。

(参考ページ)

インストール済みかチェックする方法

MovableTypeの環境チェック用CGIである mt-check.cgi を実行することで、インストールされているかどうか確認できます。mt-check.cgi はMTを配置したルートフォルダにあります。

インストールしたのにエラー

必要な Perlモジュール をインストールして、再度 mt.cgi にアクセスしたら同じエラーが表示されました。 mt-check.cgi でインストールされていることは確認済みなのですが、ちゃんとインストールされていないかのかな?インストールの方法がまずいのかな?と思いつつ、何回かMySQLのモジュールのインストールを行いましたが、エラーは解消されませんでした。問題解決のためにいろいろ検索してしているとPerlのパスについての注意事項を見つけました。

原因2:Perlのパスを変更

MovableTypeのCGIファイルにあるPerlのパスを Mixhost に合わせて変更していないのが原因でした。 Mixhost のページに以下の記載がありました。

書き換え対象のファイル

MovableType のフォルダ直下に以下14個のCGIファイルがあります。これにある Perl のパスを書き換える必要があります。

  • mt-atom.cgi
  • mt-check.cgi
  • mt-comments.cgi
  • mt-cp.cgi
  • mt-data-api.cgi
  • mt-feed.cgi
  • mt-search.cgi
  • mt-sp.cgi
  • mt-tb.cgi
  • mt-testbg.cgi
  • mt-upgrade.cgi
  • mt-wizard.cgi
  • mt-xmlrpc.cgi
  • mt.cgi

パスを#!/usr/bin/perlml -wに変更する

例えば mt-atom.cgi の場合、このファイルを開くと先頭行にある Perl のパスを以下のように変更します。

#!/usr/bin/perl -w

↓に変更

#!/usr/bin/perlml -w

**[ cPanel ]-[Perl モジュール]**のページには以下の記述がありました。後から試してみたところ、赤枠の2行に変更するのでも大丈夫でした。

#!/usr/bin/perl -w
use cPanelUserConfig;

ほとんどの場合、先頭行は #!/usr/bin/perl となっているので、2行目に use cPanelUserConfig; を入れるだけです。 #!/usr/bin/perlml とどちらがいいかは好みとなります。

そしてアクセス成功!

14個のCGIファイルのパスを変更したらアップロードして、再度 **mt.cgi **にアクセスしたところ、無事ログイン画面が現れました。

レンタルサーバーの引っ越しは何度か行っていますが、簡単ではないですね…。

Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。