آموزش های Hosted Targets

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

آموزش‌های زیر نحوه‌ی استقرار برنامه‌های Node.js در Edge با استفاده از Hosted Targets ، یک محیط اجرایی بومی Node.js که توسط Apigee میزبانی می‌شود، را توضیح می‌دهند.

این آموزش‌ها وظایف زیر را طی می‌کنند:

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

با استفاده از رابط کاربری Edge، یک برنامه Node.js را روی Hosted Targets مستقر کنید.

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

ورود

  1. به آدرس apigee.com/edge بروید
  2. برای ورود، اطلاعات ورود Apigee خود را وارد کنید.

ایجاد پروکسی جدید

  1. در منوی ناوبری کناری، گزینه‌ی توسعه > پروکسی‌های API را انتخاب کنید.
  2. روی + پروکسی کلیک کنید.
  3. در صفحه ایجاد پروکسی، Hosted Target را انتخاب کنید.
  4. روی بعدی کلیک کنید.
  5. در فیلد نام پروکسی، hello-hosted-targets را وارد کنید.
  6. مطمئن شوید که نمونه "Hello World" انتخاب شده است.
  7. روی بعدی کلیک کنید.
  8. در صفحه امنیت، برای مجوز، گزینه عبور (بدون مجوز) را انتخاب کنید.
  9. روی بعدی کلیک کنید.
  10. روی بعدی کلیک کنید.
  11. در صفحه ساخت، مطمئن شوید که محیط آزمایش انتخاب شده است. توجه داشته باشید که نوع پروکسی (Proxy Type) روی Hosted Targets تنظیم شده باشد.
  12. روی «ساخت و استقرار» کلیک کنید. ممکن است چند لحظه طول بکشد تا استقرار پروکسی تکمیل شود.
  13. پس از اینکه پروکسی با موفقیت مستقر شد، روی View hello-hosted-targets proxy در پایین صفحه کلیک کنید.
  14. پروکسی API را فراخوانی کنید. ساده‌ترین راه برای انجام این کار، رفتن به تب Trace ، شروع یک جلسه Trace و کلیک بر روی Send است. شما باید یک وضعیت ۲۰۰ با پاسخ زیر دریافت کنید:
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

پروکسی را بررسی کنید

  1. در رابط کاربری Edge، روی تب Develop کلیک کنید.
  2. در ناوبر، در قسمت Target Endpoints، گزینه پیش‌فرض را انتخاب کنید.
  3. در ویرایشگر کد، توجه کنید که یک عنصر فرزند خالی <HostedTarget/> زیر عنصر <TargetEndpoint> وجود دارد. این تگ خالی الزامی است. این به Edge می‌گوید که هدف پروکسی، برنامه‌ای است که در محیط Hosted Targets مستقر شده است.

  4. در ناوبر، به محتویات زیر بخش اسکریپت‌ها توجه کنید. فایل‌های برنامه Node.js زیر برچسب میزبان فهرست شده‌اند.

  5. در رابط کاربری Edge، فایل‌های فهرست‌شده در زیر بخش hosted in the Scripts را بررسی کنید:
    • فایل app.yaml حاوی اطلاعات پیکربندی است. برای مثال، می‌توانید متغیرهای محیطی را که در زمان اجرا برای برنامه Node.js در دسترس خواهند بود، اضافه کنید. برای این مثال نیازی به تغییر این فایل ندارید.
    • فایل index.js فایل اصلی برنامه Node.js است.
    • اگر برنامه شما وابستگی به ماژول دارد، باید در package.json فهرست شده باشد.

مشاهده فایل‌های لاگ

فایل‌های لاگ برنامه می‌توانند برای اشکال‌زدایی مشکلاتی که در طول مرحله ساخت و همچنین در زمان اجرا رخ می‌دهند، مفید باشند.

  1. در رابط کاربری Edge، روی تب Develop کلیک کنید.
  2. برای مشاهده گزارش ساخت، روی «گزارش‌های ساخت» کلیک کنید.
  3. برای مشاهده گزارش استقرار، روی Runtime Logs کلیک کنید.

    همچنین به دسترسی به فایل‌های لاگ مراجعه کنید.

