Aset Media Magento di Amazon S3

21

Saya ditanya bagaimana cara menyimpan semua aset media magento di Amazon S3. Saya berpikir untuk menggunakan PHP Stream Wrapper seperti ini: https://github.com/punkave/aS3StreamWrapper dan hanya mengatur folder media ke s3: \ mybucket \ mediaFolder

Apakah ada yang punya pengalaman dengan ini?

Atau lebih baik gunakan sesuatu seperti ini: https://github.com/sstoiana/magento-s3 Tapi ekstensi ini tidak terlihat bagus. Ada rekomendasi lain?

Fabian Blechschmidt
sumber
1
Sama seperti samping. Apa motivasi Anda sebenarnya? Kecuali jika Anda melayani audiens global, atau mendorong lebih banyak lalu lintas daripada antarmuka server Anda (> 100Mbit / 1Gbit), atau memiliki penyedia server dengan transit yang buruk (yang merupakan masalah tersendiri) - CDN biasanya lebih lambat daripada melayani konten langsung dari mesin yang sama. Jaringan yang macet, titik keluar yang jauh dan rute yang buruk biasanya menyebabkan pengiriman konten lebih lambat daripada hanya hosting sendiri.
Ben Lessani - Sonassi
1
Motivasinya adalah: Seseorang meminta pengalaman dan pendapat saya dan saya memikirkannya dan lebih memilih solusi stream wrapper, tetapi kami memiliki situs keren ini dan mungkin seseorang memiliki dua sen untuk saya :-)
Fabian Blechschmidt
@siasi pengalaman Anda dengan CDN tampaknya agak tanggal. Semua solusi CDN dewasa mendistribusikan konten secara geografis pada skala yang jauh lebih tinggi daripada yang Anda mampu untuk server web Anda dan akan menyajikan konten dari lokasi geografis terdekat ke klien yang meminta. Penting juga untuk mengoptimalkan # permintaan HTTP di situs Anda dengan menggunakan pipeline aset untuk penggabungan dan minifikasi js / css, tetapi itu jauh lebih rumit terutama untuk situs Magento.
Ralph Tice
@RalphTice Bukannya ketinggalan jaman mengingat kami menjalankan jaringan BGP anycast kami sendiri di 3 benua. Sebagian besar CDN 'terjangkau' memiliki PoP tunggal per negara (beberapa hanya per benua), yang secara geografis belum tentu lebih dekat dari server web Anda sendiri. Misalnya. PoP GB terdekat untuk Amazon adalah Irlandia - yang memiliki latensi jauh, jauh lebih besar daripada mesin berbasis di Inggris. Jadi saya ulangi, bahwa kecuali Anda menargetkan audiens global, pelanggan domestik Anda sepertinya tidak akan melihat manfaat apa pun dari CDN. Dalam beberapa kasus lebih lambat, belum lagi lebih mahal dan rumit.
Ben Lessani - Sonassi
teman-teman, saya telah menggunakan ekstensi thaiphan / magento-s3 untuk s3 bucket, berfungsi dengan mengunggah gambar produk di s3 dan terhubung dengan gambar produk, tetapi juga akan menghasilkan gambar produk di server sistem saya juga. saya hanya perlu menggunakan ember s3 untuk gambar jadi saya juga mencoba untuk menghapus pub / media / katalog sistem saya tetapi setelah memuat gambar produk halaman situs diciptakan kembali di server sistem saya juga. apakah perlu menghentikan gambar yang dibuat di server lokal ini?
Camit1dk

Jawaban:

6

tampaknya orang-orang ini menemukan solusi: ( http://thinkglobal.co/resources/moving-the-magento-media-directory-to-s3/ )

Ada 2 pendekatan yang mungkin, salah satunya adalah agar Magento mendorong semua aset media ke S3 saat dibuat dan yang lainnya hanya memasang direktori media ke keranjang S3 dan membiarkan Magento berpikir bahwa itu sedang menulis ke disk lokal. Kami memilih yang terakhir.

Kami akhirnya menggunakan alat yang disebut s3fs, yang menggunakan teknologi yang lebih luas yang disebut sekering. Dengan beberapa konfigurasi yang cukup mudah (dijelaskan di bawah), Anda dapat menjalankan dan menjalankan s3fs. Berhati-hatilah untuk tidak mencatat nama bucket S3 atau kredensial akses API jika Anda menggunakan AWS atau penyedia PAAS lainnya.

Pastikan Anda mengganti variabel berikut dengan nilai untuk konfigurasi spesifik Anda:

  • {{S3_BUCKET}} (nama ember S3 Anda)
  • {{API_PUBLIC_ACCESS_KEY}} (disediakan oleh AWS)
  • {{API_SECRET_ACCESS_KEY}} (disediakan oleh AWS)
  • {{UID}} (id pengguna untuk pengguna nginx / apache)
  • {{GID}} (id grup untuk pengguna nginx / apache)
  • {{MOUNTED_DIRECTORY}} (jalur ke direktori media magento Anda)

Ini pengaturannya:

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}}
SH
sumber
2
Ini juga tampaknya menjadi cara yang direkomendasikan oleh AWS s3.amazonaws.com/quickstart-reference/magento/latest/doc/… halaman 11 (setidaknya sampai AWS EFS tersedia)
pHiL
1
Meskipun solusi ini bagus, saya menemukan bahwa ini berjalan sangat lambat. Bagaimana Anda menangani ini? Sepertinya ketika Magento menghasilkan URL, ia memeriksa sistem file untuk memastikan file itu ada.
greatwitenorth
2

