วิธีกำหนดค่า D7 เพื่อให้ไฟล์อัปโหลดไปยังเซิร์ฟเวอร์อื่น


9

ใน Drupal 7 พา ธ เริ่มต้นสำหรับการอัปโหลดจะถูกตั้งค่าในตัวเลือกระบบไฟล์ในพา ธ ระบบไฟล์สาธารณะ เป็นไปได้หรือไม่ที่จะระบุเซิร์ฟเวอร์อื่นในเส้นทางนี้? ฉันมีเว็บไซต์ Drupal 7 ที่เรากำลังพัฒนาซึ่งจะมีไฟล์ประมาณ 20k และฉันต้องการวางไว้บนเซิร์ฟเวอร์ที่แตกต่างจากเว็บเซิร์ฟเวอร์ หากไม่สามารถระบุเซิร์ฟเวอร์ที่แตกต่างได้จะมีโมดูลใดที่ผู้ใช้สามารถจัดการได้


คุณเสร็จงานนี้หรือไม่
Cindrella

มีโมดูลเกี่ยวกับเรื่องนี้ไหม?
Dushyant Joshi

คำตอบ:


8

ฉันทำสิ่งที่คล้ายกันมาก หากคุณใช้โครงสร้างพื้นฐานที่สามารถกำหนดค่านี้ได้ฉันขอแนะนำให้แชร์ไฟล์เซิร์ฟเวอร์ของคุณ (Linux หรือ Windows Server) และติดตั้งในพา ธ ไฟล์สาธารณะของ Drupal ไม่ว่าจะเป็นไดเรกทอรีสาธารณะสำหรับฟิลด์นั้น

ตัวอย่างเช่นใช้การกำหนดค่า Samba ต่อไปนี้ (พบใน /etc/samba/smb.conf หากคุณใช้เซิร์ฟเวอร์ไฟล์ที่ใช้ Linux) นี่เป็นจุดสิ้นสุดของไฟล์หลังจากตัวเลือกการกำหนดค่าอื่น ๆ ทั้งหมด:

[data]
    comment = Data directory
    browseable = yes
    writable = yes
    valid users = "@DOMAIN\Domain Admins"
    path = /data
    create mask = 0664
    force create mode = 0664

valid users ไวยากรณ์มีกล่าวว่า "ช่วยให้กลุ่มของผู้ใช้นี้" เพื่อเข้าถึงร่วมกันนี้ ในกรณีนี้เรากำลังใช้ PAM เพื่อเชื่อมต่อเซิร์ฟเวอร์ไฟล์ของเรากับ Active Directory และกลุ่มนี้จะพร้อมใช้งานเมื่อคุณเชื่อมต่อสองไฟล์เข้าด้วยกัน

บนเว็บเซิร์ฟเวอร์ของคุณไม่ว่าจะโฮสต์เว็บไซต์ Drupal ของคุณไปที่ไดเรกทอรีไฟล์สาธารณะ กล่าวว่าฟิลด์ที่คุณต้องการทำให้ไฟล์พร้อมใช้งานนั้นเป็นแบบสาธารณะ: // field_with_20k_files / คุณต้องการเรียกใช้คำสั่ง mount ที่คล้ายกันดังนี้

sudo mount -t cifs -o user=domainadministrator,uid=domainadministrator,gid=apache //fileserver/data /path/to/field_with_20k_files

ฉันได้gidตั้งค่าให้กระบวนการใดก็ตามกำลังเรียกใช้เว็บเซิร์ฟเวอร์ดังนั้นจึงสามารถเข้าถึงไดเรกทอรีนั้นได้ เป็นไปได้ว่าคุณต้องการให้แน่ใจว่าบริการเว็บมีการเข้าถึงแบบอ่านและเขียนไปยังเว็บเซิร์ฟเวอร์จริง ๆ แล้วสามารถอัพโหลดไฟล์ได้


