Amazon S3'deki Magento Medya Varlıkları


21

Tüm magento medya varlıklarının Amazon S3'te nasıl kurtarılacağı soruldu. Bunun gibi bir PHP Stream Wrapper kullanmayı düşündüm: https://github.com/punkave/aS3StreamWrapper ve medya klasörünü s3: \ mybucket \ mediaFolder olarak ayarlayın

Bununla ilgili tecrübesi olan var mı?

Ya da böyle bir şeyi daha iyi kullanmak: https://github.com/sstoiana/magento-s3 Ama bu eklenti iyi görünmüyor. Başka bir önerin var mı?


1
Sadece bir kenara. Motivasyonun tam olarak nedir? Küresel bir izleyici kitlesine hitap etmiyorsanız veya sunucunuzun arayüzünden (> 100Mbit / 1Gbit) daha fazla trafik çekmiyorsanız ya da düşük geçişli bir sunucu sağlayıcınız yoksa (bu kendi başına bir sorun) - CDN'ler genellikle içeriği doğrudan yayınlamaktan daha yavaştır. Aynı makineden. Sıkışık ağlar, uzak kopma noktaları ve kötü yollar genellikle sadece sizin barındırmanızdan daha yavaş içerik sunumu sağlar.
Ben Lessani - Sonassi

1
Motivasyon: Birisi bana deneyimlerimi ve düşüncelerimi sordu ve bunun hakkında düşündüm ve akış sarmalayıcı çözümünü tercih ettim, ancak bu harika siteye sahibiz ve belki birisinin benim için iki senti var :-)
Fabian Blechschmidt

@sonassi CDN'lerle olan deneyiminiz biraz tarihli gibi görünüyor. Tüm olgun CDN çözümleri, içeriği coğrafi olarak web sunucularınız için karşılayabileceğinizden daha yüksek bir ölçekte dağıtabilir ve coğrafi konumdan talep eden müşteriye en yakın içeriği sunacaktır. Ayrıca, js / css birleştirme ve küçültme için bir varlık boru hattı kullanarak sitenizdeki HTTP isteklerinin sayısını optimize etmek de önemlidir, ancak bu özellikle Magento siteleri için daha karmaşıktır.
Ralph Tice

@RalphTice 3 kıtada kendi BGP ağımızı yönettiğimiz düşünülmedi. Çoğu 'uygun fiyatlı' CDN’lerin ülke başına tek bir PoP’i vardır (bazıları kıta başına), coğrafi olarak web sunucunuzun kendisinden daha yakın olması gerekmez. Örneğin. GB’nin Amazon’a en yakın PoP’u İrlanda’dır - İngiltere merkezli bir makineden çok daha fazla gecikme süresi vardır. Bu yüzden, küresel bir izleyici kitlesini hedeflemediğiniz sürece, yerli müşterilerinizin CDN'den herhangi bir fayda görmeyeceklerini yineliyorum. Bazı durumlarda daha yavaştır, daha pahalı ve karmaşık değildir.
Ben Lessani - Sonassi

beyler, ben s3 bucket için thaiphan / magento-s3 eklentisini kullandım, s3 ürün resimlerini yükle ve ürün resimlerini bağla, aynı zamanda sistem sunucumda ürün görüntüleri de üretecek. sadece görüntüler için s3 bucket kullanmaya ihtiyacım var, böylece sistemimin pub / media / katalogunu da silmeye çalıştım, ancak site sayfasını yükledikten sonra ürün görüntüleri de sistem sunucumda yeniden oluşturuldu. Yerel sunucuda oluşturulan bu resmi durdurmanız gerekiyor mu?
Camit1dk

Yanıtlar:


6

