S3 bucket без плагинов, модулей и пр.

Ubuntu

Preface

Случилось мне оптимизировать сайт на PrestaShop и захотелось мне хранить изображения на S3, чтобы все было быстро и красиво. В самой CMS есть встроенная возможность для этого, в настройках можно указать ссылку (ссылки) на CloudFront. Но картинки нужно же как то туда передать. К слову плагин для этого есть, как впрочем и к любой другой цмс, но не бесплатно конечно же. К тому же плагин использует апи и вообще много лишнего кода тянет за собой, а задача на самом деле простая как и ее решение

Решение

Решение есть и совсем свежее, по меркам технологий с пылу с жару так сказать - Filesystem in Userspace (FUSE). FUSE, а точнее построенный на ее базе s3fs позволяет подключить bucket как папку и работать с файлами так будто они находятся прямо на сервере. Ставим последнюю версию с GitHub, т.к. проект все еще молодой и полно багов на которые я благополучно наткнулся используя версию из репозиториев.

В конфиге fuse (/etc/fuse.conf) нужно раскоментировать опцию user_allow_other для того чтобы другие пользователи (например www-data) имели доступ к смонтированой директории с файлами. Монтируем директорию так:

s3fs bucket-name ~/path-to-folder -o url=https://s3-eu-central-1.amazonaws.com -o endpoint=eu-central-1 -o allow_other -o mp_umask="775"

Все. Монтируйте директорию в которую ваша CMS складывает имейджи и меняйте домен для изображения на CloudFront.

Comments

Login with GitHub to leave a comments