হোস্ট করা লক্ষ্য কাজ

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

হোস্টেড টার্গেট প্রক্সি আনডিপ্লয় করা

যখন আপনি একটি হোস্টেড টার্গেটস অ্যাপ্লিকেশন অন্তর্ভুক্ত থাকা কোনো এজ প্রক্সি আনডিপ্লয় করেন, তখন সংশ্লিষ্ট হোস্টেড টার্গেটস অ্যাপটি আনডিপ্লয় হয়ে যায়, কিন্তু এর অন্তর্নিহিত অ্যাপ্লিকেশন ইমেজটি মুছে ফেলা হয় না। আপনি যদি প্রক্সিটি রিডিপ্লয় করেন, তাহলে হোস্টেড টার্গেটস অ্যাপটিও রিডিপ্লয় হয়ে যায়।

হোস্টেড টার্গেটস প্রক্সি মুছে ফেলা

আপনি একটি হোস্টেড টার্গেটস প্রক্সি মুছে ফেলার পর, এর অন্তর্নিহিত রানটাইম ইনস্ট্যান্সগুলো কিছু সময়ের মধ্যে চলা বন্ধ করে দেবে। তবে, অ্যাপ্লিকেশন কোডটি থেকে যাবে।

লগ ফাইল অ্যাক্সেস করা

লগ ফাইলগুলো ডিবাগিং এবং ট্রাবলশুটিংয়ের জন্য দরকারি। একটি হোস্টেড টার্গেটস ডিপ্লয়মেন্টের জন্য আপনি দুই ধরনের লগ ফাইল দেখতে পারেন:

  • বিল্ড লগ - একটি হোস্টেড টার্গেটস অ্যাপ ডেপ্লয় এবং বিল্ড করার সাথে সম্পর্কিত আউটপুট দেখায়।
  • রানটাইম লগ - চলমান হোস্টেড টার্গেটস অ্যাপ সম্পর্কিত আউটপুট দেখায়। রানটাইম লগগুলো এনভায়রনমেন্ট-ভিত্তিক এবং বর্তমানে ডেপ্লয় করা প্রক্সি রিভিশনের লগ তথ্য প্রদর্শন করে।

Edge UI থেকে লগ অ্যাক্সেস করা

  1. এখানে যান: apigee.com/edge
  2. আপনার লগইন তথ্য প্রবেশ করান এবং সাইন ইন-এ ক্লিক করুন।
  3. সাইড নেভিগেশন মেনু থেকে Develop > API Proxys নির্বাচন করুন।
  4. যে প্রক্সির লগ দেখতে চান, সেটি নির্বাচন করুন।
  5. ডেভেলপ ট্যাবে ক্লিক করুন।
  6. বিল্ড লগ দেখতে, বিল্ড লগস-এ ক্লিক করুন।
  7. রানটাইম লগ দেখতে, রানটাইম লগস-এ ক্লিক করুন।

এপিআই দিয়ে লগ অ্যাক্সেস করা

আপনি Edge API ব্যবহার করেও Hosted Targets-এর লগ পুনরুদ্ধার করতে পারেন। বিস্তারিত জানতে, Get Cached Node.js Logs দেখুন।

একটি ব্যক্তিগত এনপিএম রিপোজিটরি ব্যবহার করে

আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে একটি প্রাইভেট NPM রিপোজিটরি ব্যবহার করার ক্ষেত্রে, কীভাবে হোস্টেড টার্গেটগুলিতে একটি Node.js প্রক্সি ডেপ্লয় করতে হয়, তা এই অংশে ব্যাখ্যা করা হয়েছে।

প্রাইভেট রিপোজিটরি ব্যবহার সম্পর্কে আপনার যা জানা প্রয়োজন

যখন আপনি Edge-এ একটি Node.js অ্যাপ ডেপ্লয় করেন, তখন ডেপ্লয়মেন্ট প্রক্রিয়ার অংশ হিসেবে আপনার প্রোজেক্টের সমস্ত ডিপেন্ডেন্সি স্বয়ংক্রিয়ভাবে ইম্পোর্ট হয়ে যায়। মূলত, আপনার কোড ডেপ্লয় করার সময় Hosted Targets সেটির উপর npm install চালায়। তবে, আপনি যদি আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে একটি প্রাইভেট NPM রিপোজিটরি ব্যবহার করেন, তাহলে ক্লাউডে সেই প্রাইভেট ডিপেন্ডেন্সিগুলো রিজলভ করা যায় না। এক্ষেত্রে, সমাধান হলো ডেপ্লয়মেন্ট ইউটিলিটি apigeetool ব্যবহার করার সময় --bundled-dependencies অপশনটি ব্যবহার করা। আরও দেখুন: আপনার সিস্টেম থেকে Edge-এ Node.js ডেপ্লয় করুন।

