परिचय: Serverless और PHP क्यों?
\n\nलंबे समय तक यह माना जाता था कि PHP और सर्वरलेस कंप्यूटिंग एक-दूसरे के अनुकूल नहीं हैं। लेकिन AWS Lambda के कस्टम रनटाइम और Bref जैसे टूल्स के आगमन के बाद स्थिति पूरी तरह बदल गई है। आज आप AWS Lambda की पूरी तरह से प्रबंधित इंफ्रास्ट्रक्चर पर PHP एप्लिकेशन चला सकते हैं, और केवल कोड के वास्तविक निष्पादन समय के लिए भुगतान करते हैं।
इस लेख में हम सीखेंगे कि AWS Lambda का उपयोग करके PHP में Serverless फंक्शन कैसे बनाएं, कॉन्फ़िगर करें और डिप्लॉय करें। आप मुख्य अवधारणाओं, सामान्य समस्याओं और सर्वोत्तम प्रथाओं के बारे में जानेंगे। यह सामग्री उन PHP डेवलपर्स के लिए है जो AWS की बुनियादी बातों से परिचित हैं, लेकिन हम हर चीज़ को विस्तार से समझाने की कोशिश करेंगे।
\n\nइस गाइड के अंत तक, आप बिना किसी समर्पित सर्वर के क्लाउड में अपना पहला PHP एंडपॉइंट चला पाएंगे।
\n\n1. AWS Lambda पर Serverless PHP की आर्किटेक्चर
\n\n1.1. AWS Lambda PHP को कैसे चलाता है?
\n\nLambda का मूल वातावरण सीधे PHP को सपोर्ट नहीं करता है। PHP कोड चलाने के लिए एक विशेष मध्यवर्ती परत का उपयोग किया जाता है — Custom Runtime। यह एक एक्ज़ीक्यूटेबल फ़ाइल (आमतौर पर Python या Bash में) होती है जो PHP इंटरप्रेटर को शुरू करती है, उसे इवेंट भेजती है और परिणाम लौटाती है।
\n\nइसके लिए सबसे लोकप्रिय टूल Bref (AWS Lambda के लिए Bare-metal PHP) है। यह सर्वरलेस वातावरण के लिए ऑप्टिमाइज़्ड सेटिंग्स के साथ PHP का तैयार इमेज प्रदान करता है।
\n\nमूल प्रक्रिया इस प्रकार है:
\n- \n
- क्लाइंट API Gateway को HTTP अनुरोध भेजता है। \n
- API Gateway अनुरोध को JSON इवेंट में बदलता है और Lambda को भेजता है। \n
- Lambda Custom Runtime शुरू करता है, जो PHP-FPM को इनिशियलाइज़ करता है। \n
- PHP स्क्रिप्ट इवेंट को प्रोसेस करती है और प्रतिक्रिया लौटाती है। \n
1.2. स्टैक के मुख्य घटक
\n- \n
- AWS Lambda — कंप्यूटिंग यूनिट। \n
- API Gateway — फंक्शन को कॉल करने के लिए HTTP इंटरफ़ेस। \n
- Bref — Lambda के लिए PHP रनटाइम। \n
- Serverless Framework (वैकल्पिक) — डिप्लॉयमेंट के लिए टूल। \n
- Amazon S3 / DynamoDB — डेटा स्टोरेज (यदि आवश्यक हो)। \n
2. प्रोजेक्ट से डिप्लॉय तक: चरण-दर-चरण सेटअप
\n\n2.1. टूल्स की स्थापना
\nकाम करने के लिए आपको आवश्यकता होगी:
\n- \n
- PHP 8.1+ जिसमें
mbstring,curl,jsonएक्सटेंशन हों। \n - Composer — डिपेंडेंसी मैनेजर। \n
- Node.js और npm (Serverless Framework के लिए)। \n
- कॉन्फ़िगर किए गए IAM यूज़र के साथ AWS अकाउंट। \n
Serverless Framework को ग्लोबली इंस्टॉल करें:
\nnpm install -g serverless\n\n2.2. Bref के साथ प्रोजेक्ट बनाना
\nप्रोजेक्ट डायरेक्टरी बनाएं और इसे इनिशियलाइज़ करें:
\nmkdir php-lambda-demo\ncd php-lambda-demo\ncomposer require bref/bref\n\nindex.php फ़ाइल बनाएं — यह हमारा फंक्शन होगा:
<?php\nrequire __DIR__ . '/vendor/autoload.php';\n\nreturn function ($event) {\n $name = $event['queryStringParameters']['name'] ?? 'World';\n \n return [\n 'statusCode' => 200,\n 'headers' => ['Content-Type' => 'text/plain'],\n 'body' => "Hello, {$name}! This is Serverless PHP on AWS Lambda."\n ];\n};\n\nध्यान दें: फंक्शन को statusCode, headers और body कुंजियों वाला एक ऐरे लौटाना चाहिए। API Gateway के साथ इंटीग्रेशन के लिए यह मानक प्रतिक्रिया प्रारूप है।
2.3. serverless.yml कॉन्फ़िगरेशन
\nप्रोजेक्ट की रूट में serverless.yml फ़ाइल बनाएं:
service: php-lambda-demo\n\nprovider:\n name: aws\n region: eu-central-1\n runtime: provided.al2\n\nplugins:\n - ./vendor/bref/bref\n\nfunction