وظایف Hosted Targets

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

غیرفعال کردن پروکسی Hosted Targets

وقتی یک پروکسی Edge که شامل یک برنامه Hosted Targets است را از حالت نصب خارج می‌کنید، برنامه Hosted Targets مرتبط از حالت نصب خارج می‌شود، اما تصویر برنامه اصلی حذف نمی‌شود. اگر پروکسی را دوباره نصب کنید، برنامه Hosted Targets دوباره نصب می‌شود.

حذف یک پروکسی Hosted Targets

پس از حذف یک پروکسی Hosted Targets، نمونه‌های زمان اجرای اصلی پس از مدتی متوقف می‌شوند. با این حال، کد برنامه همچنان باقی خواهد ماند.

دسترسی به فایل‌های لاگ

فایل‌های لاگ برای اشکال‌زدایی و عیب‌یابی مفید هستند. می‌توانید دو نوع فایل لاگ را برای استقرار Hosted Targets مشاهده کنید:

  • گزارش ساخت - خروجی مربوط به استقرار و ساخت یک برنامه Hosted Targets را به شما نشان می‌دهد.
  • گزارش زمان اجرا - خروجی مربوط به برنامه Hosted Targets در حال اجرا را به شما نشان می‌دهد. گزارش‌های زمان اجرا به محیط محدود می‌شوند و اطلاعات گزارش مربوط به نسخه پروکسی مستقر شده فعلی را نشان می‌دهند.

دسترسی به گزارش‌ها از رابط کاربری Edge

  1. به آدرس apigee.com/edge بروید
  2. اطلاعات ورود خود را وارد کنید و روی ورود کلیک کنید.
  3. در منوی ناوبری کناری، گزینه توسعه > پروکسی‌های API را انتخاب کنید.
  4. پروکسی که می‌خواهید لاگ‌های آن را مشاهده کنید، انتخاب کنید.
  5. روی برگه توسعه کلیک کنید.
  6. برای مشاهده گزارش ساخت، روی «گزارش‌های ساخت» کلیک کنید.
  7. برای مشاهده گزارش زمان اجرا، روی Runtime Logs کلیک کنید.

دسترسی به لاگ‌ها با API

همچنین می‌توانید از یک API Edge برای بازیابی گزارش‌های Hosted Targets استفاده کنید. برای جزئیات بیشتر، به Get Cached Node.js Logs مراجعه کنید.

استفاده از یک مخزن خصوصی npm

این بخش نحوه‌ی استقرار یک پروکسی Node.js در Hosted Targets را در مواردی که از یک مخزن NPM خصوصی در محیط توسعه‌ی خود استفاده می‌کنید، توضیح می‌دهد.

آنچه باید در مورد استفاده از یک مخزن خصوصی بدانید

وقتی یک برنامه Node.js را در Edge مستقر می‌کنید، تمام وابستگی‌های پروژه شما به عنوان بخشی از فرآیند استقرار، به طور خودکار وارد می‌شوند. اساساً، Hosted Targets هنگام استقرار، npm install را روی کد شما اجرا می‌کند. با این حال، اگر از یک مخزن NPM خصوصی در محیط توسعه خود استفاده می‌کنید، وابستگی‌های خصوصی را نمی‌توان در Cloud حل کرد. در این حالت، راه حل این است که هنگام استفاده از ابزار استقرار apigeetool از گزینه --bundled-dependencies استفاده کنید. همچنین به Deploy Node.js from your system to Edge مراجعه کنید.

وقتی از فلگ --bundled-dependencies در apigeetool استفاده می‌کنید، برنامه Node.js شما در Hosted Targets آپلود می‌شود و هر فایل محلی/خصوصی که در آرایه bundledDependencies در package.json لیست شده باشد، فشرده شده و همراه با بسته آپلود می‌شود.

