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

यह Apigee Edge का दस्तावेज़ है.
Go to the Apigee X documentation.
info

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

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

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

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

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

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

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

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

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

खास जानकारी

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

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

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

apigeetool इंस्टॉल करना

डेवलपर के लिए, प्रॉक्सी कोड को Edge पर डिप्लॉय करने का सबसे सही तरीका apigeetool का इस्तेमाल करना है. apigeetool को इंस्टॉल करने के लिए, यह एनपीएम कमांड चलाएं:

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 नाम की एक फ़ाइल बनाएं और इसमें यह कोड कॉपी करें. ध्यान दें कि express module को डिपेंडेंसी के तौर पर लिस्ट किया गया है.
  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 को साफ़ तौर पर तब देना होगा, जब आपके पास ऐसे कस्टम मॉड्यूल हों जो npm के ज़रिए उपलब्ध नहीं हैं.

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

  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 यूज़र इंटरफ़ेस (यूआई) में प्रॉक्सी देखना

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

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

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

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

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

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

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


होस्ट किए गए टारगेट के लिए, आपको Node.js ऐप्लिकेशन की रूट डायरेक्ट्री को resources/hosted नाम की डायरेक्ट्री में रखना होगा. सिर्फ़ 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!