Cómo hacer que Minio y otros proveedores de almacenamiento compatibles con S3 funcionen con WP Offload Media


WP Offload Media tiene muchos filtros que se pueden usar para cambiar su comportamiento, pero no muchas personas saben sobre ellos o lo que podría hacer con ellos. WP Offload Media solía funcionar solo con Amazon S3, pero recientemente agregué soporte para los espacios de DigitalCean y luego el almacenamiento de Google Cloud. Mientras desarrollaba el soporte para estos proveedores de almacenamiento adicionales, traté de aliviar las cosas para el uso de medios de descarga de WP y con otros proveedores de almacenamiento. A menudo se nos pregunta si WP Offload Media puede funcionar con él, con este o otro proveedor de almacenamiento compatible con S3 API. Nuestra respuesta ordinaria es “probablemente si usa algunos filtros, pero no lo intenté”.
Pensé que era hora de comenzar a explorar algunos de estos proveedores de almacenamiento compatibles con la API S3 para ver cuán fácil (o no) es hacer medios de descarga de WP para trabajar con ellos. Hay pocos que elegir, como Dreamhost DreamObjects, IBM Cloud Object Storage, Oracle Cloud Storage, Wasabi (vea nuestra guía de inicio rápido de almacenamiento en la nube de Wasabi) y Zenko. Empecé con Minio. ¿Qué es Minio? Minio describe que … el almacenamiento de objetos de código abierto 100%, de grado empresarial, Amazon S3 HMM compatible, eso no ayuda. Tal vez ayude si explico por qué lo elegí como el primer proveedor de almacenamiento compatible con S3 para probar.
Minio es un servicio S3 que puede ejecutar en sus propios servidores o incluso en su propio automóvil de escritorio. Esto significa que no tuve que inscribirme en nada, puedo usar mi máquina de desarrollo para una velocidad pura inalterada y no hay tarifas de ancho de banda al probar, probar y probar la funcionalidad de WP Offload Media nuevamente. La configuración de Miniio No intentamos escribir una guía exhaustiva para el uso de minio aquí, por lo que solo indicaré la guía de inicio rápido. Explica cómo instalar y ejecutar rápidamente a través de Docker o con un binario nativo en MacOS, Linux, Windows o FreeBSD. Para mí, en mi máquina de desarrollo de MacCos, fue muy fácil de instalar a través de Homebrew. Instale el servidor minio/estable/minio mkdir -p ~/minio/data minio-dirección: 54321 ~/minio/fecha Esto me hizo trabajar con un servidor minio que se ejecuta en el puerto 54321 y almacenar sus datos en un subdirector de mi director de origen . Elegí el puerto 54321 en lugar de 9000 por defecto, porque ya lo uso para PHP y/o XDEBUG. Además, 54321 está en el rango de puertos “privados” que son gratuitos para ser utilizados, ya que cree que es apropiado y recordaré fácilmente.
Debido a que no utilicé ninguna de las otras opciones para asignar claves de acceso (puede verificar las opciones de configuración del servidor con Minio Server -Help), Minio me ha generado algunas claves.
Cuando visité http://127.0.0.1:54321, recibí una solicitud de conexión donde podía ingresar las claves de acceso.

Esto me llevó al minio navegador, su equivalente a la consola de AWS.

Este minio navegador parece bastante vacío, sin embargo, es hora de resolver esto. Configuración de los medios de descarga de WP ahora comienza la diversión, porque tenemos que decir que WP Offload Media que usa un servicio S3, pero que debe usar diferentes direcciones de URL de lo normal para acceder al cubo. Primero, tomé esas minio claves de acceso a mí y a mí y a mí y a mí y a mí. Los agregó a definir as3cf_settings en el archivo wp-config.php de mi sitio. Define (‘as3cf_settings’, serialize (array (‘proveedor’ => ‘aws’, ‘access-key -id’ => wa0xxxp74nsr8sgmewyf ‘,’ secret-shele ‘=>’ gckwmwnsl+z6drugcaitxkqnbqd3bp ‘,));); Esta es la parte fácil, WP Descargar Media ahora usará la API S3 con credenciales definidas. Ahora tenemos que dirigir los medios de descarga de WP a una URL de “punto final” diferente para leer y escribir compartimentos y objetos. Para hacer esto, llamamos al complemento de Tweaks de medios de descarga de WP, que es donde “documentamos” 😉 cómo usar algunos de los filtros de medios de descarga WP más útiles.

