Amazon S3 में Magento Media Assets


21

मुझसे पूछा गया कि अमेज़ॅन एस 3 में सभी मैगनेटो मीडिया परिसंपत्तियों को कैसे बचाया जाए। मैंने इस तरह एक PHP स्ट्रीम आवरण का उपयोग करने के बारे में सोचा: https://github.com/punkave/aS3StreamWrapper और सिर्फ मीडिया फोल्डर को s3: \ mybucket \ mediaFolder पर सेट करें

किसी को भी इस के साथ अनुभव है?

या बेहतर कुछ इस तरह का उपयोग करें: https://github.com/sstoiana/magento-s3 लेकिन यह विस्तार अच्छा नहीं लगता है। कोई और सिफारिशें?


1
बस एक तरफ। वास्तव में आपकी प्रेरणा क्या है? जब तक आप वैश्विक दर्शकों के लिए खानपान नहीं कर रहे हैं, या अपने सर्वर के इंटरफेस (> 100Mbit / 1Gbit) से अधिक यातायात को धक्का दे रहे हैं, या जिनके पास खराब पारगमन (जो अपने आप में एक मुद्दा है) के साथ एक सर्वर प्रदाता है - सीडीएन आमतौर पर सामग्री की सेवा के लिए धीमी होती है उसी मशीन से। बधाई देने वाले नेटवर्क, दूर के बिंदुओं और खराब मार्गों को आमतौर पर धीमी सामग्री वितरण के लिए नेतृत्व करने की तुलना में यह स्वयं को होस्ट करता है।
बेन लेसानी - सोनासी

1
प्रेरणा है: किसी ने मुझसे मेरे अनुभव और राय के लिए पूछा और मैंने इसके बारे में सोचा और धारा आवरण समाधान को पसंद किया, लेकिन हमारे पास यह शांत साइट है और शायद किसी के पास मेरे लिए दो सेंट हैं :-)
फेबियन बलेचस्मिड

@sonassi सीडीएन के साथ आपका अनुभव कुछ हद तक दिनांकित लगता है। सभी परिपक्व CDN समाधान भौगोलिक रूप से बहुत अधिक मात्रा में सामग्री वितरित करते हैं, जितना आप अपने वेब सर्वर के लिए खर्च कर पाएंगे और निकटतम भौगोलिक स्थान से अनुरोध करने वाले ग्राहक तक सामग्री की सेवा करेंगे। Js / css कॉन्टेनेशन और मिनिफिकेशन के लिए एसेट पाइपलाइन का उपयोग करके अपनी साइट पर HTTP अनुरोधों का # अनुकूलन करना भी महत्वपूर्ण है, लेकिन यह विशेष रूप से Magento साइट्स के लिए बहुत अधिक जटिल है।
राल्फ टाइस

@RalphTice 3 महाद्वीपों में अपना खुद का BGP anycast नेटवर्क चलाने पर विचार करने से पुराना नहीं है। अधिकांश 'सस्ती' सीडीएन में प्रति देश (कुछ प्रति महाद्वीप) एकल PoP होते हैं, जो जरूरी नहीं कि भौगोलिक रूप से आपके वेब सर्वर की तुलना में किसी भी करीब हो। उदाहरण के लिए। अमेज़ॅन के लिए GB का निकटतम PoP आयरलैंड है - जिसकी इंग्लैंड आधारित मशीन की तुलना में कहीं अधिक विलंबता है। इसलिए मैं दोहराता हूं, कि जब तक आप वैश्विक दर्शकों को लक्षित नहीं कर रहे हैं, तब तक इसकी संभावना नहीं है कि आपके घरेलू ग्राहकों को सीडीएन से कोई फायदा होगा। कुछ मामलों में यह धीमा है, अधिक महंगा और जटिल नहीं है।
बेन लेसानी - सोनासी

दोस्तों, मैंने s3 बाल्टी के लिए thaiphan / magento-s3 एक्सटेंशन का उपयोग किया है, यह s3 पर अपलोड उत्पाद छवियों के साथ काम कर रहा है और उत्पाद छवियों के साथ जोड़ता है, लेकिन यह मेरे सिस्टम सर्वर में भी उत्पाद छवियां उत्पन्न करेगा। मैं बस छवियों के लिए s3 बाल्टी का उपयोग करने की आवश्यकता है तो मैंने भी अपने सिस्टम के पब / मीडिया / कैटलॉग को हटाने की कोशिश की, लेकिन लोड साइट पेज के बाद उत्पाद छवियों को मेरे सिस्टम सर्वर में भी फिर से बनाया गया है। क्या स्थानीय सर्वर में बनाई गई इस छवि को रोकने की आवश्यकता है?
Camit1dk

जवाबों:


6

