होस्ट किए गए टारगेट के ट्यूटोरियल

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

इस ट्यूटोरियल में बताया गया है कि होस्ट किए गए टारगेट का इस्तेमाल करके, Node.js ऐप्लिकेशन को Edge पर कैसे डिप्लॉय करें. यह Apigee पर होस्ट किया गया Node.js रनटाइम एनवायरमेंट है.

ट्यूटोरियल में इन टास्क की जानकारी दी गई है:

  • Edge यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, होस्ट किए गए टारगेट पर Node.js ऐप्लिकेशन को डिप्लॉय करना.
  • आपकी लोकल डेवलपमेंट मशीन से, होस्ट किए गए टारगेट पर Node.js ऐप्लिकेशन को डिप्लॉय करना.
  • किसी मौजूदा प्रॉक्सी को परंपरागत Edge Node.js टारगेट लागू करने के साथ, होस्ट किए गए टारगेट पर माइग्रेट करना.

Edge यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, होस्ट किए गए टारगेट पर Node.js ऐप्लिकेशन को डिप्लॉय करें

इस ट्यूटोरियल में, आपको Edge यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, होस्ट किए गए टारगेट में एक सामान्य Node.js ऐप्लिकेशन डिप्लॉय करना होगा. ट्यूटोरियल पूरा करने के बाद, आपको होस्ट किए गए टारगेट प्रॉक्सी के बुनियादी स्ट्रक्चर और कॉन्टेंट के बारे में पता चलेगा. साथ ही, आपको यह भी पता चलेगा कि डिप्लॉयमेंट को ऐक्सेस कैसे करें और लॉग फ़ाइलें कैसे बनाएं.

साइन इन करना

  1. इस पर जाएं: apigee.com/edge
  2. साइन इन करने के लिए, Apigee का लॉगिन क्रेडेंशियल डालें.

एक नया प्रॉक्सी बनाएं

  1. साइड नेविगेशन मेन्यू में, डेवलप करें > एपीआई प्रॉक्सी चुनें.
  2. + प्रॉक्सी पर क्लिक करें.
  3. 'प्रॉक्सी बनाएं' पेज में, होस्ट किया गया टारगेट चुनें.
  4. आगे बढ़ें पर क्लिक करें.
  5. प्रॉक्सी नाम फ़ील्ड में, hello-hosted-targets डालें.
  6. पक्का करें कि "नमस्ते दुनिया" सैंपल चुना गया हो.
  7. आगे बढ़ें पर क्लिक करें.
  8. सुरक्षा पेज में जाकर, अनुमति देने के लिए पास करें (कोई भी नहीं) को चुनें.
  9. आगे बढ़ें पर क्लिक करें.
  10. आगे बढ़ें पर क्लिक करें.
  11. बिल्ड पेज में, पक्का करें कि टेस्ट एनवायरमेंट को चुना गया हो. ध्यान दें कि प्रॉक्सी टाइप, होस्ट किए गए टारगेट है.
  12. बनाएं और डिप्लॉय करें पर क्लिक करें. प्रॉक्सी डिप्लॉयमेंट को पूरा होने में कुछ समय लग सकता है.
  13. प्रॉक्सी सर्वर लागू होने के बाद, पेज पर सबसे नीचे हैलो-होस्ट किए गए टारगेट प्रॉक्सी देखें पर क्लिक करें.
  14. एपीआई प्रॉक्सी को कॉल करें. ऐसा करने का सबसे आसान तरीका है, ट्रेस टैब पर जाएं, ट्रेस सेशन शुरू करें, और भेजें पर क्लिक करें. आपको इस जवाब के साथ 200 स्टेटस मिलेगा:
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

प्रॉक्सी की जांच करें

  1. Edge यूज़र इंटरफ़ेस (यूआई) में, डेवलप करें टैब पर क्लिक करें.
  2. नेविगेटर में, टारगेट एंडपॉइंट में डिफ़ॉल्ट चुनें.
  3. कोड एडिटर में, ध्यान दें कि <TargetEndpoint> एलिमेंट के नीचे एक खाली <HostedTarget/> चाइल्ड एलिमेंट मौजूद है. यह खाली टैग ज़रूरी है. यह Edge को बताता है कि प्रॉक्सी का टारगेट एक ऐसा ऐप्लिकेशन है जिसे होस्ट किए गए टारगेट एनवायरमेंट में डिप्लॉय किया जाता है.

  4. नेविगेटर में, स्क्रिप्ट सेक्शन में मौजूद कॉन्टेंट पर ध्यान दें. Node.js ऐप्लिकेशन फ़ाइलों को होस्ट किए गए लेबल की सूची में रखा जाता है.

  5. Edge यूज़र इंटरफ़ेस (यूआई) में, स्क्रिप्ट में होस्ट किए गए सेक्शन में दी गई फ़ाइलों की जांच करें:
    • app.yaml फ़ाइल में कॉन्फ़िगरेशन की जानकारी होती है. उदाहरण के लिए, आपके पास ऐसे एनवायरमेंट वैरिएबल जोड़ने का विकल्प है जो रनटाइम के दौरान Node.js ऐप्लिकेशन के लिए उपलब्ध होंगे. इस उदाहरण के लिए, आपको इस फ़ाइल में बदलाव करने की ज़रूरत नहीं है.
    • index.js फ़ाइल, Node.js ऐप्लिकेशन की मुख्य फ़ाइल होती है.
    • अगर आपके ऐप्लिकेशन में कोई मॉड्यूल डिपेंडेंसी है, तो उसे package.json में शामिल किया जाना चाहिए.