اگرچه این یک وضعیت رایج نیست، اما توجه داشته باشید که اگر یک مخزن عمومی NPM را به صورت داخلی mirror کنید، در صورتی که بسته‌ی deployment شما شامل یک فایل .npmrc یا package-lock.json باشد که به mirror خصوصی شما اشاره می‌کند، deployment شما با شکست مواجه خواهد شد. در این صورت، حتماً .npmrc یا package-lock.json را از bundle پروکسی که قصد deploy آن را دارید، حذف کنید.

استقرار با یک مخزن خصوصی 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 دسترسی پیدا کنید.

    لبه

    برای دسترسی به صفحه پیکربندی Key Value Maps با استفاده از رابط کاربری Edge:

    1. وارد apigee.com/edge شوید.
    2. در نوار ناوبری سمت چپ، Admin > Environments > Key Value Maps را انتخاب کنید.

    لبه کلاسیک (ابر خصوصی)

    برای دسترسی به صفحه پیکربندی Key Value Maps با استفاده از رابط کاربری کلاسیک اج:

    1. وارد آدرس http:// ms-ip :9000 شوید، که در آن ms-ip آدرس IP یا نام DNS گره سرور مدیریت است.
    2. در نوار ناوبری بالا، APIها > پیکربندی محیط > نقشه‌های کلید-مقدار را انتخاب کنید.
  4. روی + نقشه ارزش کلیدی کلیک کنید.
  5. در پنجره‌ی New Key Value Map، یک نام وارد کنید و Encrypted را انتخاب کنید.
  6. روی افزودن کلیک کنید.
  7. توکن احراز هویتی که قبلاً پیدا کرده‌اید یا ایجاد کرده‌اید را به عنوان یک ورودی جدید در هر یک از KVMهایی که اخیراً ایجاد کرده‌اید، اضافه کنید.
  8. در فایل app.yaml خود، ورودی‌ای اضافه کنید که به KVM و کلید مرتبط با توکن احراز هویت npm اشاره کند. این ورودی باید چیزی شبیه به این باشد:
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    کجا:

    • ویژگی نام سطح بالا مربوط به نام متغیر محیطی است که ایجاد خواهد شد.
    • نامی که در زیر valueRef قرار دارد، مربوط به KVM ای است که قبلاً ایجاد کرده‌اید.
    • ویژگی key مربوط به کلیدی است که به توکن npm که به KVM اضافه کرده‌اید، نگاشت می‌شود.
  10. یک فایل .npmrc در همان دایرکتوری که فایل package.json شما قرار دارد، ایجاد کنید. این فایل باید شبیه به این باشد:
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    یا اگر از registry.npmjs.org استفاده نمی‌کنید، می‌توانید با اضافه کردن خطی مانند @myscope:registry=https://mycustomregistry.example.org دامنه را در فایل .npmrc تنظیم کنید. همچنین به مستندات npmrc مراجعه کنید.
  11. پروکسی Node.js خود را که شامل فایل .npmrc و فایل‌های app.yaml است، آپلود یا به‌روزرسانی کنید.
  12. مطمئن شوید که پروکسی جدید یا به‌روزرسانی‌شده‌ی شما با ماژول مخزن خصوصی مورد نظر مستقر شده و کار می‌کند.
  13. اگر پروکسی مستقر نشد، لاگ‌های ساخت را بررسی کنید تا ببینید آیا نصب ماژول خصوصی npm با شکست مواجه شده است یا خیر. در این صورت:
    1. در زیر تب develop، مطمئن شوید که فایل .npmrc وجود دارد.
    2. مطمئن شوید که توکن شما معتبر است (سعی کنید ماژول را به صورت محلی با توکن موجود در kvm نصب کنید).
    3. اگر از یک محدوده سفارشی استفاده می‌کنید، مطمئن شوید که تنظیم شده است.

مشخص کردن نسخه NPM برای وابستگی‌های بسته‌بندی‌شده

به طور پیش‌فرض، NPM نسخه ۴ برای نصب وابستگی‌های بسته‌بندی شده در محیط Hosted Targets استفاده می‌شود. با این حال، اگر می‌خواهید از نسخه NPM متفاوتی استفاده کنید، می‌توانید آن را در متغیر محیطی NPM_VERSION مشخص کنید. می‌توانید این متغیر را در فایل مانیفست برنامه تنظیم کنید. برای جزئیات بیشتر به عناصر فایل مانیفست مراجعه کنید.

