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

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

नीचे दिए गए ट्यूटोरियल में बताया गया है कि होस्ट किए गए टारगेट का इस्तेमाल करके, Edge पर Node.js ऐप्लिकेशन को कैसे डिप्लॉय किया जाता है. यह 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. पक्का करें कि आपने "नमस्ते World" सैंपल चुना हो.
  7. आगे बढ़ें पर क्लिक करें.
  8. सुरक्षा पेज पर, अनुमति के लिए पास-थ्रू (कोई नहीं) चुनें.
  9. आगे बढ़ें पर क्लिक करें.
  10. आगे बढ़ें पर क्लिक करें.
  11. पक्का करें कि 'बिल्ड' पेज पर, टेस्ट एनवायरमेंट चुना गया हो. ध्यान दें कि प्रॉक्सी टाइप, होस्ट किए गए टारगेट है.
  12. बिल्ड और डिप्लॉय करें पर क्लिक करें. प्रॉक्सी डिप्लॉयमेंट पूरा होने में कुछ समय लग सकता है.
  13. प्रॉक्सी के डिप्लॉय होने के बाद, पेज पर सबसे नीचे मौजूद हैलो-होस्टेड-टारगेट प्रॉक्सी देखें पर क्लिक करें.
  14. एपीआई प्रॉक्सी को कॉल करें. ऐसा करने का सबसे आसान तरीका यह है कि ट्रैक करें टैब पर जाएं, ट्रैक करने का सेशन शुरू करें, और भेजें पर क्लिक करें. आपको इस जवाब के साथ 200 स्थिति मिलेगी:
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

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

  1. Edge यूज़र इंटरफ़ेस (यूआई) में, डेवलप करें टैब पर क्लिक करें.
  2. Navigator में, टारगेट एंडपॉइंट में जाकर, default चुनें.
  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-hosted-express के तौर पर कॉल करें.
  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 ऐप्लिकेशन के स्ट्रक्चर जैसा होना चाहिए. हालांकि, Edge पर apigeetool के साथ डिप्लॉय करने से पहले, पक्का करें कि आपने इन ज़रूरी शर्तों को पूरा किया हो:

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

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

  1. टर्मिनल में, अपने Node.js ऐप्लिकेशन की रूट डायरेक्ट्री पर जाने के लिए, cd का इस्तेमाल करें.
  2. deployhostedtarget कमांड के साथ 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 कमांड की मदद से, Postman जैसे 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 के यूज़र इंटरफ़ेस (यूआई) में प्रॉक्सी देखना

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

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

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

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

पहला चरण: प्रॉक्सी फ़ाइल के स्ट्रक्चर में बदलाव करना

फ़ाइल के स्ट्रक्चर में बदलाव करने के लिए, आपके लोकल फ़ाइल सिस्टम पर एपीआई प्रॉक्सी का होना ज़रूरी है. अगर प्रॉक्सी, Edge पर डिप्लॉय की गई है, तो जारी रखने से पहले आपको उसे डाउनलोड करना होगा. पारंपरिक कॉन्फ़िगरेशन में, Node.js कोड वाले Edge प्रॉक्सी "बंडल" में इस फ़ाइल स्ट्रक्चर का इस्तेमाल किया जाता है. 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 प्रॉक्सी के लिए ज़रूरी है कि टारगेट एंडपॉइंट फ़ाइल (आम तौर पर /apiproxy/targets/default.xml) में <ScriptTarget> नाम का टैग मौजूद हो. होस्ट किए गए टारगेट के लिए, आपको <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 अपनी प्रॉक्सी की रूट डायरेक्ट्री पर जाएं: /apiproxy
  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 कमांड की मदद से, Postman जैसे REST क्लाइंट के साथ या ट्रेस टूल में Edge यूज़र इंटरफ़ेस (यूआई) में की जा सकती है. यहां cURL कमांड का उदाहरण दिया गया है:

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