लॉग फ़ाइलें देखें

ऐप्लिकेशन लॉग फ़ाइलें, बिल्ड फ़ेज़ के दौरान और रनटाइम के दौरान होने वाली समस्याओं को डीबग करने में काम आ सकती हैं.

  1. Edge यूज़र इंटरफ़ेस (यूआई) में, डेवलप करें टैब पर क्लिक करें.
  2. बिल्ड लॉग देखने के लिए, लॉग बनाएं पर क्लिक करें.
  3. डिप्लॉयमेंट लॉग देखने के लिए, रनटाइम लॉग पर क्लिक करें.

    लॉग फ़ाइलें ऐक्सेस करना भी देखें.

खास जानकारी

  • आपने होस्ट किए गए टारगेट एनवायरमेंट में एक सामान्य Node.js ऐप्लिकेशन को डिप्लॉय किया है और Edge यूज़र इंटरफ़ेस (यूआई) में इसे टेस्ट किया है.
  • आपको पता चला है कि होस्ट किए गए टारगेट प्रॉक्सी के लिए <HostedTarget/> नाम के टारगेट एंडपॉइंट में एक खास खाली टैग की ज़रूरत होती है.
  • आपको पता चला है कि Edge आपके लिए अपने-आप मॉड्यूल डिपेंडेंसी लोड करता है. साथ ही, यह डिपेंडेंसी package.json फ़ाइल में शामिल होनी चाहिए.
  • आपने बिल्ड और रनटाइम लॉग फ़ाइलों को देखने का तरीका भी सीखा.

अपने सिस्टम से Edge पर Node.js को डिप्लॉय करें

इस सेक्शन में बताया गया है कि apigeetool का इस्तेमाल करके होस्ट किए गए टारगेट पर अपने लोकल सिस्टम से स्टैंडअलोन Node.js ऐप्लिकेशन को कैसे डिप्लॉय करें. apigeetool यूटिलिटी Node.js ऐप्लिकेशन को, होस्ट किए गए नए टारगेट प्रॉक्सी में बंडल करती है और उसे Edge पर डिप्लॉय करती है.

apigeetool इंस्टॉल करें

डेवलपर को Edge पर प्रॉक्सी कोड डिप्लॉय करने के लिए, apigeetool का इस्तेमाल करने का सुझाव दिया जाता है. apigeetool इंस्टॉल करने के लिए, नीचे दिए गए NPM निर्देश को चलाएं:

npm install -g apigeetool

Node.js ऐप्लिकेशन बनाना

चीज़ों को आसान बनाने के लिए, आपको एक आसान Node.js ऐप्लिकेशन का कोड दिया गया है.

  1. Node.js ऐप्लिकेशन के लिए डायरेक्ट्री बनाएं. इसके लिए, डायरेक्ट्री को node- पाएंगे-exp को कॉल करें.
  2. cd को नई डायरेक्ट्री में सेव करेगा.
  3. index.js नाम की एक फ़ाइल बनाएं और उसमें यह कोड कॉपी करें.
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
    
  5. package.json नाम की फ़ाइल बनाएं और इस कोड को उसमें कॉपी करें. ध्यान दें कि एक्सप्रेस मॉड्यूल को डिपेंडेंसी के तौर पर शामिल किया गया है.
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
    
  7. app.yaml नाम की फ़ाइल बनाएं और इसमें यह कोड कॉपी करें:
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
    
  9. पक्का करें कि आपकी डायरेक्ट्री इस तरह दिखे:
    ls
    app.yaml index.js package.json
    

ऐप्लिकेशन कोड के लिए ज़रूरी डायरेक्ट्री स्ट्रक्चर की समीक्षा

