Isriya Paireepairit / mk / markpeak
A Thai tech geek. Co-founder of Blognone and SIU. Blogging on almost everything.
ช่วงน้ำท่วมเหมือนได้ปิดเทอม เลยนั่งทยอยสะสางงานที่อยากทำแต่ไม่ได้ทำเพราะไม่มีเวลามากพอ หนึ่งในนั้นคือการอัพเกรด isriya.com เป็น Drupal 7
ผลลัพธ์ออกมาอย่างที่เห็นคือ อัพได้ (ยังไม่ได้แก้ธีมเก่า + หาธีมใหม่ เลยใช้ default ไปพลางๆ ก่อน) แต่กว่าจะผ่านมาได้ก็เหนื่อยยากแสนเข็ญ มาแชร์ประสบการณ์ไว้หน่อย
ทำตาม upgrade.txt ทุกประการ ขั้นตอนแบบย่อๆ มีดังนี้
Table Schema
ปัญหาของ isriya.com คืออัพมาจาก D5 > D6 > D7 มันทำให้ table schema บางอันยังใช้ของ D5 อยู่ (ที่ดันไม่มีปัญหากับ D6 แต่มีปัญหากับ D7)
ผมดูข้อมูลใน Drupal.org แล้วพบว่ามีคนเป็นบ้างประปราย ส่วน table ที่มีปัญหาก็แตกต่างกันไป
กรณีของผมคือ table ชื่อ block มีฟิลด์ชื่อ theme ตั้งชนิดของข้อมูลเป็น varchar(255) ซึ่งเป็นค่าเดิมของ D5 แต่พอมาเป็น D6/D7 มันกลายเป็น varchar(64) ไปแทน ทำให้การรันสคริปต์อัพเดตไม่สมบูรณ์
ทางแก้ก็ไม่ยากคือเข้าไปเปลี่ยนค่าของ table structure ใน MySQL ได้เลย (ไม่มีผลกระทบต่อข้อมูล เพราะข้อมูลที่เก็บจริงคือชื่อธีมซึ่งสั้นมาก) จะแก้ผ่าน phpMyAdmin หรือแก้จาก MySQL console โดยตรงก็แล้วแต่ชอบ
Taxonomy as Field
อันนี้ไม่รู้มีใครเป็นหรือเปล่า แต่กรณีของ isriya.com มีลักษณะเฉพาะคือใช้แท็กเยอะมาก และ D7 ได้เปลี่ยนสถาปัตยกรรมการเก็บข้อมูลของแท็กใหม่ ให้เป็น Field แทน (ตาม Field API)
Field API improvements: Taxonomy terms are now fields, comments and taxonomy terms are fieldable, and fields are also now translatable.
นอกจากมันจะเป็น Field แล้ว มันยังได้คุณสมบัติของ Field ติดมาด้วยคือ Revision ผลก็คือการอัพเกรดฐานข้อมูล จะต้องสร้างตารางใหม่ที่เอา node x tag x revision ซึ่งกินเวลาเป็นชั่วโมงได้
บนเครื่องจำลอง การอัพเกรดฐานข้อมูลสามารถทำได้โดยไม่มีปัญหาอะไร (แค่รอนาน) แต่บนเครื่องจริง กลับรันไม่รอดจนจบ ทางแก้ก็ไม่ยากคือ dump ฐานข้อมูลจากเครื่องจำลองมาใส่เครื่องจริง ก็เป็นอันเสร็จ
Temp Directory
สิ่งที่เพิ่มเข้ามาใน D7 คือเราต้องระบุ path สำหรับ temp/tmp directory ด้วย จากเดิมที่ระบุแค่ path ของ files directory
ตั้งค่าได้ใน Admin/Config/File Systems ส่วนจะตั้งเป็นอะไรก็ขึ้นกับคอนฟิกของเซิร์ฟเวอร์ที่ใช้ครับ
File Compression
อันนี้เป็นปัญหาที่ยังแก้ไม่ได้ คือ คอนฟิกของ D7 กับเซิร์ฟเวอร์ของ CLNOX มีปัญหาเรื่องการบีบไฟล์ CSS/JS ทำให้เวลาเราเลือก Aggregate CSS/JS ในหน้า Performance แล้ว ธีมไม่ขึ้น
ปัญหานี้ไม่เกิดบนเครื่องจำลอง (Ubuntu LAMP) อันนี้กำลังหาทางแก้กับ CLNOX อยู่ว่าเป็นอย่างไรบ้าง แต่ workaround เบื้องต้นคือใช้ D7 แบบไม่บีบ CSS/JS ไปก่อน
Admin Toolbar
ของใหม่ของ D7 ที่เห็นได้ชัดเจนที่สุดคือ Admin Toolbar ที่ปรากฏขึ้นมาเป็น overlay ทับหน้าจอปกติ ช่วยให้การเข้าถึงฟังก์ชันต่างๆ ในหน้า Admin ทำได้สะดวกขึ้น
แต่กรณีของ isriya.com ที่ไม่ได้ลงแบบ fresh install แต่อัพเกรดแทน ปรากฏว่า Admin Toolbar ไม่โผล่ (ไม่ทราบสาเหตุ คาดว่าเป็นเรื่องของคอนฟิก)
ทางแก้คือเปิด Module ชื่อ Toolbar, Overlay, Shortcut แล้วแต่งานที่ใช้ (ถ้าเปิดครบ 3 อันจะเท่ากับ D7 default)
เนื่องจากไม่ต้องใช้ module อะไรที่จำเป็นมาก เบื้องต้นเลยลงไว้เฉพาะ markdown ก่อน ซึ่งก็ไม่มีปัญหาอะไร สามารถทำงานได้ดี
module บางตัวก็ไม่จำเป็นต้องใช้อีกแล้ว เช่น vertical_tab ที่เข้ามาอยู่ใน D7 Core แล้ว
โอกาสนี้ก็ควรลอง module ใหม่ๆ บ้างเช่นกัน ตัวอย่างเช่น Mollom ที่ระยะหลังไม่น่าประทับใจนัก (ทำสแปมหลุดบ่อย) ก็อาจจะไปลองใช้ AntiSpam/Akismet แทน
การอัพเกรดจาก D6 > D7 โหดร้ายทารุณมาก เหตุผลเพราะสถาปัตยกรรมข้างล่างเปลี่ยนเยอะ (ระยะห่างระหว่างรุ่น 3 ปี) นี่ยังไม่รวมเรื่อง module ที่ยังเปลี่ยนตามกันไม่ทันอีก
ถ้าทำเว็บใหม่ตอนนี้ก็ควรเริ่มที่ D7 เลย แต่คนที่รัน D6 อยู่แล้วและยังไม่มีเหตุจำเป็นต้องอัพเกรด ก็ควรอยู่กับ D6 นั่นแหละครับ
Comments
iMenn
16 November, 2011 - 21:31
Permalink
จะมีเกรียนเวิร์ดเพรสมาเกรียนม
จะมีเกรียนเวิร์ดเพรสมาเกรียนมั้ยเนี่ย
ไม่นะ ไม่นะ ไม่นะ :P
mk
16 November, 2011 - 21:40
Permalink
ตอบคุณ @iMenn ผมขายวิญญาณให้
ตอบคุณ @iMenn ผมขายวิญญาณให้ @Warong เอ้ย @WordPress ไปแล้วครับ
chris
17 November, 2011 - 11:48
Permalink
ประสพการณ์คล้ายๆ กัน
ประสพการณ์คล้ายๆ กัน เว็บส่วนตัวใช้ไม่กี่ module ยังเกือบตาย (แต่ไม่ได้จดบันทึกปัญาหาไว้)
เว็บที่ใช้งานของบริษัท ก็มีความอยากจะ upgrade เพราะอยากใช้ module ใหม่ๆ บางตัว แต่ยังไม่จำเป็นขนาดนั้น
สุดท้ายคงจะย้ายเอาตอน D8 ออก และ D6 ไม่มี official support น่าจะได้อีกอย่างน้อยปีนึง
Add new comment