हेलो सब लोग, आज मैं NodeJS/Express का उपयोग करके Amazon EC2 सर्वर पर एक त्वरित REST API तैनात करने के अपने पसंदीदा तरीकों में से एक पर एक ट्यूटोरियल करना चाहता हूँ। यह तकनीक अनिवार्य रूप से आपके EC2 सर्वर को आपके GitHub रिपॉजिटरी में पुश किए गए परिवर्तनों का जवाब देने में सक्षम बनाती है। सबसे पहले, “हैलो वर्ल्ड” NodeJS/Express ऐप को चालू करने के लिए अपनी मशीन पर एक नई डायरेक्टरी बनाएँ। मैं इसे कह रहा हूँ rekognition टर्मिनल खोलें, और package.json को आरंभ करने के लिए यह कमांड चलाएँ npm init -y express.js स्थापित करें npm i express डिफ़ॉल्ट रूट पर 'हेलो वर्ल्ड' के साथ एक बेसिक एक्सप्रेस सर्वर बनाएं const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); }); यह सुनिश्चित करने के लिए परीक्षण करें कि आप पर 'Hello World!' देख रहे हैं http://localhost:3000/ बहुत बढ़िया, पहला चरण पूरा हो गया! 💪 अब, चलिए अपना कोड GitHub पर डालते हैं अपनी निर्देशिका में एक Git रेपो आरंभ करें, और अपना पहला कमिट करें - git init git add . git commit -m "First commit" अपने GitHub खाते पर एक दूरस्थ रिपोजिटरी बनाएँ नए रिपोजिटरी को मूल के रूप में जोड़ें, और अपनी शाखा को पुश करें। git remote add origin <REMOTE_REPOSITORY_URL> git push -u origin master उस दूरस्थ रिपोजिटरी के लिंक से प्रतिस्थापित करें जिसे आपने अभी बनाया है। <REMOTE_REPOSITORY_URL> आपको 'मुख्य' के स्थान पर 'मास्टर' को डिफ़ॉल्ट शाखा के रूप में उपयोग करने के लिए अपनी रिपॉजिटरी सेटिंग्स को बदलने की आवश्यकता हो सकती है। ऐसा करने के बाद आप 'मुख्य' शाखा को हटा सकते हैं। चरण 2: पूरा! हम गैस से खाना बना रहे हैं ⛽️ चलो क्लाउड पर चलते हैं - Ec2 सर्वर सेटअप करें अपना EC2 इंस्टेंस लॉन्च करने के लिए ये चरण हैं: अपने में लॉग इन करें. AWS प्रबंधन कंसोल EC2 डैशबोर्ड पर जाएँ और एक नया इंस्टैंस लॉन्च करें। उपयुक्त AMI (अमेज़न मशीन इमेज) चुनें; मैं अमेज़न लिनक्स 2 का उपयोग कर रहा हूँ। एक इंस्टेंस प्रकार चुनें (उदाहरण के लिए, t2.micro यदि आप निःशुल्क श्रेणी में हैं). इंस्टेंस विवरण कॉन्फ़िगर करें, स्टोरेज जोड़ें, और आवश्यकतानुसार टैग जोड़ें. आपको जिन पोर्ट की आवश्यकता होगी उन पर इनबाउंड ट्रैफ़िक की अनुमति देने के लिए एक सुरक्षा समूह कॉन्फ़िगर करें (SSH और आपके एप्लिकेशन के पोर्ट के लिए कम से कम TCP पोर्ट 22, और फिर वेब ट्रैफ़िक के लिए 3000)। इंस्टेंस की समीक्षा करें और उसे लॉन्च करें; सुनिश्चित करें कि आपने SSH एक्सेस के लिए प्रयुक्त कुंजी युग्म को सहेज लिया है। अब, आइए टर्मिनल पर SSH के माध्यम से आपके सर्वर में लॉग इन करने का परीक्षण करें: ssh ec2-user@<YOUR_SERVER_IP> -i <YOUR_PRIVATE_KEY>.pem वहां मौजूद वेरिएबल्स को आपके EC2 इंस्टैंस के लिए परिभाषित मानों से बदलें। यदि आप यह देखते हैं तो आप अपने सर्वर से जुड़ गए हैं, बधाई हो! 👏 हमने अभी तक काम पूरा नहीं किया है - हम अभी शुरुआत कर रहे हैं 😏 आइए अपने सर्वर पर NodeJS स्थापित करें: sudo yum install -y nodejs npm के माध्यम से हमारे सर्वर पर वैश्विक रूप से स्थापित करें pm2 को sudo npm i -g pm2 सर्वर पर git स्थापित करें, और अपने क्रेडेंशियल कॉन्फ़िगर करें: sudo yum install git -y git config --global user.name "Your Name" git config --global user.email "your.email@example.com" ठीक है, अब हम एक फ़ोल्डर बनाने जा रहे हैं यदि यह पहले से मौजूद नहीं है: var/www/ sudo mkdir -p /var/www फिर हमारे ec2-user में स्वामित्व जोड़ें: sudo chown -R ec2-user:ec2-user /var/www डायरेक्टरी पर जाएँ - /home फोल्डर पर नहीं 👌 अपने सर्वर के रूट से cd ~/var/www अब, यहाँ से, हम अपने git रिपॉजिटरी को क्लोन करेंगे: git clone https://github.com/USERNAME/REPO_NAME.git YOUR_PROJECT_DIRECTORY [USERNAME] [REPO_NAME] और [YOUR_PROJECT_DIRECTORY] को अपने स्वयं के मानों से बदलें. इसके बाद, हम निर्देशिका को अपने रिपॉजिटरी में बदलते हैं, ताकि हमारे pm2 सेटअप के लिए फ़ाइल बना सके: cd YOUR_PROJECT_DIRECTORY ecosystem.config.js nano ecosystem.config.js यह इस तरह दिख रहा है: module.exports = { apps : [{ name: "my-app", // A name for your application script: "app.js", // The script file to launch the app instances: "max", // This can be set to the number of CPU cores to use, or "max" to use all available autorestart: true, // Automatically restart app if it crashes watch: false, // Enable/disable watching file changes for automatic restart max_memory_restart: '1G', // Optional: Restart app if it reaches a memory limit env: { NODE_ENV: "development", }, env_production: { NODE_ENV: "production", } }] }; ठीक है, ठीक है - एक बार यह बना और सहेजा गया, चलो pm2 के साथ ऐप शुरू करते हैं: pm2 start ecosystem.config.js अब, हम जाँच सकते हैं कि हमारे सर्वर से पोर्ट 3000 पर 'Hello World!' संदेश आया है या नहीं: सर्वर पुनः आरंभ होने पर pm2 को स्वचालित रूप से प्रारंभ करने के लिए, आइए चलाएँ: pm2 save pm2 startup यह जांचने के लिए कि आपका सर्वर चल रहा है, आप कर सकते हैं; आप पढ़ सकते हैं pm2 status pm2 पर दस्तावेज़ यहां अगर आप यहां तक पहुंच गए हैं, तो आप सुपरस्टार हैं ⭐️ GitHub क्रियाओं के साथ एकीकरण यह हमारी प्रक्रिया का अंतिम चरण है। हम Github क्रियाओं के लिए एक फ़ाइल बनाने जा रहे हैं ताकि जब भी कोई परिवर्तन हमारी मास्टर शाखा में भेजा जाए तो हमारा सर्वर अपडेट हो जाए .yml अपने रिपॉजिटरी में, 'एक्शन' टैब पर जाएं और एक नया कस्टम वर्कफ़्लो बनाएं। मैं अपना कह रहा हूँ nodejs.yml रिपो को अद्यतन करने और pm2 को पुनः आरंभ करने के लिए .yml फ़ाइल यहां दी गई है: name: Node.js CI/CD on Amazon Linux on: push: branches: [ master ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install dependencies run: npm install - name: Deploy to AWS EC2 uses: appleboy/scp-action@master with: host: ${{ secrets.REMOTE_HOST }} username: ${{ secrets.REMOTE_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} source: "./" # This now correctly points to the current directory target: "/var/www/your_project_directory" - name: Restart PM2 application uses: appleboy/ssh-action@master with: host: ${{ secrets.REMOTE_HOST }} username: ${{ secrets.REMOTE_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd /var/www/your_project_directory pm2 reload all # This command restarts your application 'your_project_directory' को अपडेट करना सुनिश्चित करें अंत में, आपको इन पर्यावरण रहस्यों को जोड़ना होगा। यह आपके सर्वर का IP पता है; यह Amazon Linux 2 AMI के लिए है, और फिर अपनी .pem फ़ाइल की सामग्री को के रूप में पेस्ट करें। REMOTE_HOST REMOTE_USER ec2-user SSH_PRIVATE_KEY आप यह सब रिपोजिटरी सेटिंग्स में कर सकते हैं: बस हो गया! हमने काम पूरा कर लिया, वाह 😁 आप 'हैलो वर्ल्ड' संदेश को बदलकर और उस परिवर्तन को अपनी मास्टर शाखा में डालकर यह सब परीक्षण कर सकते हैं; फिर आपको पर अपडेट दिखाई देगा। http://your.ip.address:3000 इसे सेट अप करना थोड़ा मुश्किल है, लेकिन जब आप विकास कर रहे हों, तो आपके REST API सर्वर पर परिवर्तनों को स्वचालित रूप से तैनात करने वाली एक आसान CI/CD पाइपलाइन होना वाकई बहुत अच्छा है। इस तरह, आप परिवर्तनों को जल्दी से लाइव तैनात कर सकते हैं और उन्हें अपने वेब/मोबाइल एप्लिकेशन के फ्रंट एंड में देख सकते हैं। टिप्पणियों में मुझे बताएं कि क्या यह उपयोगी था, और पढ़ने के लिए धन्यवाद!! मित्रों अलविदा, — वेस