So konfigurieren Sie D7, damit Dateien auf einen anderen Server hochgeladen werden

9

In Drupal 7 wird der Standardpfad für das Hochladen in den Dateisystemoptionen im Pfad des öffentlichen Dateisystems festgelegt. Ist es möglich, in diesem Pfad einen anderen Server anzugeben? Ich habe eine Drupal 7-Website, die wir entwickeln und die ungefähr 20.000 Dateien enthalten wird, und ich möchte sie auf einem anderen Server als dem Webserver ablegen. Wenn es nicht möglich ist, einen anderen Server anzugeben, als es vom Benutzer bereitgestellte Module gibt, die dies verarbeiten können?

John81
quelle
Haben Sie diese Aufgabe abgeschlossen?
Cindrella
Irgendein Modul dazu?
Dushyant Joshi

Antworten:

8

Ich mache etwas sehr ähnliches. Wenn Sie eine Infrastruktur ausführen, die diese Konfiguration unterstützt, empfehle ich, eine Freigabe auf Ihrem Dateiserver (Linux oder Windows Server) bereitzustellen und diese einfach im öffentlichen Dateipfad von Drupal bereitzustellen, wo immer sich das öffentliche Verzeichnis für dieses bestimmte Feld befindet.

Nehmen Sie beispielsweise die folgende Samba-Konfiguration (in /etc/samba/smb.conf, wenn Sie einen Linux-basierten Dateiserver ausführen). Dies steht am Ende der Datei nach allen anderen Konfigurationsoptionen:

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

Die dortige valid users Syntax lautet "Ermöglicht dieser Benutzergruppe" den Zugriff auf diese Freigabe. In diesem Fall verwenden wir PAM, um unseren Dateiserver mit Active Directory zu verbinden, und diese bestimmte Gruppe wird verfügbar, sobald Sie die beiden verbinden.

Navigieren Sie auf Ihrem Webserver, unabhängig davon, was Ihre Drupal-Site hostet, zum Verzeichnis der öffentlichen Dateien. Angenommen, das Feld, für das Sie die Dateien verfügbar machen möchten, ist öffentlich: // field_with_20k_files /. Sie würden einen ähnlichen Mount-Befehl wie folgt ausführen:

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

Ich habe gidfestgelegt, welcher Prozess den Webserver ausführt, damit er Zugriff auf dieses Verzeichnis hat. Höchstwahrscheinlich möchten Sie sicherstellen, dass der Webdienst Lese- und Schreibzugriff auf den Webserver hat und tatsächlich Dateien hochladen kann.

Lester Peabody
quelle
Alle Antworten sind gut, aber da wir die Kontrolle über die Infrastruktur haben, ist diese Antwort vom Drupal-Standpunkt aus am einfachsten und unkompliziertesten zu implementieren, da wir keine neuen Module installieren müssen. Wir befinden uns in einer Windows-Umgebung, aber danke für die unglaublich detaillierten Schritte!
John81
In diesem Fall können Sie die Samba-Konfiguration einfach überspringen und den Befehl mount direkt mit einem Benutzernamen und einem Kennwort ausführen, für die die entsprechenden Windows-Berechtigungen eingerichtet sind. Lassen Sie mich wissen, wenn Sie Fragen haben.
Lester Peabody
Ich versuche das zu tun, aber ich habe Probleme. Mein Servicecenter konnte den Windows-Server bereitstellen, aber wir wussten nicht, wohin wir von dort aus gehen sollten. Ich habe versucht, / mount_file_path als öffentliches Dateiverzeichnis zu verwenden, erhalte jedoch die Fehlermeldung, dass es nicht vorhanden ist und nicht erstellt werden konnte.
Nmillin
5

Eine ausgezeichnete Option wäre auch die Speicher-API . Hier ist ein Zitat dazu (von der Projektseite des Moduls):

... ist ein Low-Level-Framework für die Speicherung und Bereitstellung von verwalteten Dateien. Das Modul und alle Kernfunktionen bleiben gegenüber anderen Modulen unabhängig, um diese Funktionalität auf niedriger Ebene bereitzustellen. Submodule ermöglichen es der Speicher-API, mit anderen Modulen zu interagieren. In der Datei storage.info darf jedoch niemals eine dependencies [] -Anweisung enthalten sein, es sei denn, dies ist für die Low-Level-Funktion dieses Moduls erforderlich.

Es hat die folgenden Funktionen:

  • Steckbare Architektur - Sie kann erweitert werden, um mit jedem Speicherdienst zu arbeiten.
  • Redundanz - Sie kann so konfiguriert werden, dass Ihre Dateien in mehreren Diensten gespeichert werden und sofort geändert wird, welcher Dienst bereitgestellt wird. Dies bedeutet, dass Ihre Website nicht von einem Dienst mit Problemen heruntergefahren wird .
  • Zugriffssteuerungs-API - kann für den E-Commerce verwendet werden.
  • Deduplizierung - Wenn identische Dateien im selben Container gespeichert werden, wird nur eine Instanz erstellt. Dies spart Bandbreite und Speicherplatz.
  • Datei- und Bildfeldintegration - Aktivieren Sie das Untermodul "Core Bridge".
  • Überwachungsmodul - vergleicht ein Manifest von Dateien mit dem, was in der Datenbank aufgezeichnet ist, um sicherzustellen, dass die Aufzeichnung korrekt ist.
ropic
quelle
4

Zwei Module, die auch in diesem Bereich hilfreich sein können, sind CDN (von vielen großen Websites, einschließlich Economist.com, verwendet) und Amazon S3 (speziell für die Verwendung von Amazon S3 anstelle des lokalen Dateisystems).

Patrick Kenny
quelle