อัปเดตหลายร้อยไซต์พร้อมกันบนเซิร์ฟเวอร์เดียวกัน

ฉันกำลังทำงานกับเซิร์ฟเวอร์เฉพาะของ Hostgator ซึ่งมีไซต์หลายร้อยแห่งที่มีโครงสร้างไฟล์และไฟล์ .php เหมือนกันในแต่ละไซต์

ฉันต้องการที่จะทำงานในไซต์เดียว (ไซต์ "แบบจำลอง") แล้วซิงค์การเปลี่ยนแปลงเหล่านั้นกับไซต์อื่นๆ ทั้งหมด ฉันเปิดให้สิ่งนี้เกิดขึ้นโดยอัตโนมัติหรือกึ่งด้วยตนเอง (เรียกใช้สคริปต์หรือคำสั่ง) ข้อกำหนดประการหนึ่งคือเนื่องจากไซต์บางแห่งมีความแตกต่างกัน พวกเขาจึงต้องถูกแยกออกจากการซิงค์นี้ คืออะไร เทคนิคบางอย่างในการบรรลุเป้าหมายนี้? นี่คือสิ่งที่ฉันคิดไว้จนถึงตอนนี้...

  • RSync : rsync สามารถทำสิ่งนี้ได้หรือไม่ ฉันไม่เคยใช้มันแต่ได้ยินมาว่าเหมาะสำหรับการคัดลอกไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่ง

  • SSH : ฉันไม่สะดวกใจอย่างยิ่งที่จะทำงานกับคำสั่งเชลล์ แต่ฉันนึกภาพออกว่านี่เป็นสถานที่ที่ "เหมาะสม" ที่จะทำการเปลี่ยนแปลงประเภทนี้ (ไม่แน่ใจว่าจะวนซ้ำและทำการเปลี่ยนแปลงอย่างไรแม้ว่าไดเร็กทอรีทั้งหมดยกเว้นไดเร็กทอรีบางตัวที่แตกต่างกัน)

  • PHP : ถ้าเป็นไปได้ ฉันอยากจะทำเช่นนี้ด้วย PHP ยกเว้นว่าเซิร์ฟเวอร์ของฉันใช้ SuPHP เพื่อความปลอดภัย และฉันไม่สามารถเลี่ยงการอนุญาตที่ต้องการได้ ฉันอาจจะเปลี่ยนมาใช้ fcgi ก็ได้... (เปิดรับข้อเสนอแนะสำหรับเรื่องนี้ด้วย)

โครงสร้างไฟล์ของฉันเป็นดังนี้:

    /home/model/
    /home/site1/
    /home/site2/
    /home/site3/
    /home/exception/
    /home/site5/
    /home/site6/
    /home/exception/

person filip    schedule 02.12.2010    source แหล่งที่มา


คำตอบ (1)


คำสั่ง Bash มีความเหมาะสมมากกว่าและมีแนวโน้มที่จะง่ายกว่า
เช่นได้รวม rysnc บวกลิงก์สัญลักษณ์ ln

โดยสรุป

ln -s /home/model/ /home/site1 
ln -s /home/model/ /home/site2
ln -s /home/model/ /home/site3

ดังนั้น มันจะซอฟต์ลิงก์ site1,site2,site3 เพื่อสร้างโมเดล

ลิงก์สัญลักษณ์คืออะไร
http://en.wikipedia.org/wiki/Symbolic_link

หลังจากนั้น คุณเพียงแค่ต้อง rsync การเปลี่ยนแปลงของคุณกับโมเดลไดเร็กทอรี
และการเปลี่ยนแปลงจะมีผลกับ site1,site2,site3
ทันที (เนื่องจากไดเร็กทอรีทั้งหมดเป็นลิงก์สัญลักษณ์ไปยังโมเดล)

สำหรับ site5, site6 เนื่องจากมีความแตกต่างกัน scp จึงพอดีกับรองเท้าดีกว่า

person ajreal    schedule 02.12.2010
comment
อ่า แนวทางที่เจ๋งมาก @ajreal ปัญหาเกี่ยวกับ symlink ก็คือไซต์ไม่เหมือนกันทั้งหมด แต่ทั้งหมดมีโครงสร้างเหมือนกัน แต่ไฟล์จำนวนมากไม่ซ้ำกัน สิ่งที่ฉันกำลังมองหาจริงๆ คือวิธีการเพิ่มไดเร็กทอรีไปยังทุกๆ ไซต์หรืออัปเดตไฟล์บางไฟล์ทั่วทั้งไซต์ได้อย่างง่ายดาย ตอนนี้กำลังดู scp อยู่ - person filip; 02.12.2010
comment
ลิงก์สัญลักษณ์ +1 เป็นตัวเลือกที่ดีกว่าการซิงค์ไฟล์จริงๆ - person Ish; 02.12.2010
comment
@Ish Kumar บางทีฉันอาจเข้าใจผิดลิงก์สัญลักษณ์ แต่ถ้าฉันมีไดเร็กทอรี /site1/, /site2/ ทั้งหมดเชื่อมโยงไปยัง /model/ ฉันจะจัดเก็บไฟล์ที่ไม่ซ้ำกันภายในไดเร็กทอรี symlink เหล่านี้ได้อย่างไร ในทางกลับกัน หากฉันเชื่อมโยงเฉพาะไฟล์และไดเร็กทอรีทั่วไป ฉันจะเพิ่มไดเร็กทอรีลงในแต่ละไซต์ได้อย่างไร ขอบคุณ - person filip; 02.12.2010
comment
@filip คุณควร softlink site1/common/ -› model/common และเก็บ site1/unique_files เป็นไฟล์ฟิสิคัล ดังนั้นในอนาคต หากคุณต้องการอัปเดตไฟล์ทั่วไป เพียงแค่แก้ไข model/common - person Ish; 02.12.2010
comment
ขอบคุณ @Ish Kumar ที่สมเหตุสมผล แต่อาจนำไปใช้ได้ยาก ณ จุดนี้ อยากรู้ว่าใครมีข้อเสนอแนะอื่น ๆ บ้าง - person filip; 02.12.2010