خلاصه

  • شما یک برنامه ساده Node.js را در محیط Hosted Targets مستقر کردید و آن را در رابط کاربری Edge آزمایش کردید.
  • شما آموختید که یک پروکسی Hosted Targets به یک تگ خالی ویژه در Target Endpoint به نام <HostedTarget/> نیاز دارد.
  • شما یاد گرفتید که Edge وابستگی‌های ماژول را به طور خودکار برای شما بارگذاری می‌کند، و این وابستگی‌ها باید در فایل package.json فهرست شوند.
  • همچنین یاد گرفتید که چگونه فایل‌های لاگ ساخت و زمان اجرا را بررسی کنید.

Node.js را از سیستم خود به Edge مستقر کنید

این بخش نحوه‌ی استقرار یک برنامه‌ی مستقل Node.js از سیستم محلی شما به Hosted Targets با استفاده از apigeetool را توضیح می‌دهد. ابزار apigeetool برنامه‌ی Node.js را در یک پروکسی Hosted Targets جدید قرار می‌دهد و آن را در Edge مستقر می‌کند.

نصب apigeetool

استفاده از apigeetool روش پیشنهادی برای توسعه‌دهندگان جهت استقرار کد پروکسی در Edge است. برای نصب apigeetool، دستور NPM زیر را اجرا کنید:

npm install -g apigeetool

برنامه Node.js را ایجاد کنید

برای آسان‌تر کردن کارها، کد یک برنامه ساده Node.js در اختیار شما قرار گرفته است.

  1. یک دایرکتوری برای برنامه Node.js ایجاد کنید. نام دایرکتوری را node-hosted-express بگذارید.
  2. با استفاده از دستور cd به دایرکتوری جدید بروید.
  3. یک فایل به نام index.js ایجاد کنید و این کد را در آن کپی کنید.
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
  5. فایلی به نام package.json ایجاد کنید و این کد را در آن کپی کنید. توجه داشته باشید که ماژول اکسپرس به عنوان یک وابستگی فهرست شده است.
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
  7. یک فایل به نام app.yaml ایجاد کنید و این کد را در آن کپی کنید:
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
  9. مطمئن شوید که دایرکتوری شما به این شکل است:
    ls
    app.yaml index.js package.json
    

بررسی ساختار دایرکتوری مورد نیاز برای کد برنامه

برنامه Node.js شما باید ساختار مشابهی با یک برنامه استاندارد Node.js داشته باشد. با این حال، قبل از استقرار با apigeetool در Edge، مطمئن شوید که این الزامات را رعایت کرده‌اید:

  • فایل مانیفست app.yaml مورد نیاز است و باید در دایرکتوری ریشه برنامه شما وجود داشته باشد. برای کسب اطلاعات بیشتر در مورد این فایل، به فایل مانیفست مراجعه کنید.
  • یک فایل package.json مورد نیاز است. این فایل باید تمام وابستگی‌های مورد نیاز برنامه شما را فهرست کند.
  • پوشه node_modules لازم نیست . Edge هنگام استقرار برنامه Node.js، دستور npm install را برای شما اجرا می‌کند. این ابزار وابستگی‌ها را از package.json دریافت می‌کند. تنها زمانی که نیاز دارید node_modules را به طور صریح ارائه دهید، زمانی است که ماژول‌های سفارشی داشته باشید که از طریق npm در دسترس نباشند.

استقرار پروکسی

  1. در ترمینال، با دستور cd به دایرکتوری ریشه برنامه Node.js خود بروید.
  2. apigeetool را با دستور deployhostedtarget اجرا کنید:
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    که در آن -n نامی است که می‌خواهید به پروکسی جدید بدهید. این نام باید در سازمان منحصر به فرد باشد. کاراکترهایی که مجاز به استفاده از آنها در نام هستید به موارد زیر محدود می‌شوند: a-z0-9._\-$%

    برای مثال:

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    برای اطلاعات بیشتر در مورد استفاده از apigeetool به آدرس https://github.com/apigee/apigeetool-node مراجعه کنید.

آزمایش پروکسی

شما می‌توانید پروکسی را با دستور cURL، با یک کلاینت REST مانند Postman یا در رابط کاربری Edge در ابزار Trace آزمایش کنید. در اینجا یک مثال از دستور cURL آورده شده است.

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

دریافت گزارش‌های ساخت

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

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

برای مثال:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

دریافت لاگ‌های زمان اجرا

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

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

برای مثال:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

مشاهده پروکسی در رابط کاربری Edge

پس از استقرار موفقیت‌آمیز، می‌توانید پروکسی خود را در بخش API Proxies در رابط کاربری Edge مشاهده و ویرایش کنید.