आपके Node.js ऐप्लिकेशन का स्ट्रक्चर स्टैंडर्ड Node.js ऐप्लिकेशन जैसा होना चाहिए. हालांकि, apigeetool से Edge के साथ डिप्लॉय करने से पहले, पक्का करें कि आपने इन शर्तों को पूरा किया हो:

  • app.yaml मेनिफ़ेस्ट फ़ाइल ज़रूरी है और यह आपके ऐप्लिकेशन की रूट डायरेक्ट्री में मौजूद होनी चाहिए. इस फ़ाइल के बारे में ज़्यादा जानने के लिए, मेनिफ़ेस्ट फ़ाइल देखें.
  • package.json फ़ाइल ज़रूरी है. इसमें ऐसी सभी डिपेंडेंसी शामिल होनी चाहिए जो आपके ऐप्लिकेशन के लिए ज़रूरी हैं.
  • node_modules फ़ोल्डर की ज़रूरी नहीं है. Node.js ऐप्लिकेशन के डिप्लॉय होने पर, Edge आपके लिए npm install की सुविधा देता है. यह package.json की डिपेंडेंसी के तौर पर काम करता है. अगर आपके पास ऐसे कस्टम मॉड्यूल हैं जो npm तक उपलब्ध नहीं होते, तो आपको साफ़ तौर पर node_modules देना सिर्फ़ तब देना होगा, जब.

प्रॉक्सी डिप्लॉय करना

  1. टर्मिनल में, अपने Node.js ऐप्लिकेशन की रूट डायरेक्ट्री में cd डालें.
  2. डिप्लॉयटेड टारगेट कमांड के साथ apigeetool इस्तेमाल करें:
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    यहां -n वह नाम है जिसे आप नए प्रॉक्सी को देना चाहते हैं. यह संगठन के भीतर अलग होना चाहिए. नाम में, जिन वर्णों का इस्तेमाल किया जा सकता है वे इन तक सीमित हैं: a-z0-9._\-$%

    उदाहरण के लिए:

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    apigeetool इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, https://github.com/apigee/apigeetool-node देखें.

प्रॉक्सी की जांच की जा रही है

cURL कमांड की मदद से, पोस्टमैन जैसे REST क्लाइंट की मदद से या ट्रेस टूल के Edge यूज़र इंटरफ़ेस (यूआई) में प्रॉक्सी की जांच की जा सकती है. यहां cURL कमांड का उदाहरण दिया गया है.

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

बिल्ड लॉग पाना

बिल्ड लॉग आपको Node.js ऐप्लिकेशन को डिप्लॉय और बनाने से जुड़े आउटपुट दिखाते हैं. साथ ही, फ़ाइलें लॉग करें भी देखें.

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

उदाहरण के लिए:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

रनटाइम लॉग पाना

रनटाइम लॉग, मौजूदा ऐप्लिकेशन से जुड़े आउटपुट दिखाते हैं. रनटाइम लॉग, एनवायरमेंट के दायरे में होते हैं और फ़िलहाल डिप्लॉय किए गए प्रॉक्सी बदलाव के लिए लॉग दिखाते हैं. लॉग फ़ाइलें भी देखें.

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

उदाहरण के लिए:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

Edge यूज़र इंटरफ़ेस (यूआई) में प्रॉक्सी देखना

सही तरीके से डिप्लॉयमेंट के बाद, Edge यूज़र इंटरफ़ेस (यूआई) के एपीआई प्रॉक्सी वाले हिस्से में अपनी प्रॉक्सी को देखा जा सकता है और उसमें बदलाव किया जा सकता है.

मौजूदा Node.js प्रॉक्सी को होस्ट किए गए टारगेट प्रॉक्सी में माइग्रेट करना

इस सेक्शन में, मौजूदा Edge API प्रॉक्सी को मैन्युअल तरीके से माइग्रेट करने का तरीका बताया गया है. यह प्रॉक्सी, होस्ट किए गए टारगेट पर परंपरागत Node.js टारगेट लागू करने की सुविधा का इस्तेमाल करता है. इस दस्तावेज़ में यह भी बताया गया है कि माइग्रेशन पूरा करने के बाद, प्रॉक्सी को कैसे डिप्लॉय किया जाए.

माइग्रेशन के दौरान, एपीआई प्रॉक्सी स्ट्रक्चर, नीतियों, फ़्लो, और कॉन्फ़िगरेशन के अन्य एलिमेंट को सुरक्षित रखा जाता है. जैसा कि नीचे बताया गया है, माइग्रेशन की प्रक्रिया चार चरणों में की जा सकती है. इसके बाद, apigeetool पर माइग्रेट किए गए प्रॉक्सी को डिप्लॉय करें.

पहला चरण: प्रॉक्सी फ़ाइल का स्ट्रक्चर अडजस्ट करें