আপনি যখন apigeetool--bundled-dependencies ফ্ল্যাগটি ব্যবহার করেন, তখন আপনার Node.js অ্যাপটি হোস্টেড টার্গেট-এ আপলোড হয়ে যায় এবং package.json এর bundledDependencies অ্যারেতে তালিকাভুক্ত যেকোনো লোকাল/প্রাইভেট ফাইল জিপ করে বান্ডেলের সাথে আপলোড করা হয়।

যদিও এটি একটি সাধারণ পরিস্থিতি নয়, মনে রাখবেন যে আপনি যদি অভ্যন্তরীণভাবে একটি পাবলিক 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. নিচে বর্ণিত পদ্ধতি অনুসারে কী ভ্যালু ম্যাপস কনফিগারেশন পেজটি অ্যাক্সেস করুন।

    প্রান্ত

    Edge UI ব্যবহার করে Key Value Maps কনফিগারেশন পেজ অ্যাক্সেস করতে:

    1. apigee.com/edge- এ সাইন ইন করুন।
    2. বাম দিকের নেভিগেশন বার থেকে অ্যাডমিন > এনভায়রনমেন্টস > কী ভ্যালু ম্যাপস নির্বাচন করুন।

    ক্লাসিক এজ (প্রাইভেট ক্লাউড)

    ক্লাসিক এজ UI ব্যবহার করে কী ভ্যালু ম্যাপস কনফিগারেশন পেজ অ্যাক্সেস করতে:

    1. http:// ms-ip :9000 এ সাইন ইন করুন, যেখানে ms-ip হলো ম্যানেজমেন্ট সার্ভার নোডের আইপি অ্যাড্রেস বা ডিএনএস নেম।
    2. উপরের নেভিগেশন বারে APIs > Environment Configuration > Key Value Maps নির্বাচন করুন।
  4. ক্লিক করুন + কী ভ্যালু ম্যাপ
  5. নিউ কী ভ্যালু ম্যাপ ডায়ালগে, একটি নাম লিখুন এবং এনক্রিপটেড নির্বাচন করুন।
  6. যোগ করুন-এ ক্লিক করুন।
  7. আপনি এইমাত্র তৈরি করা প্রতিটি KVM-এ, পূর্বে খুঁজে পাওয়া বা তৈরি করা অথোরাইজেশন টোকেনটিকে একটি নতুন এন্ট্রি হিসেবে যোগ করুন।
  8. আপনার app.yaml ফাইলে এমন একটি এন্ট্রি যোগ করুন যা npm auth টোকেনের সাথে যুক্ত KVM এবং কী-কে রেফারেন্স করে। এটি দেখতে অনেকটা এইরকম হবে:
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    কোথায়:

    • শীর্ষ স্তরের নেম অ্যাট্রিবিউটটি সেই এনভায়রনমেন্ট ভেরিয়েবলের নাম নির্দেশ করে, যা তৈরি করা হবে।
    • valueRef-এর অধীনে থাকা নামটি আপনার পূর্বে তৈরি করা 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. যদি প্রক্সিটি ডেপ্লয় না হয়, তাহলে প্রাইভেট এনপিএম মডিউলটি ইনস্টল করার সময় ব্যর্থ হয়েছে কিনা তা দেখতে বিল্ড লগগুলো পরীক্ষা করুন। যদি তাই হয়:
    1. ডেভেলপ ট্যাবের অধীনে, .npmrc ফাইলটি আছে কিনা তা নিশ্চিত করুন।
    2. আপনার টোকেনটি বৈধ কিনা তা নিশ্চিত করুন (কেভিএম-এ থাকা টোকেনটি ব্যবহার করে মডিউলটি স্থানীয়ভাবে ইনস্টল করার চেষ্টা করুন)।
    3. আপনি যদি কাস্টম স্কোপ ব্যবহার করেন, তবে নিশ্চিত করুন যে সেটি সেট করা আছে।

বান্ডেল করা নির্ভরতাগুলির জন্য NPM সংস্করণ নির্দিষ্ট করা

ডিফল্টরূপে, হোস্টেড টার্গেটস এনভায়রনমেন্টে বান্ডেল করা ডিপেন্ডেন্সিগুলো ইনস্টল করার জন্য NPM v4 ব্যবহৃত হয়। তবে, আপনি যদি একটি ভিন্ন NPM সংস্করণ ব্যবহার করতে চান, তাহলে আপনি NPM_VERSION এনভায়রনমেন্ট ভেরিয়েবলে তা নির্দিষ্ট করে দিতে পারেন। আপনি অ্যাপ্লিকেশনটির ম্যানিফেস্ট ফাইলে এই ভেরিয়েবলটি সেট করতে পারেন। বিস্তারিত জানতে ম্যানিফেস্ট ফাইলের উপাদানগুলো দেখুন।