Ekstensi CDN OnePica sangat berguna untuk fungsi ini dan mendukung lebih dari sekadar S3. Kutipan: "Saat ini, ekstensi terintegrasi dengan Amazon S3, Coral CDN, Mosso / Rackspace Cloud Files, dan CDN, server atau layanan apa pun yang mendukung FTP, FTPS, atau SFTP."

Ralph Tice
sumber
+1 - Saya dapat mengonfirmasi bahwa OnePica berfungsi dengan cukup baik dan mendukung S3 dan Rackspace Cloud.
philwinkle
4
OnePica hanya manajer CDN, berarti file-file tersebut masih lokal
Fabian Blechschmidt
@FabianBlechschmidt Anda harus lebih spesifik dengan komentar Anda. Ekstensi OnePica tentu tidak meninggalkan file secara lokal ketika diinstal / dikonfigurasi dengan benar dan saya menggunakannya dalam produksi sendiri dengan Amazon S3.
Ralph Tice
Mungkin saya melewatkan sesuatu. Maksud Anda file diunggah ke S3 dan tidak ada lagi di media / katalog / ...?
Fabian Blechschmidt
1
FYI, ini juga harus bekerja dengan DreamObjects drop-in solusi pengganti S3. Ini telah bekerja sangat baik dengan setiap bucket S3 lainnya sejauh ini.
ylluminate
1

Perpanjangan CDN OnePica bukanlah solusi yang hanya berfungsi untuk gambar produk, belum lagi Anda perlu mengatur TTL yang benar untuk waktu penyimpanan cache sendiri yang akan habis lebih cepat dari Magento default. Semua gambar cms Anda akan berada di folder media tetapi tidak menggunakan S3, Anda akhirnya akan mengunggah semua gambar media Anda ke S3.

Menggunakan cloudfront akan bagus tetapi Anda masih membutuhkan NFS untuk membagikan folder media Anda di semua node frontend dan backend. Atau Anda perlu membuat antarmuka sendiri untuk menyimpan file di S3, dan Anda juga perlu menangani kesalahan (pikirkan tentang seseorang mengunggah file besar yang ekstrem apakah kode Anda dapat mengatasinya sebelum batas waktu S3 API)

Cara lain cukup simpan penyimpanan media dalam RDS (basis data) tambahan Anda dan gambar cache ukuran ulang secara individual masih akan disimpan di folder media lokal server aplikasi Anda, tetapi tidak apa-apa karena cloudfront akan menyimpannya di cache.

Ben
sumber
1

Saya lebih suka memiliki simpul "admin" yang terpisah (admin.example.com) dan menyimpan folder media di sana. Dengan cara ini Anda akan menghemat biaya NFS serta masalah sinkronisasi dll. CDN apa pun (saya menggunakan cloudfront) kemudian dapat dihubungkan dengan folder media admin node, dan dikonfigurasikan untuk semua toko.

Manfaat lain dari menggunakan admin node adalah, Anda dapat memindahkan semua crons (pengindeksan ulang dan crons lainnya), tugas terjadwal (impor produk, inventaris & sinkronisasi pesanan, dll) di admin node dan menyimpan node frontend pemrosesan cpu.

Sunting: Sebagai jawaban terakhir sebenarnya tidak menjawab pertanyaan OP. Aset Media Magento di Amazon S3? Yah saya percaya Magento sudah mendapatkan begitu banyak pemrosesan overhead, yang saya pikir itu ide yang baik untuk menjaga dari sinkronisasi s3 / streaming, dan menggunakan folder media lokal sebagai gantinya.

tidak manusiawi
sumber
Terima kasih! Sebenarnya saya memeriksa host cloud di mana tidak ada unggahan yang memungkinkan. Menjatuhkannya nanti :-)
Fabian Blechschmidt
1

Nah, sekarang setelah beberapa tahun berlalu saya pikir penting untuk dicatat bahwa ada beberapa plugin yang tersedia yang akan memindahkan dan melayani aset dari S3 / CDN.

Pencarian Google menghasilkan banyak opsi.

Inilah satu di GitHub:

https://github.com/magefm/cdn

Inilah satu di pasar Magento's Connect:

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

Saya belum mencoba ekstensi khusus ini tetapi akan untuk proyek yang akan datang. Ada orang lain di luar sana juga.

Saya harus tidak setuju dengan @Sonassi, menggunakan penyimpanan terpisah untuk memungkinkan konfigurasi server termurah masih dengan kinerja yang baik benar-benar dianggap praktik terbaik hari ini. Misalnya, cukup gunakan S3 untuk memindahkan semua konten statis dari server web Anda membantu server menggunakan bandwidth yang jauh lebih sedikit dan memungkinkan lebih banyak pengguna secara bersamaan dan lebih sedikit daya server yang dibutuhkan secara keseluruhan. Dan, jika Anda berada di pusat data tunggal seperti kebanyakan orang saat ini, dan mengatakan itu di Dallas, maka tidak ada keraguan bahwa orang-orang di Eropa Barat akan dilayani lebih cepat dengan CDN Global seperti Cloudfront. Jadi, menggunakan penyimpanan terpisah dari server web Anda untuk menurunkan penggunaan bandwidth memungkinkan Anda untuk menggunakan hanya 1 server ketika Anda akan membutuhkan lebih cepat tanpa pendekatan ini, dan menggunakan CDN akan sangat meningkatkan waktu muat global.

Sean P
sumber