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

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

होस्ट किए गए टारगेट प्रॉक्सी को डिप्लॉय न करना

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

होस्ट किए गए टारगेट प्रॉक्सी को मिटाना

होस्ट किए गए टारगेट की किसी प्रॉक्सी को मिटाने के बाद, कुछ समय के अंदर उसके रनटाइम इंस्टेंस काम करना बंद कर देंगे. हालांकि, ऐप्लिकेशन कोड बना रहेगा.

लॉग फ़ाइलें ऐक्सेस करना

लॉग फ़ाइलें, डीबग करने और समस्या हल करने में मदद करती हैं. होस्ट किए गए टारगेट के डिप्लॉयमेंट के लिए, दो तरह की लॉग फ़ाइलें देखी जा सकती हैं:

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

Edge के यूज़र इंटरफ़ेस (यूआई) से लॉग ऐक्सेस करना

  1. इस लिंक पर जाएं: apigee.com/edge
  2. अपने लॉगिन क्रेडेंशियल डालें और साइन इन करें पर क्लिक करें.
  3. साइड नेविगेशन मेन्यू में, डेवलप करें > एपीआई प्रॉक्सी चुनें.
  4. वह प्रॉक्सी चुनें जिसके लॉग आपको देखने हैं.
  5. डेवलप करें टैब पर क्लिक करें.
  6. बिल्ड लॉग देखने के लिए, बिल्ड लॉग पर क्लिक करें.
  7. रनटाइम लॉग देखने के लिए, रनटाइम लॉग पर क्लिक करें.

एपीआई की मदद से लॉग ऐक्सेस करना

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

निजी एनपीएम डेटा स्टोर करने की जगह का इस्तेमाल करना

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

निजी रिपॉज़िटरी का इस्तेमाल करने के बारे में ज़रूरी जानकारी

जब Node.js ऐप्लिकेशन को Edge पर डिप्लॉय किया जाता है, तो आपके प्रोजेक्ट पर निर्भर सभी डिपेंडेंसी, डिप्लॉयमेंट प्रोसेस के हिस्से के तौर पर अपने-आप इंपोर्ट हो जाती हैं. होस्ट किए गए टारगेट, आपके कोड को डिप्लॉय करने के बाद उस पर npm install चलाते हैं. हालांकि, अगर डेवलपमेंट एनवायरमेंट में निजी NPM रिपॉज़िटरी का इस्तेमाल किया जाता है, तो Cloud में निजी डिपेंडेंसी को हल नहीं किया जा सकता. इस मामले में, डिप्लॉयमेंट की सुविधा apigeetool का इस्तेमाल करते समय, --bundled-dependencies विकल्प का इस्तेमाल करें. अपने सिस्टम से Edge पर Node.js डिप्लॉय करें भी देखें.

apigeetool पर --bundled-dependencies फ़्लैग का इस्तेमाल करने पर, आपका Node.js ऐप्लिकेशन, होस्ट किए गए टारगेट पर अपलोड हो जाएगा. साथ ही, package.json में bundledDependencies कलेक्शन में दी गई सभी लोकल/निजी फ़ाइलों को ज़िप किया जाएगा और बंडल के साथ अपलोड किया जाएगा.

हालांकि, यह आम स्थिति नहीं है, लेकिन ध्यान रखें कि अगर आपकी कंपनी में एक सार्वजनिक एनपीएम रिपॉज़िटरी का डुप्लीकेट वर्शन बनाना है, तो आपका डिप्लॉयमेंट नहीं हो पाएगा. ऐसा तब होगा, जब आपके डिप्लॉयमेंट बंडल में ऐसी .npmrc या package-lock.json फ़ाइल हो जो आपके निजी डेटा की जानकारी देती हो. इस मामले में, पक्का करें कि आपने जिस प्रॉक्सी बंडल को डिप्लॉय किया है उससे .npmrc या package-lock.json को हटा दें.

निजी NPM रिपॉज़िटरी की मदद से डिप्लॉय करना