คำตอบทั้งหมดนั้นดี แต่เนื่องจากเรามีการควบคุมโครงสร้างพื้นฐานคำตอบนี้เป็นวิธีที่ง่ายที่สุดและตรงไปตรงมาที่สุดจากจุดยืนของ Drupal ที่จะนำมาใช้เนื่องจากเราไม่ต้องติดตั้งโมดูลใหม่ใด ๆ เราอยู่ในสภาพแวดล้อมของ Windows แต่ขอบคุณสำหรับขั้นตอนอย่างละเอียดอย่างไม่น่าเชื่อ!
John81

ในกรณีนั้นคุณสามารถข้ามการกำหนดค่า Samba และเพียงเรียกใช้คำสั่ง mount โดยตรงโดยใช้ชื่อผู้ใช้และรหัสผ่านที่มีการตั้งค่าการอนุญาต Windows ที่เหมาะสม แจ้งให้เราทราบหากคุณมีคำถามใด ๆ
เลสเตอร์พีบอดี

ฉันพยายามทำสิ่งนี้ แต่ฉันมีปัญหา ศูนย์บริการของฉันสามารถเมานต์เซิร์ฟเวอร์ Windows ได้ แต่เราไม่รู้ว่าจะไปจากที่นั่นได้อย่างไร ฉันพยายามใช้ / mount_file_path เป็นไดเรกทอรีไฟล์สาธารณะ แต่ฉันพบข้อผิดพลาดว่าไม่มีอยู่และไม่สามารถสร้างได้
nmillin

5

นอกจากนี้ยังมีตัวเลือกที่ดีที่จะเป็นการจัดเก็บ API นี่คือคำพูดเกี่ยวกับมัน (จากหน้าโครงการของโมดูล):

... เป็นเฟรมเวิร์กระดับต่ำสำหรับการจัดเก็บและการให้บริการไฟล์ที่มีการจัดการ โมดูลและฟังก์ชั่นหลักทั้งหมดจะยังคงไม่เชื่อเรื่องพระเจ้าของโมดูลอื่น ๆ เพื่อมอบการทำงานระดับต่ำนี้ โมดูลย่อยยินดีต้อนรับที่จะอนุญาตให้ Storage API โต้ตอบกับโมดูลที่สนับสนุนอื่น ๆ แต่จะไม่มีคำสั่ง [] ในไฟล์ storage.info เว้นแต่จะจำเป็นสำหรับฟังก์ชั่นระดับต่ำของโมดูลนี้

มันมีคุณสมบัติดังต่อไปนี้:

  • สถาปัตยกรรมที่เสียบได้ - สามารถขยายให้ทำงานกับบริการเก็บข้อมูลใด ๆ ได้
  • ความซ้ำซ้อน - สามารถกำหนดค่าให้เก็บไฟล์ของคุณในบริการต่าง ๆ และเปลี่ยนทันทีที่ไฟล์ใดไฟล์หนึ่งกำลังแสดงอยู่ ซึ่งหมายความว่าเว็บไซต์ของคุณจะไม่ถูกนำมาลงโดยบริการมีปัญหา
  • API การควบคุมการเข้าถึง - สามารถใช้กับอีคอมเมิร์ซได้
  • การคัดลอกซ้ำ - เมื่อไฟล์ที่เหมือนกันถูกเก็บไว้ในที่เก็บเดียวกันจะสร้างเพียงหนึ่งอินสแตนซ์เท่านั้น สิ่งนี้จะช่วยประหยัดแบนด์วิดธ์และพื้นที่เก็บข้อมูล
  • การรวมฟิลด์ไฟล์และรูปภาพ - เปิดใช้งานโมดูลย่อย "core bridge"
  • Audit module - เปรียบเทียบรายการของไฟล์กับสิ่งที่บันทึกไว้ในฐานข้อมูลเพื่อให้แน่ใจว่าบันทึกนั้นถูกต้อง

4

สองโมดูลที่อาจช่วยในเรื่องนี้คือCDN (ใช้โดยไซต์ขนาดใหญ่จำนวนมากรวมถึง Economist.com) และAmazon S3 (โดยเฉพาะสำหรับการใช้ Amazon S3 แทนระบบไฟล์โลคัล)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.