1 database แต่ทำ php-fusion หลายเว็บ

1 database แต่ทำ php-fusion หลายเว็บ

เป็นคำถามที่เก็บมาจากกระดานข่าว โจทย์คือ ต้องการทำเว็บเอาไว้ 2 ที่เช่น abc.domain.com และ xyz.domain.com แต่ว่าข้อมูลทุกอย่างแยกกัน เว้นแต่ สมาชิกที่ join กัน คือสมัครที่นึง ก็เข้าใช้อีกที่นึงได้ด้วย php-fusion ทำง่ายนิดเดียวครับ

บทความนี้จะกล่าวถึงเว็บสองชุด ขอให้ตั้งสติอ่านให้ดีนะครับ อย่าหลุด เพราะว่าหลุดนิดนึงก็จะงงไปเลย

โดยขั้นตอนการทำอย่างที่ผมว่านั้น เค้าเรียกว่า multi site ครับ ซึ่งหลักการทั้งหมดมีดังนี้
1.ติดตั้ง php-fusion ที่ site 1 (site นี้ผมจะเอาไว้เป็น site หลัก)
2. ติดตั้ง php-fusion ที่ site 2 โดยต้องติดตั้ง ให้ prefix ต่างกัน ลงใน database เดียวกับข้อที่ 1 เท่านั้น จะทำให้เรามี php-fusion สองชุดแล้ว
3.แก้ไขไฟล์ includes/multisite_include.php ให้เป็นข้อมูลของ site 1 โดยเลือกแก้เอาเฉพาะที่ต้องการ

แค่นี้ครับกระบวนการทั้งหมด� งั้นมาเริ่มอธิบายโดยละเอียดครับ

1.ติดตั้ง php-fusion ที่ site 1 (site นี้ผมจะเอาไว้เป็น site หลัก)
สำหรับ site ตัวนี้ ผมจะถือว่าเป็นเว็บหลักนะครับ หรือส่วนหลัก ที่เราจะเอาข้อมูลเก็บเอาไว้ใช้กับ site อื่นๆ โดยขั้นตอนการติดตั้งตัวนี้ผมจะทำการติดตั้งแบบธรรมดาทั้งหมด 100 % คือหากจำได้ กระบวนการติดตั้งที่
Step 3: Database Settings
ส่วนนี้ผมตั้งค่า prefix ให้เป็น fusion_ เหมือนการติดตั้งตามปกติครับ

2.ติดตั้ง php-fusion ที่ site 2 โดยต้องติดตั้ง ให้ prefix ต่างกัน ลงใน database เดียวกับข้อที่ 1
สำหรับ site ตัวนึ้ คือเว็บลอง ที่เราอาจจะทำเนื้อหาแยกจากเว็บหลัก แต่เราต้องการให้ใช้ฐานข้อมูลสมาชิกร่วมกับเว็บหลักเท่านั้น การติดตั้ง site นี้ ในกระบวนการ
Step 3: Database Settings
ให้ตั้งค่า prefix เป็นอย่างอื่นที่ไม่ใช่ fusion_ เพราะว่าถ้าตั้งตรงกัน มันจะไปทับข้อมูลของเว็บหลักทั้งหมด อันนี้อันตรายมาก ข้อมูลเว็บหลักจะหายหมด เช่น ผมตั้งว่า fusion2_ ส่วนค่าอื่นๆนั้น ใช้เหมือนการติดตั้งข้อที่ 1 ทั้งหมด ห้ามเพี้ยนครับ เพราะว่าอย่างที่บอก เราจะใช้ database ตัวเดียวกันนั่นเอง

3.แก้ไขไฟล์ includes/multisite_include.php ให้เป็นข้อมูลของ site 1 โดยเลือกแก้เอาเฉพาะที่ต้องการ
ให้ แก้ที่ site อื่นๆที่ไม่ใช่ site 1 นะครับ คือแก้ที่site ลูกครับ ส่วนไฟล์ของ site หลักเราจะคงเดิมเอาไว้ 100% โดยแก้ที่ file� includes/multisite_include.php ที่เดียวเท่านั้น แก้ตามนี้ครับ
edit file multi site
บรรทัดที่ 61-63 คือการ comment ข้อเดิมออกนะครับ เผื่อว่าวันไหนอยากกับไปใช้แบบเดิม จะได้ แก้comment เท่านั้นเอง
ส่วนบรรทัดที่ 64-66 คือการ copy จาก 61-63 ออกมาแก้นะครับเช่น บรรทัดที่ 64 จะเห็นว่าของเดิมคือ
define("DB_USER_FIELDS", DB_PREFIX."user_fields");
ผมก็แก้ให้เป็น
define("DB_USER_FIELDS", "fusion_user_fields");

คือ แก้ให้เป็นข้อมูลของเว็บหลักครับ ยังจำได้หรือเปล่า ว่าขั้นตอนที่ 1 ผมติดตั้งเว็บหลักด้วย prefix fusion_ ดังนั้นผมก็เลยมาแก้ตรงนี้ให้เป็น fusion_ ด้วยครับ แล้วส่วนหลังนั้นคือชื่อ table เหมือนเดิมไม่ได้แก้อะไร
ส่วน ที่ทำทั้งสามอันเลย ก็เพราะว่าเป็นส่วนที่เกี่ยวข้อกับ user ทั้งหมดครับ ก็เลยแก้ทั้งสามอันเลย จริงๆแค่แก้ users อันเดียวก็ได้แล้วครับ

เมื่อเสร็จขั้นนี้ก็ upload ไฟล์ที่แก้นี้ไปทับของเดิมก็เสร็จแล้วครับ

ลอง login ดู แล้วจะพบว่าทั้งสองเว็บใช้ข้อมูล login อันเดียวกันเลยครับ นอกจากนี้ การสมัครสมาชิกจากที่หนึ่ง ก็จะเข้าใช้อีกที่หนึ่งได้ด้วยเหมือนกัน



นี่เป็นแค่ส่วนสมาชิก นอกจากนี้ ยังทำส่วนอื่นๆเช่น ข่าวสาร บทความ ก็ยังสามารถทำได้ทั้งหมดครับ

แต่ ข้อควรระวังก็คือ ส่วนที่ join กัน เช่นส่วนสมาชิก เมื่อมีการแก้ไขจากที่ใด อีกที่นึงก็จะมีผลด้วย เช่นว่า siteรอง มีการลบสมาชิกออก� site หลัก สมาชิกนั้นก็จะถูกลบไปด้วย เพราะว่าใช้ข้อมูลตัวเดียวกัน

Create: Modify : 2009-05-12 20:06:45 Read : 6051 URL :