Медиа-активы Magento в Amazon S3


21

Меня спросили, как сохранить все медиа-ресурсы magento в Amazon S3. Я подумал об использовании PHP Stream Wrapper следующим образом: https://github.com/punkave/aS3StreamWrapper и просто установил папку мультимедиа s3: \ mybucket \ mediaFolder

У кого-нибудь есть опыт с этим?

Или лучше использовать что-то вроде этого: https://github.com/sstoiana/magento-s3 Но это расширение выглядит не очень хорошо. Любые другие рекомендации?


1
Так же, как в сторону. Какова ваша мотивация? Если вы не обслуживаете глобальную аудиторию, или не используете больше трафика, чем интерфейс вашего сервера (> 100 Мбит / 1 Гбит), или у вас есть провайдер сервера с плохой передачей (что само по себе является проблемой) - CDN обычно медленнее, чем обслуживание контента напрямую с той же машины. Переполненные сети, удаленные точки останова и плохие маршруты обычно приводят к более медленной доставке контента, чем просто размещение его самостоятельно.
Бен Лессани - Сонасси

1
Мотивация такова: кто-то спросил меня о моем опыте и мнении, и я подумал об этом и предпочел решение для потоковой упаковки, но у нас есть этот крутой сайт, и, возможно, у кого-то есть два его цента для меня :-)
Фабиан Блехшмидт

@sonassi, похоже, ваш опыт работы с CDN несколько устарел. Все зрелые решения CDN географически распределяют контент в гораздо большем масштабе, чем вы можете себе позволить для своих веб-серверов, и будут доставлять контент из ближайшего географического местоположения запрашивающему клиенту. Также важно оптимизировать # HTTP-запросов на вашем сайте, используя конвейер ресурсов для конкатенации и минимизации js / css, но это гораздо сложнее, особенно для сайтов Magento.
Ральф Тис

@RalphTice Не слишком устарело, учитывая, что у нас есть собственная сеть BGP anycast на 3 континентах. Большинство «доступных» CDN имеют отдельные PoP на страну (некоторые только на континент), что не обязательно географически ближе к вашему веб-серверу. Например. Ближайшая точка доступа GB для Amazon - Ирландия, которая имеет гораздо большую задержку, чем машина, базирующаяся в Англии. Поэтому я повторяю, что, если вы не ориентируетесь на глобальную аудиторию, маловероятно, что ваши местные клиенты получат какую-либо пользу от CDN. В некоторых случаях это медленнее, не говоря уже о более дорогих и сложных.
Бен Лессани - Сонасси

ребята, я использовал расширение thaiphan / magento-s3 для корзины s3, оно работает с загрузкой изображений продуктов на s3 и соединением с изображениями продуктов, но оно также будет генерировать изображения продуктов на моем системном сервере. Мне просто нужно использовать S3 Bucket для изображений, поэтому я также попытался удалить паб / медиа / каталог моей системы, но после загрузки страницы продукта изображения продукта воссоздаются на моем системном сервере. нужно ли остановить этот образ, созданный на локальном сервере?
Camit1dk

Ответы:


6