আপনি যদি বান্ডেল করা ডিপেন্ডেন্সি ব্যবহার করেন এবং NPM_VERSION নির্দিষ্ট না করেন, তাহলে হোস্টেড টার্গেটস ডিফল্টরূপে NPM v4 ব্যবহার করে। আর যদি আপনি বান্ডেল করা ডিপেন্ডেন্সি ব্যবহার না করেন, তাহলে আপনার নির্দিষ্ট করা Node.js রানটাইমে অন্তর্ভুক্ত NPM-এর সংস্করণটি ব্যবহৃত হয়।

বান্ডেল নির্ভরতার উদাহরণ

হোস্টেড টার্গেট-এর সাথে বান্ডলড ডিপেন্ডেন্সি ফিচারটির একটি উদাহরণের জন্য, “কাস্টম মডিউল ব্যবহার করে হোস্টেড ফাংশনসহ একটি নোড.জেএস অ্যাপ্লিকেশন কীভাবে তৈরি করবেন” দেখুন।

একটি স্বাস্থ্য পরীক্ষা এন্ডপয়েন্ট যোগ করুন

আপনার Node.js অ্যাপ্লিকেশনের জন্য একটি হেলথ চেক এন্ডপয়েন্ট প্রয়োগ করার বিকল্প রয়েছে। আপনার Node.js অ্যাপ্লিকেশনটি চালু হলে, অ্যাপ্লিকেশনটি কন্টেইনারের মধ্যে চালু আছে কিনা তা পরীক্ষা করার জন্য Apigee এই এন্ডপয়েন্টটি ব্যবহার করে।

ডিফল্টরূপে, Apigee যে এন্ডপয়েন্টটি আশা করে তা হলো /health । আপনি HOSTED_TARGET_HEALTH_CHECK_PATH নামের একটি এনভায়রনমেন্ট ভেরিয়েবলে এন্ডপয়েন্টটি উল্লেখ করে ডিফল্ট এন্ডপয়েন্টটি পরিবর্তন করতে পারেন। আপনি অ্যাপ্লিকেশনটির ম্যানিফেস্ট ফাইলে এই ভেরিয়েবলটি সেট করতে পারেন। বিস্তারিত জানতে ম্যানিফেস্ট ফাইলের উপাদানসমূহ দেখুন।

হেলথ চেক এন্ডপয়েন্ট প্রয়োগ করা আবশ্যক নয়। তবে, যদি আপনি একটি হেলথ চেক এন্ডপয়েন্ট প্রয়োগ করেন, তাহলে নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:

  • Apigee যখন এন্ডপয়েন্টে পৌঁছায়, তখন যদি আপনার অ্যাপ্লিকেশনটি বন্ধ হয়ে যায়, তাহলে অ্যাপ্লিকেশনটি প্রত্যাশিতভাবে চালু হবে না।
  • আপনার এন্ডপয়েন্ট যদি 404 Not Found HTTP স্ট্যাটাস রিটার্ন করে, তাতে কোনো সমস্যা নেই। /health অথবা HOSTED_TARGET_HEALTH_CHECK_PATH শুধুমাত্র আপনার অ্যাপ্লিকেশনটি চলছে কিনা তা পরীক্ষা করার জন্য ব্যবহৃত হয়। প্রকৃত রেসপন্সটি উপেক্ষা করা হয়।

NPM ক্যাশের অবস্থান পরিবর্তন করুন

Node.js-এর নতুন সংস্করণগুলো NPM-এর এমন একটি সংস্করণ ব্যবহার করে যা NPM ক্যাশের জন্য /root/.npm ব্যবহার করে। এই অবস্থানটি হোস্টেড টার্গেটের জন্য একটি সমস্যা তৈরি করে, কারণ এই ডিরেক্টরিটি রিড-অনলি (read-only) হয়। এর কারণ হলো, হোস্টেড টার্গেট রানটাইম একটি tmpfs ফাইলসিস্টেম ব্যবহার করে যেখানে শুধুমাত্র /tmp রাইটেবল (writable)। এই সমস্যাটি সমাধান করার জন্য, আপনি আপনার অ্যাপ্লিকেশনের 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 ব্যবহার করার চেষ্টা করে, যা লেখার অযোগ্য (unwritable) এবং এর ফলে আপনার হোস্টেড টার্গেট চালু হতে ব্যর্থ হয়। যদিও আগের টাস্কটি এই সমস্যাটির সমাধান করবে, আরেকটি বিকল্প হলো 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 শুধু একটি উদাহরণ।