ऐसा लगता है कि ये लोग एक समाधान ढूंढते हैं: ( http://thinkglobal.co/resources/moving-the-magento-media-directory-to-s3/ )

2 संभावित दृष्टिकोण हैं, एक है Magento के सभी मीडिया परिसंपत्तियों को S3 में धकेलना क्योंकि वे बनाए गए हैं और दूसरा केवल एक S3 बाल्टी में मीडिया निर्देशिका को माउंट करने के लिए है और Magento को लगता है कि यह स्थानीय डिस्क पर लिख रहा है। हमने बाद वाला चुना।

हमने s3fs नामक एक उपकरण का उपयोग करके समाप्त किया, जो कि फ्यूज नामक एक व्यापक तकनीक का उपयोग करता है। कुछ बिल्कुल सीधे विन्यास (नीचे वर्णित) के साथ, आप s3fs ऊपर और चल सकते हैं। यदि आप AWS या अन्य PAAS प्रदाता का उपयोग कर रहे हैं तो S3 बकेट के नाम या API एक्सेस क्रेडेंशियल को हार्डकोड न करें।

सुनिश्चित करें कि आप अपने विशिष्ट कॉन्फ़िगरेशन के लिए निम्न चर को मूल्यों से प्रतिस्थापित करते हैं:

  • {{S3_BUCKET}} (आपके S3 बाल्टी का नाम)
  • {{API_PUBLIC_ACCESS_KEY}} (AWS द्वारा प्रदान)
  • {{API_SECRET_ACCESS_KEY}} (AWS द्वारा प्रदान)
  • {{UID}} (nginx / apache उपयोगकर्ता के लिए यूजर आईडी)
  • {{GID}} (nginx / apache उपयोगकर्ता के लिए समूह आईडी)
  • {{MOUNTED_DIRECTORY}} (अपने Magento मीडिया निर्देशिका के लिए पथ)

यहाँ सेटअप है:

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 उपलब्ध नहीं हो जाता है) द्वारा अनुशंसित तरीका प्रतीत होता है
pHi0

1
जबकि यह समाधान अच्छा है, मुझे पता चल रहा है कि यह बहुत धीमा है। आपने इससे कैसे निपटा? ऐसा लगता है कि जब Magento URL को जनरेट कर रहा है तो यह सुनिश्चित करने के लिए कि फाइल मौजूद है फाइल सिस्टम की जाँच कर रहा है।
महानवित्नर्थ

2

OnePica का CDN एक्सटेंशन इस कार्यक्षमता के लिए बॉक्स से बहुत आसान है और केवल S3 से अधिक का समर्थन करता है। उद्धरण: "वर्तमान में, विस्तार अमेज़ॅन एस 3, कोरल सीडीएन, मोसो / रैकस्पेस क्लाउड फ़ाइलों और किसी सीडीएन, सर्वर या सेवा के साथ एकीकृत होता है जो एफ़टीपी, एफटीपीएस या एसएफटीपी का समर्थन करता है।"


+1 - मैं पुष्टि कर सकता हूं कि वनपिका काफी अच्छी तरह से काम करती है और एस 3 और रैकस्पेस क्लाउड दोनों का समर्थन करती है।
20

4
OnePica केवल CDN प्रबंधक है, इसका मतलब है कि फाइलें अभी भी स्थानीय हैं
Fabian Blechschmidt

@FabianBlechschmidt आपको अपनी टिप्पणी के साथ अधिक विशिष्ट होना पड़ेगा। OnePica का एक्सटेंशन निश्चित रूप से फ़ाइलों को स्थानीय रूप से तब नहीं छोड़ता है जब ठीक से स्थापित / कॉन्फ़िगर किया गया हो और मैं इसका उत्पादन खुद w / Amazon S3 में कर रहा हूं।
राल्फ टाइस

शायद मुझे कुछ याद आ गया। आपका मतलब है कि फाइलें S3 में अपलोड की गई हैं और मीडिया / कैटलॉग / ... में और नहीं हैं?
फेबियन ब्लेसश्मिड

1
FYI करें, यह ड्रीमऑब्जेक्ट्स ड्रॉप-इन S3 प्रतिस्थापन समाधान के साथ भी काम करना चाहिए। इसने अब तक हर दूसरे S3 बाल्टी के साथ शानदार काम किया है।
२४'१३

1

OnePica का CDN एक्सटेंशन वह समाधान नहीं है, जो केवल उत्पाद छवियों के लिए काम करता है, यह उल्लेख करने के लिए कि आपको अपने कैश जीवन समय के लिए सही TTL सेट करने की आवश्यकता नहीं है, जो डिफ़ॉल्ट Magento की तुलना में बहुत पहले समाप्त हो जाएगा। आप सभी wsiwyg छवि मीडिया फ़ोल्डर में होंगे, लेकिन S3 का उपयोग नहीं करके, आप अपनी सभी मीडिया छवि को S3 में अपलोड करेंगे।

