วิธีย้ายข้อมูลจาก Magento 1 ไป Magento 2

Magento1 - End of life

จากที่ทาง Magento ได้ประกาศลง Blog ของตนเองเมื่อปี 2018 ว่า Magento 1 จะหมดอายุการ support ลงในเดือนมิถุนายน 2020 หรือปีพ.ศ. 2563 (คลิกเพื่ออ่านข้อมูลเพิ่มเติม) เพื่อให้เว็บไซต์ยังคงได้รับการอัพเดทอย่างสม่ำเสมอและมีความปลอดภัยต่อเว็บไซต์เอง รวมถึงผู้ซื้อก็ถึงเวลาอันควรที่จะเปลี่ยนมาใช้ Magento 2 ได้แล้ว

ซึ่งทาง Magento เองก็มี tool หรือเครื่องมือที่รองรับการย้ายข้อมูลจาก Magento 1 ไป Magento 2 อยู่แล้ว (คลิกเพื่ออ่านข้อมูลเพิ่มเติม) ก็ลองเข้าไปศึกษาวิธีการย้ายข้อมูลกันได้ แต่ที่ควรระวังคือเรื่องของ Theme และ Plugin ต่างๆ ที่ใช้บน Magento 1 บางส่วนอาจจะไม่สามารถย้ายได้สมบูรณ์ 100% แนะนำว่าหลังจากย้ายข้อมูลแล้วให้ทดลองใช้งานดูก่อน และอาจจะต้องติดต่อสอบถามผู้พัฒนา Theme หรือ Plugin ที่ใช้งานบน Magento 1 ตัวเดิมนั้นว่ารองรับ Magento 2 หรือไม่ หากไม่มีก็คงจะต้องหา Theme หรือ Plugin อื่นมาทดแทน

สำหรับวิธีการย้ายข้อมูลนั้นขอสรุปง่ายๆ ดังนี้

สิ่งที่ต้องรู้/ต้องเตรียมก่อน

  1. ตรวจสอบเวอร์ชันของ Magento 1 ปัจจุบันที่ใช้งาน เช่น 1.9.2.4 เป็นต้น
    วิธีการตรวจสอบ
    1) login เข้า admin
    2) เลื่อนลงมาล่างสุดจะเห็นเวอร์ชันปัจจุบันที่ใช้งานอยู่
  2. ลง Magento 2 ให้เรียบร้อย และต้องทราบเวอร์ชันที่ลง เช่น 2.3.4 เป็นต้น
    สามารถดาวน์โหลด Magento 2 ได้ที่ https://github.com/magento/magento2/releases

วิธีการย้ายข้อมูล

  1. ไปที่ directory / folder ของ Magento 2 บนเว็บเซิร์ฟเวอร์
  2. ลง Magento 2 Data Migration Tool ด้วยคำสั่งต่อไปนี้
composer config repositories.data-migration-tool git https://github.com/magento/data-migration-tool

หากลง Magento 2 ด้วยเวอร์ชัน 2.3.4 ก็ให้เปลี่ยน <version> เป็น 2.3.4

composer require magento/data-migration-tool:<version>

เช่น

composer require magento/data-migration-tool:2.3.4
  1. ตั้งค่าสำหรับ Migration (ดูข้อมูลเพิ่มเติม)
    1) เข้าไปที่ folder
/vendor/magento/data-migration-tool/etc/<migration edition>/<ce or version>

โดยที่ <migration edition> นั้นจะมี opensource-to-opensource, opensource-to-commerce และ commerce-to-commerce โดยปกติถ้าเราใช้เวอร์ชันฟรีของทาง Magento และจะย้ายไป Magento 2 ตัวฟรีอยู่แล้วก็จะเป็น opensource-to-opensource

ส่วนของ <ce or version> จะเป็นเวอร์ชันของ Magento 1
ซึ่งหากอิงตามตัวอย่างที่ตั้งไว้ตั้งแต่ข้อแรก ก็จะต้องเป็น

/vendor/magento/data-migration-tool/etc/opensource-to-opensource/1.9.2.4

2) พิมพ์คำสั่งต่อไปนี้เพื่อ copy ไฟล์สำหรับ config

cp config.xml.dist config.xml

3) จากนั้นให้เปิดเครื่องมือเพื่อแก้ไขไฟล์ config.xml

4) ค้นหาบรรทัดที่ตั้งค่าการเชื่อมต่อฐานข้อมูล (database) ซึ่งจะอยู่เกือบล่างสุดของไฟล์ ก็ให้ดำเนินการเปลี่ยนข้อมูลให้เรียบร้อย

<source>
   <database host="127.0.0.1" name="magento1_database_name" user="database_user" password="database_password" />
</source>
<destination>
   <database host="127.0.0.1" name="magento2_database_name" user="database_user" password="database_password" />
</destination>
<options>
   <crypt_key />
</options>

ในส่วนนี้สิ่งที่ขาดคือข้อมูลใน <crypt_key /> ที่ต้องไปเอามาจาก Magento 1

5) เปิดไฟล์ใน folder/directory ของ Magento 1 app/etc/local.xml ข้อมูลจะอยู่ในรูปแบบดังนี้

<crypt>
   <key><![CDATA[xxxxxxxxxxxxxxx]]></key>
</crypt>

ให้ copy <![CDATA[xxxxxxxxxxxxxxx]]> ที่พบใน app/etc/local.xml ไปแปะในไฟล์ config.xml ของ Magento 2

เช่น

<source>
   <database host="127.0.0.1" name="magento1_database_name" user="database_user" password="database_password" />
</source>
<destination>
   <database host="127.0.0.1" name="magento2_database_name" user="database_user" password="database_password" />
</destination>
<options>
   <crypt_key><![CDATA[xxxxxxxxxxxxxxx]]></crypt_key>
</options>

6) พิมพ์คำสั่งต่อไปนี้เพื่อ copy ไฟล์สำหรับ map

cp map.xml.dist map.xml

ก่อนที่จะดำเนินการแก้ไขไฟล์นี้แนะนำให้ศึกษาการแก้ไขให้ดีก่อน https://devdocs.magento.com/guides/v2.3/migration/migration-tool-configure.html#migration-config
แต่ตัวอย่างในครั้งนี้จะไม่เข้าไปแก้ไขข้อมูลใดๆในไฟล์นี้เลย

  1. เริ่ม Migrate ข้อมูลด้วยคำสั่งต่อไปนี้ (อย่าลืมเปลี่ยน path ของ config.xml ให้ถูกต้อง)
bin/magento migrate:settings vendor/magento/data-migration-tool/etc/opensource-to-opensource/1.9.2.4/config.xml

และ

bin/magento migrate:data -a vendor/magento/data-migration-tool/etc/opensource-to-opensource/1.9.2.4/config.xml
  1. ย้ายข้อมูลใน folder media ของ Magento 1 ไปใส่ใน folder pub/media ของ Magento 2
  2. Reindex และ flush cache ใน Magento 2 เป็นอันจบ
php bin/magento indexer:reindex
php bin/magento cache:flush

เพียงเท่านี้ก็จะสามารถย้ายข้อมูลจาก Magento 1 ไปยัง Magento 2 ได้แล้วครับ หากสนใจวิธีการทำแบบละเอียดก็สามารถศึกษาจากวีดีโอบน Youtube ควบคู่ไปด้วยได้ครับ

คลิปวิธีย้ายข้อมูลจาก Magento 1 ไปยัง Magento 2