निजी एनपीएम डेटा स्टोर करने की जगह से मिले मॉड्यूल इस्तेमाल करने के लिए यह तरीका अपनाएं:

  1. एनपीएम में लॉग इन करें:
    npm login
  2. npm का पुष्टि करने वाला टोकन पाएं:
    1. अपने .npmrc (~/.npmrc में होना चाहिए) पर जाएं.
    2. अपने .npmrc में, लाइन के आखिर में मौजूद टोकन को नोट करें, जो इस तरह दिखता है:

      //registry.npmjs.org/:_authToken=****
    3. इसके अलावा, पुष्टि करने वाले टोकन की सूची बनाने, उसे बनाने या निरस्त करने के लिए, npm token <list | create | revoke> निर्देशों का इस्तेमाल करें. ज़्यादा जानकारी के लिए, npm-token का दस्तावेज़ देखें.
  3. नीचे बताए गए तरीके से, Key Value Maps के कॉन्फ़िगरेशन पेज को ऐक्सेस करें.

    Edge

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

    1. apigee.com/edge में साइन इन करें.
    2. बाएं नेविगेशन बार में, एडमिन > एनवायरमेंट > कीवर्ड वैल्यू मैप चुनें.

    क्लासिक Edge (प्राइवेट क्लाउड)

    Edge के क्लासिक यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, की वैल्यू मैप के कॉन्फ़िगरेशन पेज को ऐक्सेस करने के लिए:

    1. http://ms-ip:9000 में साइन इन करें, जहां ms-ip, मैनेजमेंट सर्वर नोड का आईपी पता या डीएनएस नाम है.
    2. सबसे ऊपर मौजूद नेविगेशन बार में, एपीआई > एनवायरमेंट कॉन्फ़िगरेशन > 'की वैल्यू मैप' चुनें.
  4. + कीवर्ड वैल्यू मैप पर क्लिक करें.
  5. 'नई कुंजी की वैल्यू मैप' डायलॉग में, कोई नाम डालें और एन्क्रिप्ट (सुरक्षित) किया गया चुनें.
  6. जोड़ें पर क्लिक करें.
  7. आपने जो ऑथेंटिकेशन टोकन पहले ढूंढा था या बनाया था उसे हर उस KVM में नई एंट्री के तौर पर जोड़ें जो आपने अभी बनाया है.
  8. अपनी app.yaml फ़ाइल में, ऐसी एंट्री जोड़ें जिसमें npm के पुष्टि करने वाले टोकन से जुड़े KVM और पासकोड का रेफ़रंस हो. यह कुछ ऐसी नज़र आनी चाहिए:
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    कहां:

    • टॉप लेवल name एट्रिब्यूट, बनाए जाने वाले एनवायरमेंट वैरिएबल के नाम से जुड़ा होता है.
    • valueRef में दिया गया नाम, पहले बनाए गए केवीएम से मेल खाता है.
    • key एट्रिब्यूट, उस पासकोड से मेल खाता है जो केवीएम में जोड़े गए npm टोकन को मैप करता है.
  10. .npmrc फ़ाइल उसी डायरेक्ट्री में बनाएं जिसमें आपकी Package.json की फ़ाइल है. यह फ़ाइल कुछ इस तरह दिखनी चाहिए:
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    अगर registry.npmjs.org का इस्तेमाल नहीं किया जा रहा है, तो .npmrc फ़ाइल में स्कोप सेट किया जा सकता है. इसके लिए, @myscope:registry=https://mycustomregistry.example.org जैसी लाइन जोड़ें npmrc दस्तावेज़ भी देखें.
  11. .npmrc फ़ाइल और app.yaml फ़ाइलों के साथ, अपनी Node.js प्रॉक्सी को अपलोड या अपडेट करें.
  12. पक्का करें कि आपकी नई या अपडेट की गई प्रॉक्सी, प्राइवेट रिपॉज़िटरी के मनमुताबिक मॉड्यूल के साथ काम करे और डिप्लॉय हो जाए.
  13. अगर प्रॉक्सी डिप्लॉय नहीं होती है, तो बिल्ड लॉग देखें और पता लगाएं कि क्या निजी npm मॉड्यूल को इंस्टॉल करने में कोई समस्या आई है. अगर हां, तो:
    1. 'डेवलप करें' टैब में जाकर, पक्का करें कि .npmrc मौजूद हो.
    2. पक्का करें कि आपका टोकन मान्य है (केवीएम में मौजूद टोकन की मदद से, मॉड्यूल को स्थानीय तौर पर इंस्टॉल करके देखें).
    3. अगर पसंद के मुताबिक बनाए गए स्कोप का इस्तेमाल किया जा रहा है, तो पक्का करें कि वह सेट हो.

बंडल की गई डिपेंडेंसी के लिए NPM वर्शन तय करना

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

अगर बंडल डिपेंडेंसी का इस्तेमाल किया जाता है और NPM_VERSION नहीं बताया जाता है, तो होस्ट किए गए टारगेट डिफ़ॉल्ट रूप से NPM v4 का इस्तेमाल करते हैं. अगर बंडल डिपेंडेंसी का इस्तेमाल नहीं किया जाता है, तो आपके तय किए गए Node.js रनटाइम में शामिल एनपीएम के वर्शन का इस्तेमाल किया जाता है.

बंडल किए गए डिपेंडेंसी का उदाहरण