क्लाउडफ्रंट का उपयोग करना अच्छा होगा लेकिन फिर भी आपको अपने सभी फ्रंटएंड नोड्स और बैकएंड नोड्स में अपने मीडिया फोल्डर को साझा करने के लिए एनएफएस की आवश्यकता होगी। या आपको S3 पर फ़ाइल को सहेजने के लिए अपना स्वयं का इंटरफ़ेस बनाने की आवश्यकता है, और आपको त्रुटियों को संभालने की भी आवश्यकता है (किसी के बारे में अत्यधिक फ़ाइल अपलोड करने के बारे में सोचें कि क्या आपका कोड S3 API समय से पहले संभाल सकता है)

अन्य तरीके से अपने अतिरिक्त आरडीएस (डेटाबेस) में मीडिया स्टोरेज को सेव करें और कैशे इमेज को अलग-अलग करें फिर भी आपके ऐप सर्वर लोकल मीडिया फोल्डर में सेव होंगे, लेकिन यह ठीक है क्योंकि क्लाउडफ्रंट उन्हें पहले ही कैश कर देगा।


1

मैं एक अलग "व्यवस्थापक" नोड (admin.example.com) और वहां मीडिया फ़ोल्डर रखना पसंद करता हूं। इस तरह से आप अपने आप को एनएफएस लागत के साथ-साथ सिंकिंग आदि के साथ किसी भी सीडीएन (मैं क्लाउडफ्रंट का उपयोग करते हैं) के साथ सहेज सकते हैं, फिर व्यवस्थापक नोड मीडिया फ़ोल्डर के साथ जोड़ा जा सकता है, और सभी दुकानों के लिए कॉन्फ़िगर किया जा सकता है।

व्यवस्थापक नोड का उपयोग करने के अन्य लाभ हैं, आप व्यवस्थापक नोड पर सभी क्रोन (रिंडेक्सिंग और अन्य क्रोन), शेड्यूल किए गए कार्य (उत्पाद आयात, इन्वेंट्री और ऑर्डर सिंक आदि) को स्थानांतरित कर सकते हैं और फ्रंट नोड नोड सीपीयू प्रसंस्करण को बचा सकते हैं।

संपादित करें: अंतिम उत्तर के रूप में वास्तव में ओपी के प्रश्न को संबोधित नहीं किया। Amazon S3 में Magento Media Assets? वैसे मेरा मानना ​​है कि मैगनेटो को पहले से ही बहुत अधिक प्रोसेसिंग ओवरहेड मिल गया है, मुझे लगता है कि इसे s3 सिंकिंग / स्ट्रीमिंग से रखने और इसके बजाय स्थानीय मीडिया फ़ोल्डर का उपयोग करने के लिए अच्छा विचार होगा।


धन्यवाद! वास्तव में मैंने क्लाउड होस्ट की जाँच की जहाँ कोई अपलोड संभव नहीं था। बाद में इसे छोड़ दिया गया :-)
फेबियन बलेचस्मिड

1

खैर, अब जब कुछ साल बीत गए हैं तो मुझे लगता है कि यह ध्यान रखना महत्वपूर्ण है कि कई प्लगइन्स उपलब्ध हैं जो एस 3 / सीडीएन से संपत्ति को स्थानांतरित करेंगे और सेवा करेंगे।

Google खोज में बहुत सारे विकल्प हैं।

यहाँ GitHub पर एक है:

https://github.com/magefm/cdn

यहाँ Magento के कनेक्ट मार्केटप्लेस पर एक है:

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

मैंने अभी तक इन विशेष एक्सटेंशनों की कोशिश नहीं की है, लेकिन एक आगामी परियोजना के लिए होगा। वहाँ अन्य लोग भी हैं।

मुझे @Sonassi से असहमत होना पड़ेगा, सबसे अच्छे सर्वर कॉन्फ़िगरेशन के लिए अभी भी अच्छे प्रदर्शन के साथ अलग स्टोरेज का उपयोग करना वास्तव में सबसे अच्छा अभ्यास माना जाता है। उदाहरण के लिए, बस अपने वेब सर्वर से सभी स्थिर सामग्री को स्थानांतरित करने के लिए S3 का उपयोग करें सर्वर को कम बैंडविड्थ का उपयोग करने में मदद करता है और अधिक समवर्ती उपयोगकर्ताओं और कम समग्र सर्वर शक्ति की आवश्यकता होती है। और, यदि आप इन दिनों अधिकांश लोगों की तरह एकल डेटासेंटर में हैं, और कहते हैं कि यह डलास में है, तो इसमें कोई संदेह नहीं है कि पश्चिमी यूरोप के लोगों को क्लाउडफ्रंट जैसी ग्लोबल सीडीएन के साथ बहुत तेजी से परोसा जाएगा। इसलिए, अपने वेब सर्वर से कम बैंडविड्थ उपयोग के लिए स्टोरेज का उपयोग करना आपको केवल 1 सर्वर का उपयोग करने की अनुमति देता है जब आपको इस दृष्टिकोण के बिना अधिक जल्दी की आवश्यकता होगी, और सीडीएन का उपयोग करने से वैश्विक लोड समय में बहुत वृद्धि होगी।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.