مهاجرت یک پروکسی Node.js موجود به یک پروکسی Hosted Targets

این بخش نحوه‌ی انتقال دستی یک پروکسی Edge API موجود که از پیاده‌سازی سنتی هدف Node.js استفاده می‌کند را به Hosted Targets توضیح می‌دهد. همچنین نحوه‌ی استقرار پروکسی پس از انجام مراحل انتقال را توضیح می‌دهد.

مراحل مهاجرت، ساختار پروکسی API، سیاست‌ها، جریان‌ها و سایر عناصر پیکربندی را حفظ می‌کنند. می‌توانید مهاجرت را در چهار مرحله ، همانطور که در زیر آمده است، انجام دهید و سپس پروکسی منتقل شده را با apigeetool مستقر کنید.

مرحله ۱: تنظیم ساختار فایل پروکسی

برای تنظیم ساختار فایل، پروکسی API باید روی سیستم فایل محلی شما باشد. اگر پروکسی روی Edge مستقر شده است، قبل از ادامه باید آن را دانلود کنید . در پیکربندی سنتی، و "بسته" پروکسی Edge که شامل کد Node.js است، از این ساختار فایل پیروی می‌کند. کد برنامه Node.js در دایرکتوری resources/node قرار دارد:

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


برای Hosted Targets، باید دایرکتوری ریشه برنامه Node.js خود را در دایرکتوری به نام resources/hosted قرار دهید. کافیست یک دایرکتوری جدید به نام resources/hosted ایجاد کنید و محتویات resources/node را به آن منتقل کنید. سپس می‌توانید دایرکتوری resources/node را حذف کنید.

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

مرحله ۲: اضافه کردن فایل مانیفست

یک فایل مانیفست به نام app.yaml ایجاد کنید و آن را در دایرکتوری apiproxy/resources/hosted قرار دهید.

در ادامه یک نمونه فایل app.yaml آمده است. این فایل مشخص می‌کند که زمان اجرا Node.js است (الزامی). همچنین یک متغیر محیطی در محیط اجرا ایجاد می‌کند (متغیری که می‌تواند توسط برنامه Node.js قابل دسترسی باشد). متغیر محیطی اختیاری است و فقط به عنوان مثال در اینجا نشان داده شده است. برای جزئیات و مثال‌های بیشتر، به فایل manifest مراجعه کنید.

runtime: node
  env:
    - name: NODE_ENV
      value: production


مثال زیر ساختار پروژه Node.js را نشان می‌دهد که در مکان صحیح در پروکسی برای استقرار Hosted Targets قرار دارد:

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

مرحله ۳: مطمئن شوید که فایل package.json دارید

در پروکسی‌های سنتی Edge Node.js، فایل package.json اختیاری بود. با این حال، برای Hosted Targets، باید یکی از آنها را در دایرکتوری apiproxy/resources/hosted قرار دهید. حتماً هرگونه وابستگی مورد نیاز برای برنامه خود را در این فایل مشخص کنید.

مرحله ۴: نقطه پایانی هدف پروکسی را تغییر دهید

یک پروکسی سنتی Node.js مستلزم آن است که یک تگ به نام <ScriptTarget> در فایل endpoint هدف (معمولاً /apiproxy/targets/default.xml ) وجود داشته باشد. برای Hosted Targets، باید یک تگ خالی به نام <HostedTarget/> اضافه کنید. اگر یک تگ ScriptTarget در فایل وجود دارد، می‌توانید به سادگی آن را حذف کنید. به عنوان مثال:

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

استقرار پروکسی

اکنون می‌توانید پروکسی را با استفاده از دستور apigeetool deployproxy مستقر کنید.

  1. با دستور cd به دایرکتوری ریشه پروکسی خود بروید: /apiproxy
  2. برای نصب پروکسی از این دستور استفاده کنید:
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .

    برای مثال:

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

برای اطلاعات بیشتر در مورد استفاده از apigeetool به آدرس https://github.com/apigee/apigeetool-node/blob/master/README.md مراجعه کنید.

آزمایش پروکسی

شما می‌توانید پروکسی را با دستور cURL، با یک کلاینت REST مانند Postman یا در رابط کاربری Edge در ابزار Trace آزمایش کنید. در اینجا یک مثال از دستور cURL آورده شده است:

curl http://myorg-test.apigee.net/hello-world
Hello,World!