Cómo configurar D7 para que los archivos se carguen en un servidor diferente

9

En Drupal 7, la ruta predeterminada para cargar se establece en las opciones del sistema de archivos en la ruta del sistema de archivos público. ¿Es posible especificar un servidor diferente en esta ruta? Tengo un sitio web Drupal 7 que estamos desarrollando que tendrá unos 20k archivos y me gustaría ponerlos en un servidor diferente al servidor web. Si no es posible especificar un servidor diferente al que hay algún módulo contribuido por el usuario que pueda manejar esto.

John81
fuente
¿Has completado esta tarea?
Cindrella
¿Algún módulo con respecto a esto?
Dushyant Joshi

Respuestas:

8

Hago algo muy similar Si está ejecutando una infraestructura que es capaz de esta configuración, le recomiendo servir un recurso compartido en su servidor de archivos (Linux o Windows Server) y simplemente montarlo en la ruta de archivo pública de Drupal, donde sea que esté el directorio público para ese campo en particular.

Por ejemplo, tome la siguiente configuración de Samba (que se encuentra en /etc/samba/smb.conf si ejecuta un servidor de archivos basado en Linux). Esto viene al final del archivo después de todas las demás opciones de configuración:

[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 sintaxis allí dice "permite que este grupo de usuarios" acceda a este recurso compartido. En este caso, estamos usando PAM para conectar nuestro servidor de archivos a Active Directory, y este grupo en particular estará disponible una vez que conecte los dos.

En su servidor web, lo que sea que aloje su sitio Drupal, vaya al directorio de archivos públicos. Digamos que el campo particular para el que necesita que estén disponibles los archivos es público: // field_with_20k_files /. Ejecutarías un comando de montaje similar así:

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

Tengo el gidconjunto para cualquier proceso que ejecute el servidor web para que tenga acceso a ese directorio. Lo más probable es que desee asegurarse de que el servicio web tenga acceso de lectura y escritura al servidor web que realmente sea capaz de cargar archivos.

Lester Peabody
fuente
Todas las respuestas son buenas, pero dado que tenemos el control de la infraestructura, esta respuesta es la más fácil y directa desde el punto de vista de Drupal, ya que no tenemos que instalar ningún módulo nuevo. Estamos en un entorno de Windows, pero gracias por los pasos increíblemente detallados proporcionados.
John81
En ese caso, básicamente puede omitir la configuración de Samba y simplemente ejecutar el comando de montaje directamente usando un nombre de usuario y contraseña que tenga la configuración de permisos de Windows adecuada. Hazme saber si tienes alguna pregunta.
Lester Peabody
Estoy tratando de hacer esto, pero tengo problemas. Mi centro de servicio pudo montar el servidor de Windows, pero no sabíamos a dónde ir desde allí. Intenté usar / mount_file_path como el directorio de archivos públicos, pero recibo un error que dice que no existe y que no se pudo crear.
nmillin
5

También una excelente opción sería la API de almacenamiento . Aquí hay una cita al respecto (de la página del proyecto del módulo):

... es un marco de bajo nivel para el almacenamiento y servicio de archivos administrados. El módulo y todas las funciones principales seguirán siendo independientes de otros módulos para proporcionar esta funcionalidad de bajo nivel. Los submódulos son bienvenidos para permitir que Storage API interactúe con otros módulos contribuidos, pero nunca habrá una declaración de dependencias [] en el archivo storage.info a menos que sea necesario para la función de bajo nivel de este módulo.

Tiene las siguientes características:

  • Arquitectura enchufable: se puede ampliar para trabajar con cualquier servicio de almacenamiento.
  • Redundancia: se puede configurar para almacenar sus archivos en múltiples servicios y cambiar instantáneamente cuál está sirviendo. Esto significa que su sitio no será derribado por un servicio que tenga problemas .
  • API de control de acceso: se puede utilizar para el comercio electrónico.
  • Deduplicación : cuando los archivos que son idénticos se almacenan en el mismo contenedor, solo se creará una instancia. Esto ahorra ancho de banda y almacenamiento.
  • Integración de campo de archivo e imagen: habilite el submódulo "puente central".
  • Módulo de auditoría: compara un manifiesto de archivos con lo que se registra en la base de datos para garantizar que el registro sea exacto.
ropic
fuente
4

Dos módulos que también pueden ayudar en esta área son CDN (utilizado por muchos sitios grandes, incluido Economist.com) y Amazon S3 (específicamente para usar Amazon S3 en lugar del sistema de archivos local).

Patrick Kenny
fuente