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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

निजी डेटा स्टोर करने की जगह का इस्तेमाल करने के बारे में आपको क्या जानने की ज़रूरत है

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

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

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

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

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

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

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

    Edge

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

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

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

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

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

    जगह:

    • टॉप लेवल name एट्रिब्यूट, बनाए जाने वाले एनवायरमेंट वैरिएबल के नाम से मेल खाता है.
    • valueRef में दिया गया नाम, आपके पहले बनाए गए केवीएम से मेल खाता है.
    • key एट्रिब्यूट उस कुंजी से जुड़ा होता है जो केवीएम में जोड़े गए एनपीएम टोकन से मैप करती है.
  10. आपकी Package.json वाली डायरेक्ट्री में ही .npmrc फ़ाइल बनाएं. यह फ़ाइल इस तरह से दिखनी चाहिए:
    //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. अगर प्रॉक्सी डिप्लॉय नहीं होता है, तो बिल्ड लॉग की जांच करके देखें कि कहीं निजी एनपीएम मॉड्यूल को इंस्टॉल न किया जा सका हो. अगर हां, तो:
    1. 'बनाएं' टैब में जाकर, पक्का करें कि .npmrc मौजूद है.
    2. पक्का करें कि आपका टोकन मान्य है (kvm में मौजूद टोकन की मदद से, मॉड्यूल को स्थानीय तौर पर इंस्टॉल करके देखें).
    3. अगर कस्टम स्कोप का इस्तेमाल किया जा रहा है, तो पक्का करें कि वह सेट हो.

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

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

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

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

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

कैंपेन की परफ़ॉर्मेंस की जांच करने वाला एंडपॉइंट जोड़ें

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

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

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

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

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

Node.js के नए वर्शन, NPM के ऐसे वर्शन का इस्तेमाल करते हैं जो NPM कैश मेमोरी के लिए /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 का इस्तेमाल करता है. हालांकि, पिछले टास्क में, हमने NPM के इस्तेमाल से जुड़ी समस्या के बारे में चर्चा की थी, क्योंकि नए वर्शन, NPM कैश मेमोरी के लिए /root/.npm का इस्तेमाल करने की कोशिश करेंगे. हालांकि, यह कैश मेमोरी में सेव नहीं किया जा सकता. इसकी वजह से, आपका होस्ट किया गया टारगेट शुरू नहीं हो सका. इस समस्या के समाधान के लिए, पहले किया गया टास्क, आपके ऐप्लिकेशन को 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 सिर्फ़ एक उदाहरण है.