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

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

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

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

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

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

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

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

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

Edge UI से लॉग ऐक्सेस करना

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

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

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

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

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

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

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

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

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

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

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

  1. npm में लॉग इन करें:
    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 यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, Key Value Maps के कॉन्फ़िगरेशन पेज को ऐक्सेस करने के लिए:

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

    Classic Edge (Private Cloud)

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

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

    कहां:

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

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

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

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

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

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

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

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

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

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

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

NPM कैश की जगह बदलना

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 सिर्फ़ एक उदाहरण है.