Görünüşe göre bu adamlar bir çözüm buluyor: ( http://thinkglobal.co/resources/moving-the-magento-media-directory-to-s3/ )

Biri Magento'nun tüm medya varlıklarını oluşturuldukça S3'e zorlamasını ve diğeri medya dizinini bir S3 kovasına monte etmesini ve Magento'nun yerel diske yazdığını düşünmesini sağlamak olan 2 olası yaklaşım vardır. İkincisi seçtik.

Sigorta adı verilen daha geniş bir teknolojiyi kullanan s3fs adlı bir araç kullandık. Oldukça basit bazı yapılandırmalarla (aşağıda açıklanmıştır), s3fs'yi çalıştırabilir ve çalıştırabilirsiniz. AWS veya başka bir PAAS sağlayıcı kullanıyorsanız, S3 kova adlarını veya API erişim bilgilerini kodlamamaya dikkat edin.

Aşağıdaki değişkenleri kendi yapılandırmanıza uygun değerlerle değiştirdiğinizden emin olun:

  • {{S3_BUCKET}} (S3 kovanızın adı)
  • {{API_PUBLIC_ACCESS_KEY}} (AWS tarafından sağlanan)
  • {{API_SECRET_ACCESS_KEY}} (AWS tarafından sağlanan)
  • {{UID}} (nginx / apache kullanıcısı için kullanıcı kimliği)
  • {{GID}} (nginx / apache kullanıcısı için grup kimliği)
  • {{MOUNTED_DIRECTORY}} (magento medya dizininizin yolu)

İşte kurulum:

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
Bu aynı zamanda AWS s3.amazonaws.com/quickstart-reference/magento/latest/doc/… sayfa 11 (en azından AWS EFS mevcut olana kadar) tarafından önerilen yöntem gibi görünüyor
pHiL

1
Bu çözüm iyi olsa da, çok yavaş çalıştığını tespit ediyorum. Bununla nasıl başa çıktın? Magento URL oluşturduğunda, dosyanın var olduğundan emin olmak için dosya sistemini kontrol ediyor gibi görünüyor.
greatwitenorth

2

OnePica'nın CDN uzantısı , bu işlevsellik için kullanıma hazırdır ve S3'ten daha fazlasını destekler. Alıntı: "Şu anda, uzantı Amazon S3, Coral CDN, Mosso / Rackspace Cloud Files ve FTP, FTPS veya SFTP'yi destekleyen herhangi bir CDN, sunucu veya hizmet ile bütünleşiyor."


+1 - OnePica'nın oldukça iyi çalıştığını ve hem S3 hem de Rackspace Cloud'u desteklediğini onaylayabilirim.
Philwinkle

4
OnePica sadece CDN yöneticisidir, dosyaların hala yerel olduğu anlamına gelir
Fabian Blechschmidt

@FabianBlechschmidt Yorumunuz ile daha spesifik olmanız gerekir. OnePica'nın uzantısı kesinlikle düzgün bir şekilde yüklendiğinde / yapılandırıldığında dosyaları yerel olarak bırakmıyor ve Amazon S3 ile kendimi üretimde kullanıyorum.
Ralph Tice,

Belki bir şey özledim. Dosyaların S3'e yüklendiğini ve medya / katalog / ... 'da kalmadığını mı demek istiyorsunuz?
Fabian Blechschmidt

1
Bilginize, bu aynı zamanda DreamObjects drop-in S3 değiştirme çözümü ile de çalışmalıdır. Şimdiye kadar diğer S3 kovalarıyla harika çalıştı.
ylluminate

1

OnePica'nın CDN uzantısı, yalnızca ürün resimlerinde işe yarayan bir çözüm değildir, varsayılan Magento'dan çok daha önce zaman aşımına uğrayan kendi önbellek ömrü için doğru TTL'yi ayarlamanız gerekir. Tüm cms wysiwyg resminiz medya klasöründe olacaktır fakat S3 kullanmayacaksınız, tüm medya resminizi S3'e yükleyeceksiniz.

Cloudfront'u kullanmak iyi olacak ancak medya klasörünüzü tüm ön uç düğümleriniz ve arka uç düğümleriniz arasında paylaşmak için bir NFS'ye ihtiyacınız olacak. Ya da S3'te dosyayı kaydetmek için kendi arayüzünüzü oluşturmanız gerekir ve ayrıca hataları ele almanız gerekir (birisinin aşırı büyük dosya yüklediğini düşünün, S3 API zaman aşımından önce kodunuzun bunu işleyip işlemediğini kontrol edin)

Başka bir yolla medya depolama alanını fazladan RDS'nize (veritabanı) kaydedin ve bireysel yeniden boyutlandırma önbellek resmi hala uygulama sunucunuzdaki yerel medya klasöründe saklanacak, ancak cloudfront'un onları önbelleğe alacağı için sorun yok.


1

Ayrı bir "admin" düğümüne (admin.example.com) sahip olmayı ve medya klasörlerini orada tutmayı tercih ederim. Bu yolla, NFS maliyetinden ve senkronizasyon vb. Sorunlardan tasarruf edersiniz, herhangi bir CDN (cloudfront kullanırım) daha sonra yönetici düğümü medya klasörleriyle bağlanabilir ve tüm mağazalar için yapılandırılabilir.

Yönetici düğümünü kullanmanın diğer yararları, yönetici düğümündeki tüm düğümleri (yeniden indeksleme ve diğer düğümler), zamanlanmış görevleri (ürün ithalatı, envanter ve sipariş senkronizasyonu vb.) Taşıyabilir ve ön uç düğümleri cpu işlemlerini kaydedebilirsiniz.

Düzenleme: Son cevap olarak aslında OP'nin sorusunu ele almadı. Amazon S3'deki Magento Medya Varlıkları? Genelde Magento'nun çok fazla işlem gerçekleştirdiğine inanıyorum, bunun s3 senkronizasyonu / akışından korunmasının ve bunun yerine yerel medya klasörünün kullanılmasının iyi bir fikir olacağını düşünüyorum.


Teşekkürler! Aslında yükleme yapmanın mümkün olmadığı bir bulut sunucuyu kontrol ettim. Daha sonra
bıraktı

1

Şimdi, birkaç yıl geçtiğini düşünüyorum, varlıkları S3 / CDN'den taşıyabilecek ve hizmet edebilecek birden fazla eklenti olduğunu not etmek önemlidir.

Google aramaları birçok seçenek buluyor.

İşte GitHub'da bir tane:

https://github.com/magefm/cdn

İşte Magento'nun Connect pazarındakilerden biri:

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

Bu belirli uzantıları henüz denemedim, ancak yeni bir proje için çalışacağım. Orada da başkaları var.

@Sonassi ile aynı fikirdeyim, en ucuz sunucu konfigürasyonunun hala iyi performans göstermesini sağlamak için ayrı depolama kullanmak bugün gerçekten en iyi uygulama olarak kabul ediliyor. Örneğin, tüm statik içeriği web sunucunuzdan taşımak için S3'ü kullanın, sunucunun çok daha az bant genişliği kullanmasına ve daha fazla eşzamanlı kullanıcı ve daha az genel sunucu gücüne ihtiyaç duymasına izin verin. Ve, bugünlerde çoğu insan gibi tek bir veri merkezindeyseniz ve Dallas'ta olduğunu söylüyorsanız, o zaman Batı Avrupa'daki insanlara Cloudfront benzeri bir Global CDN ile daha hızlı hizmet verileceğinden şüphe yok. Bu nedenle, bant genişliği kullanımını azaltmak için web sunucunuzdan ayrı depolamayı kullanmak, bu yaklaşıma gerek kalmadan daha erken ihtiyacınız olduğunda yalnızca 1 sunucuyu kullanmanızı sağlar ve CDN kullanımı genel yükleme sürelerini büyük ölçüde artıracaktır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.