होस्ट किए गए टारगेट के साथ बंडल की गई डिपेंडेंसी की सुविधा दिखाने वाले उदाहरण के लिए, कस्टम मॉड्यूल का इस्तेमाल करके, होस्ट किए गए फ़ंक्शन के साथ Node.js ऐप्लिकेशन बनाने का तरीका देखें.

स्वास्थ्य जांच का एंडपॉइंट जोड़ें

आपके पास अपने Node.js ऐप्लिकेशन के लिए, हेल्थ चेक एंडपॉइंट लागू करने का भी विकल्प है. Apigee इस एंडपॉइंट का इस्तेमाल तब करता है, जब आपका Node.js ऐप्लिकेशन यह जांचना शुरू करता है कि ऐप्लिकेशन चालू है और कंटेनर में चल रहा है.

डिफ़ॉल्ट रूप से, Apigee के लिए एंडपॉइंट /health होता है. HOSTED_TARGET_HEALTH_CHECK_PATH नाम वाले एनवायरमेंट वैरिएबल में एंडपॉइंट तय करके, डिफ़ॉल्ट एंडपॉइंट बदला जा सकता है. इस वैरिएबल को ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में सेट किया जा सकता है. ज़्यादा जानकारी के लिए, मेनिफ़ेस्ट फ़ाइल के एलिमेंट देखें.

हेल्थ चेक एंडपॉइंट लागू करना ज़रूरी नहीं है. हालांकि, अगर आपने हेल्थ जांच के लिए एंडपॉइंट लागू किया है, तो इन बातों का ध्यान रखें:

  • अगर Apigee के एंडपॉइंट पर हिट करने पर आपका ऐप्लिकेशन बंद हो जाता है, तो ऐप्लिकेशन उम्मीद के मुताबिक शुरू नहीं होगा.
  • अगर आपका एंडपॉइंट, 404 नहीं मिला एचटीटीपी स्टेटस दिखाता है, तो ठीक है. /health या HOSTED_TARGET_HEALTH_CHECK_PATH का इस्तेमाल सिर्फ़ यह देखने के लिए किया जाता है कि आपका ऐप्लिकेशन चल रहा है या नहीं. असल जवाब को अनदेखा कर दिया जाता है.

एनपीएम कैश मेमोरी की जगह बदलना

Node.js के नए वर्शन में एनपीएम के ऐसे वर्शन का इस्तेमाल किया जाता है जो एनपीएम की कैश मेमोरी के लिए /root/.npm का इस्तेमाल करता है. होस्ट किए गए टारगेट के लिए यह जगह समस्या पैदा करती है, क्योंकि वह डायरेक्ट्री रीड-ओनली होती है. ऐसा इसलिए होता है, क्योंकि होस्ट किए गए टारगेट का रनटाइम, tmpfs फ़ाइल सिस्टम का इस्तेमाल करता है. इसमें सिर्फ़ /tmp में बदलाव किया जा सकता है. इस समस्या को हल करने के लिए, अपने ऐप्लिकेशन की app.yamlफ़ाइल (मेनिफ़ेस्ट फ़ाइल) में npm_config_cache एनवायरमेंट वैरिएबल को /tmp में मौजूद डायरेक्ट्री में सेट करें. उदाहरण के लिए:

  runtime: node
  application: my-express-app
  env:
    - name: npm_config_cache
      value: /tmp/.npm
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  

NPM के बिना अपना ऐप्लिकेशन चलाना

डिफ़ॉल्ट रूप से, होस्ट किए गए टारगेट, आपके होस्ट किए गए टारगेट ऐप्लिकेशन को चलाने के लिए npm start का इस्तेमाल करते हैं. हालांकि, पिछले टास्क में हमने एनपीएम के इस्तेमाल में समस्या के बारे में चर्चा की थी. इसकी वजह यह थी कि नए वर्शन, एनपीएम की कैश मेमोरी के लिए /root/.npm का इस्तेमाल करने की कोशिश करेंगे, जिसे लिखा नहीं जा सकता. इसकी वजह से, होस्ट किया गया टारगेट शुरू नहीं हो पा रहा है. हालांकि, पहले वाला टास्क इस समस्या को हल कर देगा, लेकिन दूसरा विकल्प यह है कि आप ऐप्लिकेशन को एनपीएम के बिना चलाएं. इसके लिए, अपने ऐप्लिकेशन की app.yamlफ़ाइल (मेनिफ़ेस्ट फ़ाइल) में command और args वैल्यू का इस्तेमाल किया जा सकता है. इससे, node index.js का इस्तेमाल करके होस्ट किया गया टारगेट सीधे चलाया जा सकता है. उदाहरण के लिए:

  runtime: node
  application: my-express-app
  command: node
  args:
    - index.js
  env:
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  
बेशक, अपनी पसंद के मुताबिक कोई भी निर्देश दिया जा सकता है और node index.js सिर्फ़ एक उदाहरण है.