кажется, что эти парни находят решение: ( http://thinkglobal.co/resources/moving-the-magento-media-directory-to-s3/ )

Существует два возможных подхода: один - заставить Magento выдвинуть все медиаресурсы на S3 по мере их создания, а другой - просто смонтировать каталог медиа в корзину S3 и позволить Magento думать, что он записывает на локальный диск. Мы выбрали последнее.

В итоге мы использовали инструмент под названием s3fs, который использует более широкую технологию fuse. С некоторой довольно простой конфигурацией (описанной ниже) вы можете запустить и запустить s3fs. Будьте осторожны, чтобы не вводить жесткие коды имен сегментов S3 или учетных данных доступа к API, если вы используете AWS или другого поставщика PAAS.

Убедитесь, что вы заменили следующие переменные значениями для вашей конкретной конфигурации:

  • {{S3_BUCKET}} (название вашей корзины S3)
  • {{API_PUBLIC_ACCESS_KEY}} (предоставлено AWS)
  • {{API_SECRET_ACCESS_KEY}} (предоставлено AWS)
  • {{UID}} (идентификатор пользователя для пользователя nginx / apache)
  • {{GID}} (идентификатор группы для пользователя nginx / apache)
  • {{MOUNTED_DIRECTORY}} (путь к вашей директории мультимедиа)

Вот установка:

yum install -y gcc libstdc++-devel gcc-c++ curl curl* curl-devel libxml2 libxml2* libxml2-devel openssl-devel mailcap

cd /usr/local/src
wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.9.3/fuse-2.9.3.tar.gz
tar -xzf fuse-2.9.3.tar.gz
rm -f fuse-2.9.3.tar.gz
mv fuse-2.9.3 fuse
cd fuse/
./configure prefix=/usr
make
make install
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/
ldconfig
modprobe fuse
pkg-config modversion fuse

wget http://s3fs.googlecode.com/files/s3fs-1.74.tar.gz
tar -xzvf s3fs-1.74.tar.gz
rm -f s3fs-1.74.tar.gz
mv s3fs-1.74 s3fs
cd s3fs
./configure prefix=/usr
make
make install

echo “{{S3_BUCKET}}:{{API_PUBLIC_ACCESS_KEY}}:{{API_SECRET_ACCESS_KEY}}” > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

echo user_allow_other > /etc/fuse.conf

echo s3fs#{{S3_BUCKET}} {{MOUNTED_DIRECTORY}} fuse use_cache=/tmp,allow_other,uid={{UID}},gid={{GID}} 0 0″ >> /etc/fstab

s3fs -o allow_other -o uid={{UID}} -o gid={{GID}} -ouse_cache=/tmp {{S3_BUCKET}} {{MOUNTED_DIRECTORY}}

2
Похоже, это также рекомендуемый путь AWS s3.amazonaws.com/quickstart-reference/magento/latest/doc/… стр. 11 (по крайней мере, до тех пор, пока AWS EFS не станет доступным)
pHiL

1
Хотя это решение хорошо, я считаю, что оно работает очень медленно. Как вы справились с этим? Кажется, что когда Magento генерирует URL, он проверяет файловую систему, чтобы убедиться, что файл существует.
greatwitenorth

2

Расширение OnePica CDN очень удобно для этой функциональности и поддерживает не только S3. Цитата: «В настоящее время расширение интегрируется с Amazon S3, Coral CDN, Mosso / Rackspace Cloud Files и любым CDN, сервером или службой, поддерживающими FTP, FTPS или SFTP».


+1 - могу подтвердить, что OnePica работает довольно хорошо и поддерживает как S3, так и Rackspace Cloud.
Philwinkle

4
OnePica - только менеджер CDN, значит, файлы все еще локальные
Фабиан Блехшмидт

@FabianBlechschmidt Вы должны быть более конкретными с вашим комментарием. Расширение OnePica, безусловно, не оставляет файлы локально при правильной установке / настройке, и я сам использую его в работе с Amazon S3.
Ральф Тис

Может быть, я что-то пропустил. Вы имеете в виду, что файлы загружаются на S3 и не более в медиа / каталог / ...?
Фабиан Блехшмидт

1
К вашему сведению, это также должно работать с решением для замены в DreamObjects S3. До сих пор он отлично работал с любым другим ковшом S3.
Иллюминат

1

Расширение OnePica CDN не является решением, оно работает только для образов продуктов, не говоря уже о том, что вам нужно установить правильный TTL для его собственного времени жизни кэша, которое истечет намного раньше, чем Magento по умолчанию. Все, что вы cms wysiwyg изображение будет в папке мультимедиа, но не с помощью S3, вы закончите тем, что загрузили все ваше изображение мультимедиа на S3.

Использование cloudfront будет хорошо, но вам все равно понадобится NFS для совместного использования мультимедийной папки на всех ваших интерфейсных и внутренних узлах. Или вам нужно создать собственный интерфейс для сохранения файла на S3, и вам также нужно обрабатывать ошибки (подумайте о том, кто-то может загрузить очень большой файл, может ли ваш код справиться с этим до истечения времени ожидания API S3)

Другой способ - просто сохранить хранилище мультимедиа в вашей дополнительной RDS (базе данных), и индивидуальный образ кэша изменения размера все равно сохранит в локальной папке мультимедиа сервера приложений, но это нормально, так как облачный фронт их уже кеширует.


1

Я предпочитаю иметь отдельный узел администратора (admin.example.com) и хранить там папки с мультимедиа. Таким образом, вы сможете сэкономить на затратах NFS, а также на проблемах с синхронизацией и т. Д. Любой CDN (я использую cloudfront) можно затем подключить к папкам мультимедиа узла администратора и настроить для всех хранилищ.

Другими преимуществами использования узла администратора является то, что вы можете перемещать все кроны (переиндексация и другие кроны), запланированные задачи (импорт товаров, инвентаризация, синхронизация заказов и т. Д.) На узле администратора и сохранять обработку ЦП узлов внешнего интерфейса.

Изменить: как последний ответ на самом деле не ответил на вопрос ОП. Медиа-активы Magento в Amazon S3? Ну, я считаю, что у Magento уже так много накладных расходов на обработку, что я думаю, что было бы неплохо отказаться от синхронизации / потоковой передачи s3 и использовать вместо этого локальную папку мультимедиа.


Благодарность! На самом деле я проверил облачный хост, на котором загрузка была невозможна. Отбросил это позже :-)
Фабиан Блехшмидт

1

Что ж, теперь, когда прошло несколько лет, я думаю, важно отметить, что есть несколько доступных плагинов, которые будут перемещать и обслуживать активы из S3 / CDN.

Поиски в Google открывают множество вариантов.

Вот один из них на GitHub:

https://github.com/magefm/cdn

Вот один из них на торговой площадке Magento's Connect:

http://www.magentocommerce.com/magento-connect/aws-s3-cdn-for-product-images.html

Я еще не пробовал эти конкретные расширения, но буду для предстоящего проекта. Там тоже есть другие.

Я должен был бы не согласиться с @Sonassi, так как использование отдельного хранилища, чтобы позволить самую дешевую конфигурацию сервера при хорошей производительности, сегодня считается лучшей практикой. Например, просто используйте S3 для перемещения всего статического контента с вашего веб-сервера, что помогает серверу использовать намного меньшую пропускную способность и позволяет большему количеству одновременно работающих пользователей и меньшей общей потребляемой мощности сервера. И если вы находитесь в одном центре обработки данных, как большинство людей в эти дни, и говорите, что он находится в Далласе, то нет сомнений, что люди в Западной Европе будут обслуживаться намного быстрее с глобальной CDN, такой как Cloudfront. Таким образом, использование хранилища отдельно от вашего веб-сервера для снижения использования полосы пропускания позволяет вам использовать только 1 сервер, когда вам потребуется быстрее без этого подхода, а использование CDN значительно увеличит время глобальной загрузки.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.