फ़ाइल स्ट्रक्चर को अडजस्ट करने के लिए, आपके लोकल फ़ाइल सिस्टम पर एपीआई प्रॉक्सी का होना ज़रूरी है. अगर प्रॉक्सी को Edge पर डिप्लॉय किया गया है, तो जारी रखने से पहले आपको इसे डाउनलोड करना होगा. पारंपरिक कॉन्फ़िगरेशन में, Edge प्रॉक्सी "बंडल" (जिसमें Node.js कोड शामिल होता है) इस फ़ाइल स्ट्रक्चर को फ़ॉलो करता है. Node.js ऐप्लिकेशन कोड को resources/node डायरेक्ट्री में रखा जाता है:

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


होस्ट किए गए टारगेट के लिए, आपको अपने Node.js ऐप्लिकेशन की रूट डायरेक्ट्री को resources/hosted नाम की डायरेक्ट्री में रखना होगा. बस रिसॉर्स/होस्ट किए गए नाम की नई डायरेक्ट्री बनाएं और resources/node के कॉन्टेंट को उसमें मूव करें. इसके बाद, आप resources/node डायरेक्ट्री को मिटा सकते हैं.

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

दूसरा चरण: मेनिफ़ेस्ट फ़ाइल जोड़ें

app.yaml नाम की एक मेनिफ़ेस्ट फ़ाइल बनाएं और इसे apiproxy/resources/hosted डायरेक्ट्री में रखें.

app.yaml फ़ाइल का एक उदाहरण नीचे दिया गया है. इससे पता चलता है कि रनटाइम Node.js (ज़रूरी है) है. यह एक्ज़ीक्यूशन एनवायरमेंट में एक एनवायरमेंट वैरिएबल भी बनाता है. (एक ऐसा वैरिएबल जिसे Node.js ऐप्लिकेशन से ऐक्सेस किया जा सकता है). एनवायरमेंट वैरिएबल डालना ज़रूरी नहीं है. इसे यहां सिर्फ़ उदाहरण के तौर पर दिखाया गया है. ज़्यादा जानकारी और उदाहरणों के लिए, मेनिफ़ेस्ट फ़ाइल देखें.

runtime: node
  env:
    - name: NODE_ENV
      value: production


यहां दिए गए उदाहरण में एक Node.js प्रोजेक्ट स्ट्रक्चर दिखाया गया है, जो होस्ट किए गए टारगेट के डिप्लॉयमेंट के लिए प्रॉक्सी में सही जगह पर है:

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

तीसरा चरण: पक्का करें कि आपके पास Package.json फ़ाइल है

पारंपरिक Edge Node.js प्रॉक्सी में, package.json ज़रूरी नहीं होता था. हालांकि, होस्ट किए गए टारगेट के लिए, आपको apiproxy/resources/hosted डायरेक्ट्री में एक टारगेट देना होगा. इस फ़ाइल में अपने ऐप्लिकेशन के लिए सभी ज़रूरी डिपेंडेंसी बताना न भूलें.

चौथा चरण: प्रॉक्सी के टारगेट एंडपॉइंट में बदलाव करें

पारंपरिक Node.js प्रॉक्सी के लिए यह ज़रूरी है कि <ScriptTarget> नाम का टैग, टारगेट एंडपॉइंट फ़ाइल (आम तौर पर /apiproxy/targets/default.xml) में मौजूद हो. होस्ट किए गए टारगेट के लिए, आपको <HostedTarget/> नाम से एक खाली टैग जोड़ना होगा. अगर फ़ाइल में कोई ScriptTarget टैग है, तो उसे हटाया जा सकता है. उदाहरण के लिए:

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

प्रॉक्सी डिप्लॉय करना

अब apigeetool deployproxy कमांड का इस्तेमाल करके, प्रॉक्सी को डिप्लॉय किया जा सकता है.

  1. cd को अपने प्रॉक्सी की रूट डायरेक्ट्री में जोड़ें: /apiप्रॉक्सी
  2. प्रॉक्सी को डिप्लॉय करने के लिए, इस निर्देश का इस्तेमाल करें:
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .

    उदाहरण के लिए:

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

apigeetool का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, यहां देखें: https://github.com/apigee/apigeetool-node/blob/master/README.md.

प्रॉक्सी की जांच की जा रही है

cURL कमांड की मदद से, पोस्टमैन जैसे REST क्लाइंट की मदद से या ट्रेस टूल के Edge यूज़र इंटरफ़ेस (यूआई) में प्रॉक्सी की जांच की जा सकती है. cURL निर्देश का एक उदाहरण यहां दिया गया है:

curl http://myorg-test.apigee.net/hello-world
Hello,World!