Descargué, instalé y activé el complemento Tweaks, luego agregué la siguiente función a su clase Amazon_S3_And_CloudFront_TWeaks. Función minio_s3_client_args ($ args) {// El ejemplo cambia el punto final para conectarse a un servidor minio local configurado para usar 54321 (el minio puerto predeterminado es 9000). $ args [‘Endpoint’] = ‘http://127.0.0.1:54321’; // El ejemplo obliga a SDK a usar URL de punto final con nombre de cubo en la velocidad PathR que el nombre de dominio según lo requerido por Minio. $ args [‘use_patch_style_endpoint’] = true; devolver $ args; } También agregué la siguiente llamada add_filter () a __construct () para que la nueva función se use. Ahora, cuando WP Offload Media está tratando de hablar con S3, utilizará la URL de mi minio servidor local y usará el “cubo de URL en ruta” correcto que Minio requiere. Mientras estuve allí, agregué los siguientes dos bits para asegurarme de que solo haya una región, porque no tiene sentido usar más de uno con un minio servidor local. // agregado a __construct () add_filter (‘as3cf_aws_get_gions’, array ($ this, ‘minio_get_regions’)); // agregado a Amazon_S3_and_Cloudfront_TWeaks Function Minio_get_regions ($ regions) {$ regions = array (‘us-aast-1’ => default ‘); devolver $ regiones; } Con esto, cuando se instaló WP Offload Media en mi sitio y visité Configuración -> Descargar los medios, estaba directamente en la pantalla “Seleccionar cubo”. Un clic en “Explorar los cubos existentes” confirmó que WP Descargar Media podría acceder al Minio Servicio sin ningún error, aunque sin mucho que mostrar.
Notará que él escribe “Amazon S3” como proveedor de almacenamiento, ¡pero le aseguro que ha estado conectado a mi minio servidor! Solo usamos la API S3 interna y no tenemos filtros en este momento para cambiar el nombre. Tal vez algún día agreguemos esto si los clientes quieren cambiar cosas no críticas como esa. Fue un problema simple usar el enlace “Crear un nuevo cubo”, para ingresar mi nuevo nombre “Ianmjones-Wpom-Mina” (sí, sí, lo sé, nombre terrible, pero uso un formato similar para todos mis cubos de prueba ) y hice clic en “Crear una nueva colección”. Esto funcionó, y ahora estaba en la configuración de los medios de descarga de WP con todo lo que debería.
Bueno, casi todo como debería, ¡pero lo llegaremos en un minuto! Completamente configurado, era hora de descargar los elementos de la biblioteca de medios que tenía en el sitio usando el botón “Descargar” que vio en la captura de pantalla anterior.
¡Sí, una descarga de medios súper rápida sin errores! Cuando revisamos el minio navegador, hay mucho que ver ahora.

Sin embargo, cuando vi uno de los elementos de la biblioteca de medios que se habían descargado, todo no era bueno.

¡Don! 🤦‍️ Olvidé cambiar el formato de URL que WP Offload Media debería usar para transmitir el contenido de medios descargados. Entonces tenía una URL como esta …

http://s3.amazonaws.com/ianmjones-wpom-minio/wp-content/uploads/2019/04/17132127/0001_takxap853ry.jpeg en retrospectivo, cuando observa la pantalla de pantalla con la configuración inmediatamente después de crear la compartimento en la competencia En WP Offload Media, puede ver que la “URL de vista previa” usa otro formato AWS S3. Claramente, no funcionará, ¡así que volvemos al complemento Tweaks! // agregado a __construct () add_filter (‘as3cf_aws_s3_url_domain’, array ($ this, ‘minio_s3_url_domain’), 10, 6); // agregado a Amazon_S3_and_CloudFront_Tweaks Function Minio_S3_URL_Domain ($ Domain, $ bucket, $ región, $ expiros, $ args, $ previo) {// minio laes no un prefijo de región, y siempre el cubo en el parche. Regreso ‘127.0.0.1:54321/’. $ cubo; } Que el filtro AS3CF_AWS_S3_URL_Domain le permite cambiar la primera parte de la URL utilizada para transmitir el contenido de los medios, todo el punto donde el objeto del objeto comienza en el compartimento. Con una gran espera, volví a la página del artículo de la Biblioteca de Medios y refrescé para ver … el mismo problema, otro campo. La URL parecía justa, pero todavía me dio 403 errores de acceso rechazados. Así que salté sobre el minio navegador, encontré la imagen original y usé su pequeño botón “…” para obtener la URL de la imagen. Cuando lo metí en una nueva pestaña del navegador, funcionó bien, ¡pero la URL estaba firmada! Comenzó bien, algo como esto … http://127.0.0.1:54321/ianmjones-wpom-minio/wp-content/uploads/2019/04/17132127/0001_takxap853ry.jpeg … pero luego tuvo todo lo usual Parámetros en quién esperaría un objeto privado. X-AMZ-Algorithm = AWS4-HMAC-SHA256 & X-AMZ-CREDIT = WA0XXXP74NSR8SGMEWYF%2F20190417%2FS3%2FAWS4_REQUEST &


X-AMZ-DATE = 20190417T134240Z & X-AMZ-EXIRES = 604800 & X-AMZ-SIGNEDHEADERS = host & X-AMZ-Signature = 305D4E3584B165C7BEF04C0C0C02041FAB0F3FCCC4CA43CF9B8AB8AB81B4E981B4E981B4E981B4E981B4E981B4E981B4E981B4E9817. Parece que Minio no acepta ACL de objetos en absoluto, sino solo políticas grupales. Por defecto, el cubo es privado. Vaya. No importa, aunque es posible que los medios de descarga de WP no puedan cambiar el ACL de los objetos que descargan en Minio, al menos podrían reclamar escribir archivos privados y, por lo tanto, firmar cualquier URL que genere en contenido. ¿Quizás eso funcionaría? // agregado a __construct () add_filter (‘as3cf_upload_acl’, array ($ this, ‘minio_upload_acl’), 10, 1); add_filter (‘as3cf_upload_acl_sizes’, array ($ this, ‘minio_upload_acl’), 10, 1); // agregado a Amazon_S3_and_CloudFront_TWeaks Function Minio_upload_acl ($ acl) {return ‘private’; } Tenemos dos filtros para modificar el ACL en el que los objetos se dan en el cubo durante una descarga, uno para el archivo original del artículo de la biblioteca de medios y otro para cualquier miniatura (dimensiones) que pueda tener. Cuando se utilizan para cambiar el ACL en privado, la descarga de WP Media recuerda esto y asegura que firmen cualquier URL que genere para el elemento de la biblioteca de medios. ¡Éxito! Después de un baile rápido “Eliminar todos los archivos del cubo” y “Descargar ahora”, tenemos el contenido de medios privados de Minio.

Sin embargo, realmente no quería que las URL firmen todos mis entornos, así que observé cómo agregar una política al compartimento para permitir el acceso público solo en lectura.Si bien el documento sobre cómo usar AWS PHP SDK con Minio muestra la política de estilo JSON necesaria, puede actualizar la política a través del minio navegador.Cuando vaya con el mouse sobre el nombre del compartimento a la izquierda, puede usar la opción de menú “Editar la política” Después de hacer clic en el botón Vertical “…”.Luego agregue un prefijo, agregué “/WP-Content”, elija una política, “solo lectura” en este caso, luego haga clic en el botón “Agregar”. Como resultado, comenté los dos filtros as3cf_upload_acl* en los ajustes, i i Han bailado nuevamente eliminar la descarga para asegurarse de que los medios de comunicación descargados de WP creyeran que los objetos tienen acceso público, y Bob es su tío, tenemos medios públicos que se les atiende a Minio.

Es posible que esta captura de pantalla no se vea muy diferente a la anterior, pero busque cuidadosamente la metacase “descargar” y verá “Access: Public”. Woo hoo! 🎉 Ahora era solo una picazón pequeña, el enlace cerca del nombre del cubo en la página de configuración de WP de WP Media no funcionó. Estaba tratando de ir a la consola de AWS. https://console.aws.amazon.com/s3/home?bucket=ianmjones-wpom-minio&prefix=wp-content/uploads/ Lo que necesitaba era algo así como … http://127.0.0.1:54321/minio /Ianmjones-wpom-minio/wp-content/uploads/Afortunadamente, también tenemos filtros para ello. add_filter (‘as3cf_aws_s3_console_url’, array ($ this, ‘minio_s3_console_url’)); add_filter (‘as3cf_aws_s3_console_url_prefix_param’, array ($ this, ‘minio_s3_console_url_prefix_param’)); // Se agregó a Amazon_S3_and_Cloudfront_Tweaks Function Minio_S3_Console_url ($ url) {return ‘http://127.0.0.1:54321/minio/’; } function minio_s3_console_url_prefix_param ($ param) {return ‘/’; } El filtro AS3CF_AWS_S3_Console_url le permite cambiar la URL básica utilizada para llevarlo a la consola del proveedor desde la configuración de medios de descarga WP. El filtro AS3CF_AWS_S3_Console_URL_PREFIX_PARAM indica lo que debería estar en la URL de la consola antes del valor de la ruta. Por ejemplo, el valor predeterminado para AWS/S3 es “? Prefix =”, pero Minio solo agrega el prefijo de la ruta directamente después del nombre del compartimento. ¡Y te gustaría, Adam y Eva, que solo funciona! 👀



Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *