एकीकरण

आपका स्टोरेज · WordPress + WooCommerce

WooCommerce के लिए AWS S3

Alter Product प्लगइन में AWS S3 स्टोरेज का तैयार मॉड्यूल शामिल है। प्लगइन द्वारा समर्थित फ़ाइल समूहों को अपने निजी बकेट में रखें, उसे WordPress में जोड़ें और प्लगइन के टूल से मौजूदा फ़ाइलों को माइग्रेट करें।

इस जुड़े हुए स्टोरेज की क्षमता बढ़ाने पर Alter Product कोई अतिरिक्त स्टोरेज क्षमता शुल्क नहीं लेता। स्टोरेज, अनुरोधों और डेटा ट्रांसफ़र का शुल्क AWS आपके खाते से लेता है। WordPress होस्टिंग का खर्च और प्लान तथा एम्बेड सत्रों के सामान्य नियम लागू रहते हैं।

ये निर्देश प्लगइन की सेटअप गाइड के अनुसार हैं। AWS कंसोल के लेबल अंग्रेज़ी में रखे गए हैं।

पहले WordPress + WooCommerce प्लगइन इंस्टॉल करेंइस वैकल्पिक स्टोरेज बैकएंड को कॉन्फ़िगर करने से पहले Alter Product को स्टोर से जोड़ें।

स्टोरेज, फ़ाइल वितरण और लागत

S3 प्लगइन के फ़ाइल ऑब्जेक्ट संग्रहीत करता है। अनुमति की जाँच करके ब्राउज़र तक फ़ाइलें पहुँचाने की ज़िम्मेदारी WordPress की ही रहती है।

प्लगइन के लिए निजी स्टोरेज बैकएंड

ब्राउज़र सीधे S3 से डाउनलोड नहीं करता। WordPress निजी बकेट से फ़ाइलें लाता है, उनकी जाँच करता है और अपने एंडपॉइंट से उन्हें उपलब्ध कराता है। S3 CORS खाली रखें और Block Public Access चालू रखें; यह सार्वजनिक बकेट या सीधा CDN कनेक्शन नहीं है।

यह मॉड्यूल Alter Product के समर्थित फ़ाइल समूहों को संभालता है। बकेट जोड़ने से WordPress की हर फ़ाइल नहीं हटती या माइग्रेट होती, और एम्बेड किए गए टूल की सीमाएँ भी नहीं बदलतीं।

ब्राउज़र WordPress के माध्यम से फ़ाइलें माँगता है; WordPress निजी AWS S3 बकेट से जुड़ता है।
फ़ाइलें WordPress के माध्यम से उपलब्ध होती हैं। निजी S3 बकेट सीधे ब्राउज़र के सामने नहीं खोला जाता।

इस्तेमाल किए गए संसाधनों के लिए AWS को भुगतान करें

जुड़े हुए बकेट की स्टोरेज क्षमता बढ़ाने पर Alter Product का कोई अतिरिक्त शुल्क नहीं है। AWS की लागत उपयोग, रीजन और स्टोरेज क्लास पर निर्भर करती है; निश्चित दर मानने के बजाय S3 की मौजूदा मूल्य सूची देखें।

फ़ाइलें WordPress से मिलती हैं, इसलिए यह ट्रैफ़िक आपकी होस्टिंग के डेटा ट्रांसफ़र में भी गिना जा सकता है। S3 का अर्थ होस्टिंग पर शून्य ट्रांसफ़र या सर्वर की असीमित क्षमता नहीं है।

समर्थित सेटिंग के साथ बकेट बनाएँ

नीचे दिए गए फ़ील्ड नाम अंग्रेज़ी AWS कंसोल और प्लगइन में मौजूद सेटअप गाइड से मेल खाते हैं।

सामान्य उपयोग वाला बकेट बनाएँ

AWS में साइन इन करें, Amazon S3 खोलें और General purpose buckets → Create bucket चुनें। रीजन चुनें और छोटे अंग्रेज़ी अक्षरों, अंकों तथा हाइफ़न वाला नाम दें, बिना डॉट के। AWS द्वारा जोड़े गए किसी भी प्रत्यय सहित बकेट का पूरा नाम कॉपी करें।

  1. तालिका की सेटिंग लागू करें और Create bucket चुनें।
  2. बकेट का पूरा नाम, रीजन और बकेट के मालिक का 12 अंकों वाला AWS खाता ID सुरक्षित रखें।
  3. Cross-origin resource sharing (CORS) खाली छोड़ें। S3 के अनुरोध WordPress सर्वर से जाते हैं।
प्लगइन की S3 सेटअप गाइड में इस्तेमाल की गई सेटिंग
AWS फ़ील्डसेटिंग
Bucket typeGeneral purpose
Bucket namespaceAccount Regional namespace (अनुशंसित)
Object OwnershipACLs disabled / Bucket owner enforced
Block Public AccessBlock all public access (चारों सेटिंग)
Bucket VersioningEnable
Default encryptionServer-side encryption with Amazon S3 managed keys (SSE-S3 / AES256)
Bucket KeyDisable
Advanced settings → Object LockDisable

HTTPS अनिवार्य करें

बकेट को सार्वजनिक किए बिना और ऑब्जेक्ट की पहुँच दिए बिना डेटा ट्रांसपोर्ट का नियम जोड़ें।

बकेट नीति जोड़ें

Permissions → Bucket policy → Edit खोलें। दोनों EXAMPLE-BUCKET मानों को अपने बकेट के पूरे नाम से बदलें। यदि पहले से नीति मौजूद है, तो उसके स्टेटमेंट बनाए रखें और पूरा दस्तावेज़ जाँचने के बाद यह नियम जोड़ें।

  1. एडिटर के संदेश जाँचें और Save changes चुनें।
  2. पुष्टि करें कि नियम सेव हो गया है। Block all public access चालू रखें।
बकेट नीति का JSON
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyInsecureTransport",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::EXAMPLE-BUCKET",
        "arn:aws:s3:::EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false",
          "aws:PrincipalIsAWSService": "false"
        }
      }
    }
  ]
}

सीमित IAM पहुँच बनाएँ

AdministratorAccess या AmazonS3FullAccess के बजाय इस बकेट और प्रीफ़िक्स के लिए अलग नीति इस्तेमाल करें।

प्लगइन की नीति बनाएँ

IAM → Policies → Create policy → JSON में नीचे दिया गया दस्तावेज़ पेस्ट करें। हर EXAMPLE-BUCKET को बकेट के पूरे नाम से बदलें। alter-product प्रीफ़िक्स WordPress के Folder prefix से मेल खाना चाहिए; यदि दूसरा प्रीफ़िक्स चुनें, तो हर ऑब्जेक्ट Resource में उसे बदलें।

  1. नीति की वैधता जाँचें, Next चुनें और AlterProductS3Storage जैसा नाम दें।
  2. Create policy चुनें और उपयोगकर्ता सेटअप के लिए उसका नाम सुरक्षित रखें।
