Magento Media Media в Amazon S3


21

Мене запитали, як зберегти всі магнітоактивні засоби в Amazon S3. Я думав про те, як використовувати PHP Stream Wrapper, як цей: https://github.com/punkave/aS3StreamWrapper і просто встановив медіа-папку на s3: \ mybucket \ mediaFolder

Хтось має з цим досвід?

Або краще використовувати щось подібне: https://github.com/sstoiana/magento-s3 Але це розширення виглядає не так добре. Будь-які інші рекомендації?


1
Тільки як убік. Яка саме ваша мотивація? Якщо ви не задовольняєте глобальну аудиторію або не прищеплюєте більше трафіку, ніж інтерфейс вашого сервера (> 100 Мбіт / 1 Гбіт) або не маєте провайдера сервера з поганим транзитом (що саме по собі є проблемою) - CDN зазвичай проходить повільніше, ніж подавати вміст безпосередньо від тієї ж машини. Забиті мережі, віддалені точки прориву та погані маршрути зазвичай призводять до повільнішої доставки вмісту, ніж просто розміщення його самостійно.
Ben Lessani - Sonassi

1
Мотивація така: хтось запитав мене про мій досвід та думку, і я подумав про це, і я віддаю перевагу рішень для обгортки потоку, але у нас цей класний сайт і, можливо, хтось має два центи для мене :-)
Fabian Blechschmidt

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

@RalphTice Не так вже й застаріло, враховуючи, що ми працюємо з власною мережею BGP anycast на трьох континентах. Більшість "доступних" CDN мають поодинокі PoP в країні (деякі просто на континенті), що не обов'язково географічно ближче, ніж ваш веб-сервер. Напр. Найближчий PoP для Amazon в Амазонії - Ірландія, яка має набагато більшу затримку, ніж машина, заснована в Англії. Тому я повторюю, що якщо ви не орієнтуєтесь на глобальну аудиторію, навряд чи ваші вітчизняні клієнти взагалі не побачать ніякої користі від CDN. У деяких випадках це повільніше, не кажучи вже про дорожчі та складніші.
Бен Лессані - Сонассі

хлопці, я використовував розширення thaiphan / magento-s3 для відра s3, його роботу з завантаженням зображень продукту на s3 та підключенням до зображень продукту, але він також генерує зображення продуктів на моєму системному сервері. Мені просто потрібно використовувати відро s3 для зображень, тому я також намагався видалити паб / медіа / каталог моєї системи, але після завантаження зображень сторінки сторінки сайту також відтворено на моєму системному сервері. чи потрібно зупинити це зображення, створене на локальному сервері?
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

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


+1 - Я можу підтвердити, що OnePica працює досить непогано і підтримує як S3, так і Rackspace Cloud.
philwinkle

4
OnePica - лише менеджер CDN, тобто файли все ще локальні
Fabian Blechschmidt

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

Можливо, я щось пропустив. Ви маєте на увазі, що файли завантажуються на S3 і більше не в медіа / каталог / ...?
Fabian Blechschmidt

1
FYI, це також повинно працювати з рішенням із заміни S3 DreamObjects. Він чудово працював з кожним іншим ковшем S3.
іллюмінат

1

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

Використовувати хмарний фронт буде добре, але вам все одно знадобиться NFS, щоб поділитися вашою медіа-папкою на всі ваші передні вузли та допоміжні вузли. Або вам потрібно створити власний інтерфейс, щоб зберегти файл на S3, і вам також потрібно обробляти помилки (подумайте про те, хтось завантажує надзвичайно великий файл, чи може ваш код справлятись з цим до часу очікування API S3)

Інший спосіб просто збережіть медіа-пам’ять у додатковій RDS (базі даних) та окремому кеш-розмірі зображення, як і раніше, зберігатимуться у локальній папці мультимедіа вашого сервера додатків, але це нормально, оскільки облачна область кеш-пам'яті їх уже буде кешувати.


1

Я вважаю за краще мати окремий вузол "admin" (admin.example.com) і зберігати там медіа-папки. Таким чином, ви заощадите себе на вартості NFS, а також на проблемі з синхронізацією тощо. Будь-який CDN (я використовую cloudfront) потім міг би бути з'єднаний з папками медіа-вузла адміністратора та налаштований на всі магазини.

Інші переваги використання вузла адміністрування полягає в тому, що ви можете перемістити всі крони (реіндексінг та інші крони), заплановані завдання (імпорт товару, синхронізація інвентаря та замовлення тощо) на вузлі адміністратора та зберегти обробку процесора frontend вузлів.

Редагувати: Оскільки остання відповідь не стосувалася питання ОП. Magento Media Media в 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.