Comment configurer D7 pour que les fichiers soient téléchargés sur un autre serveur

9

Dans Drupal 7, le chemin par défaut pour le téléchargement est défini dans les options du système de fichiers dans le chemin du système de fichiers public. Est-il possible de spécifier un serveur différent dans ce chemin? J'ai un site Web Drupal 7 que nous développons qui contiendra environ 20k fichiers et je voudrais les mettre sur un serveur différent du serveur Web. S'il n'est pas possible de spécifier un serveur différent de celui, y a-t-il des modules contribués par l'utilisateur qui peuvent gérer cela?

John81
la source
Avez-vous terminé cette tâche.
Cindrella
Un module à ce sujet?
Dushyant Joshi

Réponses:

8

Je fais quelque chose de très similaire. Si vous exécutez une infrastructure capable de cette configuration, je recommande de servir un partage sur votre serveur de fichiers (Linux ou Windows Server) et de simplement le monter dans le chemin de fichier public de Drupal, où que se trouve le répertoire public pour ce champ particulier.

Par exemple, prenez la configuration Samba suivante (trouvée dans /etc/samba/smb.conf si vous exécutez un serveur de fichiers basé sur Linux). Cela vient à la fin du fichier après toutes les autres options de configuration:

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

La valid users syntaxe indique "permet à ce groupe d'utilisateurs" d'accéder à ce partage. Dans ce cas, nous utilisons PAM pour connecter notre serveur de fichiers à Active Directory, et ce groupe particulier est rendu disponible une fois que vous avez connecté les deux.

Sur votre serveur Web, quel que soit l'hébergeur de votre site Drupal, accédez au répertoire des fichiers publics. Supposons que le champ particulier dont vous avez besoin pour rendre les fichiers disponibles soit public: // field_with_20k_files /. Vous exécuteriez une commande de montage similaire comme ceci:

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

J'ai l' gidensemble sur le processus qui exécute le serveur Web afin qu'il ait accès à ce répertoire. Il est fort probable que vous souhaitiez vous assurer que le service Web dispose d'un accès en lecture et en écriture au serveur Web capable de télécharger des fichiers.

Lester Peabody
la source
Toutes les réponses sont bonnes, mais puisque nous avons le contrôle de l'infrastructure, cette réponse est la plus simple et la plus simple d'un point de vue Drupal à mettre en œuvre car nous n'avons pas besoin d'installer de nouveaux modules. Nous sommes dans un environnement Windows mais merci pour les étapes incroyablement détaillées fournies!
John81
Dans ce cas, vous pouvez simplement ignorer la configuration Samba et exécuter la commande mount directement en utilisant un nom d'utilisateur et un mot de passe disposant des autorisations Windows appropriées. Faites moi savoir si vous avez des questions.
Lester Peabody,
J'essaie de le faire, mais j'ai des problèmes. Mon centre de service a pu monter le serveur Windows, mais nous ne savions pas où aller à partir de là. J'ai essayé d'utiliser / mount_file_path comme répertoire de fichiers public, mais je reçois une erreur indiquant qu'il n'existe pas et n'a pas pu être créé.
nmillin
5

Une excellente option serait également l' API de stockage . Voici une citation à ce sujet (à partir de la page du projet du module):

... est un cadre de bas niveau pour le stockage et la gestion des fichiers gérés. Le module et toutes les fonctions de base resteront agnostiques des autres modules afin de fournir cette fonctionnalité de bas niveau. Les sous-modules sont les bienvenus pour permettre à l'API de stockage d'interagir avec d'autres modules contribués, mais il ne doit jamais y avoir d'instruction dependencies [] dans le fichier storage.info, sauf si cela est nécessaire pour la fonction de bas niveau de ce module.

Il présente les caractéristiques suivantes:

  • Architecture enfichable - elle peut être étendue pour fonctionner avec n'importe quel service de stockage.
  • Redondance - il peut être configuré pour stocker vos fichiers dans plusieurs services et changer instantanément celui qui sert. Cela signifie que votre site ne sera pas interrompu par un service ayant des problèmes .
  • API de contrôle d'accès - peut être utilisée pour le commerce électronique.
  • Déduplication - lorsque des fichiers identiques sont stockés dans le même conteneur, une seule instance sera créée. Cela économise de la bande passante et du stockage.
  • Intégration de champs de fichiers et d'images - activez le sous-module "pont principal".
  • Module d'audit - compare un manifeste de fichiers avec ce qui est enregistré dans la base de données pour garantir l'exactitude de l'enregistrement.
ropic
la source
4

Deux modules qui peuvent également aider dans ce domaine sont CDN (utilisé par de nombreux grands sites, dont Economist.com) et Amazon S3 (spécifiquement pour utiliser Amazon S3 au lieu du système de fichiers local).

Patrick Kenny
la source