[Magento]サーバー移転の手順について

Magentoで制作したショップのテストサーバーを作るために、別サーバーに丸ごとコピーしてみました。
サーバー移転の際に役に立つと思いますので、手順を公開します。

1. 旧サーバーから、データベースをエクスポートします

私は、phpMyAdmin のエクスポート機能で、データベースを丸ごとエクスポートしました。
テーブル全選択でSQL形式、オプションはデフォルト。文字コード変換なしです。
新サーバーにインポートする際に、PHPのアップロードファイルサイズ制限に引っかかる可能性があるので、圧縮をかけたほうがいいと思います。

2. 旧サーバーから、Magentoディレクトリをローカルにダウンロードします

私は、ディレクトリごと圧縮してダウンロードしました。
圧縮せずにFTPでダウンロードすると、ものすごく時間がかかりますし、高い確率でエラーが起きるのでやめたほうが良いと思います。

3. 新サーバーにデータベースを作成します

文字コードは、UTF-8 にしてください。(照合順序 utf8-general-ci)
データベース名、ユーザー名、パスワードなどは、旧サーバーと違っていても構いません。
でも、同じほうが手間がかからなくて済みます。

4. エクスポートしたデータベースをインポートします

私は、phpMyAdmin のインポート機能でインポートしました。
特別な設定は不要です。

5. データベースを修正します。

テーブル core_config_data の下記フィールドを、新サーバーに合わせて書き換えてください。
内容は、MagentoのフロントエンドのURLですので、ドメイン名を新サーバーのものに書き換えます。
・web/unsecure/base_url
・web/secure/base_url

6. 新サーバーに、ダウンロードしたMagentoディレクトリをアップロードします。

2.でダウンロードした圧縮したファイルを新サーバーのドキュメントルートにアップロードして、サーバー上で展開すればOKです。

7. 設定ファイルを修正します。

app/etc/local.xml にデータベースの設定があるので、新サーバーに合わせて修正します。

  <connection>
    <host><![CDATA[データベースサーバー名]]></host>
    <username><![CDATA[ユーザー名]]></username>
    <password><![CDATA[パスワード]]></password>
    <dbname><![CDATA[データベース名]]></dbname>
    <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
    <model><![CDATA[mysql4]]></model>
    <type><![CDATA[pdo_mysql]]></type>
    <pdoType><![CDATA[]]></pdoType>
    <active>1</active>
  </connection>

これで、移行は完了。新サーバーにアクセスできます。

core_config_data と local.xml の修正をする前にMagentoにアクセスしようとすると、おかしなことになりますので注意してくださいね。

[Magento]サーバー移転の手順について” に対して8件のコメントがあります。

  1. 菅野 竜治 より:

    はじめまして。
    Magentoのキーワード検索でヒットして、こちらに来ました!!
    なかなかMagentoの事を詳しく書かれている方を発見できなくて困っていました。
    恐らくMagentoで制作したものと思われるデータを海外より頂き、日本国内用で運用しよとXサーバーで引越しようと思ったのですが、全く表示されませんでした。
    データベースを上げようとしても、全て上がりきっているのかも微妙だし、こちらのブログに書かれている処理を行っても、There has been an error processing your requestが出ちゃうし。
    上記の記述のある「Magentoディレクトリ」っていうのはどちらから入手できるのでしょうか?
    いきなり質問ばかりしてしまい、大変申し訳ありませんが、何卒宜しくお願い致します。

  2. さくらぎけい より:

    「There has been an error processing your request」のあとに、エラーログの番号が書かれていませんでしたでしょうか?
    その番号のエラーレポートが、var/report/ にあると思うので、まずはそれをテキストエディタなどで開いて原因を探ってみてください。
    なお本記事は、すでに稼働しているMagentoの移行についてのもので、Magentoディレクトリというのは、稼働中のMagentoがインストールされているディレクトリのことです。

  3. 菅野 竜治 より:

    ご返信ありがとうございます!!
    あれから色々といじってみて、結局データベースはインポートがずっと終わらず、処理をキャンセルしてみてデータベース内をみると、前回途中でキャンセルしたテーブル数(?)と同じ数だったので、これでサイトの方にアクセスしてみたら、今度は
    Fatal error: Call to a member function initCache() on a non-object in /home/users/1/lomo.jp-infinitytest/web/app/code/core/Mage/Core/Model/App.php on line 577
    になってしまいました。
    ディレクトリをたどってみましたが、これが何を意味しているのか理解できませんでした。
    そもそもMagentoの専用プログラム的なものが入っていないという可能性もあるのでしょうか?
    当方に知識がなく、謎が深まるだけです。。。
    もし、お手数でなければまたご返信頂けると助かります。
    宜しくお願い致します。

  4. さくらぎけい より:

    表示されているエラーメッセージはMagentoのものですので、ある程度Magentoは動いていると思います。
    何を意味しているのか分からないというのではなく、エラーメッセージで検索するなどしてみてください。
    英語の掲示板(もしかしたら他の言語かもしれませんが)でいくつか見つかると思います。
    あと、データベースのインポートが中途半端だと、何が悪いのかの切り分けができません。
    分割インポートするとか、ツールを使うとかして、きちんとインポートを行ってくださいね。

  5. 菅野 竜治 より:

    ご返答本当にありがとうございました!
    これから色々とまた調べてみます!
    同じ京都市内なので、何かのイベントなどでお会いできる事を楽しみにしております!
    また、何かありましたら、宜しくお願い致します。

  6. 菅野 竜治 より:

    何度もすみません。
    ちなみにMagentoのシステム(機能)をオフにするみたいなやり方はないですよね?
    とりあえず表示だけでもさせてみたくて。。。

  7. さくらぎけい より:

    機能をオフにするとはどういう意味でしょうか?
    Magento自体を止めてしまうと、表示すらできない(エラーすら出ない)ようになりますよ。
    他の人に見せたくないのなら、IP制限かけるとか、ベーシック認証入れるとかするのが簡単です。
    ログインしていないと見れねくなるエクステンションもあるみたいですよ。

  8. 菅野 竜治 より:

    返信ありがとうございます!
    なかなか難しく、解明に時間がかかりそうです。(汗)
    さくらぎけい様のアドバイスを元にゆっくりやっていきます。
    ありがとうございました!

コメントを残す