اگر از وابستگی‌های بسته‌بندی‌شده استفاده کنید و NPM_VERSION مشخص نکنید، Hosted Targets به‌طور پیش‌فرض از NPM نسخه ۴ استفاده می‌کند. اگر از وابستگی‌های بسته‌بندی‌شده استفاده نکنید، نسخه‌ای از NPM که در زمان اجرای مشخص‌شده Node.js شما گنجانده شده است، استفاده می‌شود.

مثال وابستگی‌های بسته‌بندی‌شده

برای مثالی که ویژگی وابستگی‌های بسته‌بندی‌شده با Hosted Targets را نشان می‌دهد، به نحوه ایجاد یک برنامه Node.js با Hosted Functions با استفاده از ماژول‌های سفارشی مراجعه کنید.

یک نقطه پایانی بررسی سلامت اضافه کنید

شما می‌توانید یک نقطه پایانی برای بررسی سلامت برنامه Node.js خود پیاده‌سازی کنید. Apigee از این نقطه پایانی زمانی استفاده می‌کند که برنامه Node.js شما شروع به بررسی فعال بودن و اجرای برنامه در کانتینر می‌کند.

به طور پیش‌فرض، نقطه پایانی که Apigee انتظار دارد /health است. شما می‌توانید نقطه پایانی پیش‌فرض را با مشخص کردن نقطه پایانی در یک متغیر محیطی به نام HOSTED_TARGET_HEALTH_CHECK_PATH تغییر دهید. می‌توانید این متغیر را در فایل مانیفست برنامه تنظیم کنید. برای جزئیات بیشتر به عناصر فایل مانیفست مراجعه کنید.

پیاده‌سازی یک نقطه پایانی بررسی سلامت الزامی نیست. با این حال، اگر یک نقطه پایانی بررسی سلامت پیاده‌سازی می‌کنید، به موارد زیر توجه کنید:

  • اگر برنامه شما هنگام رسیدن Apigee به نقطه پایانی خارج شود، برنامه آنطور که انتظار می‌رود شروع به کار نخواهد کرد.
  • اگر نقطه پایانی شما وضعیت HTTP با کد ۴۰۴ Not Found را برگرداند، مشکلی نیست. /health یا HOSTED_TARGET_HEALTH_CHECK_PATH فقط برای بررسی اجرای برنامه شما استفاده می‌شوند. پاسخ واقعی نادیده گرفته می‌شود.

تغییر محل ذخیره سازی NPM

نسخه‌های جدیدتر Node.js از نسخه‌ای از NPM استفاده می‌کنند که از /root/.npm برای حافظه پنهان NPM استفاده می‌کند. این مکان برای Hosted Targets مشکل ایجاد می‌کند زیرا این مکان دایرکتوری فقط خواندنی است زیرا Hosted Target runtime از سیستم فایل tmpfs استفاده می‌کند که در آن فقط /tmp قابل نوشتن است. برای حل این مشکل، می‌توانید متغیر محیطی npm_config_cache را در فایل app.yaml برنامه خود (فایل مانیفست) روی دایرکتوری درون /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

به طور پیش‌فرض، Hosted Targets npm start برای اجرای برنامه Hosted Target شما استفاده می‌کند. اما در کار قبلی، در مورد مشکلی که با استفاده از NPM وجود دارد صحبت کردیم، زیرا نسخه‌های جدیدتر سعی می‌کنند از /root/.npm برای حافظه پنهان NPM استفاده کنند که غیرقابل نوشتن است و منجر به عدم شروع Hosted Target شما می‌شود. در حالی که کار قبلی این مشکل را حل می‌کند، گزینه دیگر اجرای برنامه شما بدون NPM است. برای انجام این کار، می‌توانید از command و مقادیر args در فایل app.yaml برنامه خود (فایل مانیفست) استفاده کنید تا Hosted Target خود را مستقیماً با استفاده 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 فقط یک مثال است.