IAM नीति का JSON
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReadRequiredBucketControls",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketVersioning",
        "s3:GetBucketOwnershipControls",
        "s3:GetBucketPublicAccessBlock",
        "s3:GetEncryptionConfiguration"
      ],
      "Resource": "arn:aws:s3:::EXAMPLE-BUCKET"
    },
    {
      "Sid": "WriteAndReadVersionedPluginObjects",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/objects/*",
        "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/.storage-tests/*"
      ]
    },
    {
      "Sid": "RecoverJournalOwnedObjects",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/objects/*"
    },
    {
      "Sid": "DeleteOnlyConnectionTestVersions",
      "Effect": "Allow",
      "Action": "s3:DeleteObjectVersion",
      "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/alter-product/.storage-tests/*"
    }
  ]
}

अलग उपयोगकर्ता और एक्सेस कुंजी बनाएँ

IAM → Users → Create user चुनें। Provide user access to the AWS Management Console को अनचेक रखें।

  1. Next → Attach policies directly चुनें और केवल ऊपर दी गई नीति जोड़ें। Create user पूरा करें।
  2. उस उपयोगकर्ता का Security credentials → Access keys → Create access key खोलें। इस मैन्युअल प्लगइन सेटअप के लिए Other → Next और फिर Create access key चुनें।
  3. Access key ID और Secret access key को पासवर्ड मैनेजर में सेव करें। सीक्रेट केवल एक बार दिखता है। इन्हें HTTPS के ज़रिए सीधे WordPress में दर्ज करें, संदेशों या स्क्रीनशॉट में साझा न करें।

WordPress कनेक्शन सेव करें और जाँचें

स्टोर के HTTPS डैशबोर्ड में Alter Product → Settings → Storage खोलें। AWS S3 और + / Add connection चुनें।

कनेक्शन का विवरण भरें

New connection चुनें। यही अंतर्निहित निर्देश AWS S3 setup guide में भी उपलब्ध हैं।

  1. Save connection चुनें और पुष्टि की प्रतीक्षा करें।
  2. Test connection चुनें। दोबारा परीक्षण करने से पहले बदलाव सेव करें।
  3. डायलॉग और Last connection test कॉलम में नतीजा देखें। सेव करने के बाद कुंजी वाले फ़ील्ड जानबूझकर खाली किए जाते हैं।
WordPress कनेक्शन के फ़ील्ड
फ़ील्डमान
Bucket nameबकेट का पूरा नाम, ARN, s3:// URL या HTTPS पता नहीं; डॉट न डालें।
Folder prefixIAM नीति से मेल खाता alter-product। अक्षर, अंक, हाइफ़न, अंडरस्कोर और अलग किए गए फ़ोल्डर इस्तेमाल करें; शुरुआत या अंत में स्लैश न लगाएँ।
Bucket owner AWS account IDमालिक का 12 अंकों वाला खाता ID, बिना स्पेस के।
AWS regionबकेट का वास्तविक रीजन। फ़ॉर्म का डिफ़ॉल्ट eu-central-1 है।
AWS access key ID / AWS secret access keyअलग IAM उपयोगकर्ता की सेव की गई कुंजियों की जोड़ी।
Use temporary AWS credentialsइस IAM उपयोगकर्ता की दीर्घकालिक कुंजी के लिए अनचेक रखें। केवल अस्थायी क्रेडेंशियल के लिए चालू करें और AWS session token दें।

यदि कनेक्शन परीक्षण विफल हो

बकेट का नाम, मालिक, रीजन, आवश्यक सेटिंग और WordPress तथा IAM में प्रीफ़िक्स का सटीक मिलान जाँचें। CORS खाली रखें; सार्वजनिक पहुँच से सुरक्षा बंद न करें।

सेव किया गया बकेट, प्रीफ़िक्स, मालिक और रीजन कनेक्शन की पहचान तय करते हैं। दूसरे गंतव्य के लिए New connection चुनें। Edit → Reconnect मौजूदा फ़ाइल संदर्भों को बनाए रखते हुए क्रेडेंशियल बदलने के लिए है।

सहायता टीम को परीक्षण का परिणाम दें, एक्सेस कुंजियाँ नहीं। इस S3 को डिफ़ॉल्ट बनाने से पहले सफल कनेक्शन परीक्षण आवश्यक है।

डिफ़ॉल्ट स्टोरेज चुनें और मौजूदा फ़ाइलें माइग्रेट करें

डिफ़ॉल्ट गंतव्य चुनना और माइग्रेशन अलग-अलग कार्य हैं।

नए समूहों के लिए S3 इस्तेमाल करें

सेव किए गए कनेक्शन की पंक्ति में Make default चुनें। प्लगइन कनेक्शन जाँचता है और सफल होने पर ही डिफ़ॉल्ट बदलता है। यह नए फ़ाइल समूहों पर लागू होता है; मौजूदा समूह और उनके बाद के संशोधन माइग्रेशन तक अपने दर्ज गंतव्य पर रहते हैं।

समर्थित मौजूदा समूहों को माइग्रेट करें

पहले माइग्रेशन से पहले डेटाबेस, WordPress salts और फ़ाइलों का एक साथ बैकअप लें। परीक्षण वातावरण या छोटे समूह से शुरू करें। लक्ष्य S3 की पंक्ति में Migrate खोलें; केवल पैनल खोलने से फ़ाइलें कॉपी नहीं होतीं।

Auto migration चुने गए गंतव्य के बाहर मौजूद समर्थित समूहों को शामिल करता है। इससे WordPress की असंबंधित फ़ाइलों के माइग्रेशन का आश्वासन नहीं मिलता।

  1. Start migration चुनें। प्लगइन S3 जाँचता है, हर समूह तैयार करता है, उसे कॉपी करके सत्यापित करता है और उसके संदर्भ बदलता है।
  2. पेज खुला रखें। Pause मौजूदा समूह के बाद काम रोकता है; Resume migration सेव की गई प्रगति से आगे बढ़ता है। पेज बंद करने पर अगले चरणों को फिर शुरू करने के लिए उसे दोबारा खोलें।
  3. किसी समूह में त्रुटि हो तो संदेश और Advanced देखें, कारण ठीक करें और फिर शुरू करें। जिस अपलोड का परिणाम अज्ञात हो, उसे बिना जाँच के न दोहराएँ।
  4. Migration completed के बाद संसाधन पढ़ना, संपादन, प्रीव्यू और ऑर्डर फ़ाइलों की पहुँच जाँचें। स्कैन के दौरान बने नए समूहों के लिए एक और बार चलाना पड़ सकता है।

पंक्ति हटाने से संग्रहीत फ़ाइलें नहीं हटतीं

ज़रूरत हो तो पहले डिफ़ॉल्ट बदलें। Remove कनेक्शन को सूची से हटा देता है, लेकिन मौजूदा फ़ाइलें और उनके सेव किए गए क्रेडेंशियल उपलब्ध रहते हैं। यह AWS ऑब्जेक्ट साफ़ करने का कमांड नहीं है।

WordPress नोड के बीच स्टोरेज साझा करें

साझा S3 गंतव्य किसी एक नोड की फ़ाइल डिस्क पर निर्भरता कम कर सकता है। लोड बैलेंसर को फिर भी सही ढंग से साझा स्थिति वाला WordPress इंस्टॉलेशन चाहिए।

कई नोड चलाने की आवश्यकताएँ

लोड बैलेंसर के पीछे एक WordPress इंस्टॉलेशन के लिए ये सभी व्यवस्थाएँ साथ में रखें:

  • एक सुसंगत SQL लेखन नोड और प्लगइन डेटाबेस की साझा स्थिति।
  • अब भी स्थानीय रूप से रखी गई फ़ाइलों और सुरक्षित माइग्रेशन स्रोतों के लिए साझा uploads डायरेक्टरी।
  • हर नोड पर वही मूल WordPress salts, ताकि सेव किए गए क्रेडेंशियल और एन्क्रिप्टेड फ़ाइलें पढ़ी जा सकें।
  • ट्रांसफ़र कार्यों के लिए हर नोड पर निजी अस्थायी डायरेक्टरी।
  • सुसंगत प्लगइन कॉन्फ़िगरेशन और उसी निजी S3 बकेट तथा ऑब्जेक्ट संस्करणों की पहुँच।
  • नेटिव mysqli और InnoDB तालिकाओं के साथ मानक wpdb इस्तेमाल करें। HyperDB जैसे डेटाबेस रूटिंग ड्रॉप-इन समर्थित नहीं हैं; यहाँ लोड बैलेंसिंग HTTP स्तर पर है।

पुनर्प्राप्ति और कुंजी बदलने की प्रक्रिया बनाए रखें

डेटाबेस, salts और संदर्भित फ़ाइल संस्करणों को साथ सुरक्षित रखें।

बैकअप लें, दोबारा जोड़ें और सत्यापित करें

उसी सेव किए गए कनेक्शन के क्रेडेंशियल बदलने के लिए Edit → Reconnect इस्तेमाल करें। पुरानी कुंजी निरस्त करने से पहले मौजूदा और पुराने फ़ाइल संस्करण पढ़कर जाँचें, और उन अन्य सेव किए गए कनेक्शन को भी जाँचें जो अभी उसका उपयोग कर सकते हैं।

S3 वर्ज़निंग चालू रखें और प्लगइन द्वारा संदर्भित संस्करण सुरक्षित रखें। आवश्यक पुराने संस्करण हटाने वाली lifecycle सफ़ाई लागू न करें। डेटाबेस, salts और संग्रहीत फ़ाइलों को एक साथ पुनर्स्थापित करके जाँचें।

अस्थायी क्रेडेंशियल की अवधि समाप्त होती है और नए वैध टोकन तथा कुंजियों की ज़रूरत पड़ती है; प्लगइन उन्हें अपने-आप नवीनीकृत नहीं करता। स्टोर बढ़ने के साथ AWS उपयोग और होस्टिंग ट्रांसफ़र पर नज़र रखें।