מדריכי יעדים מתארחים

אתם מציגים את מסמכי התיעוד של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

במדריכים הבאים מוסבר איך לפרוס אפליקציות של Node.js ב-Edge באמצעות Hosted Targets, סביבת זמן ריצה מקורית של Node.js שמתארחת ב-Apigee.

במדריכים מוסבר איך לבצע את המשימות הבאות:

  • פריסת אפליקציית Node.js ליעדים מתארחים באמצעות ממשק המשתמש של Edge.
  • פריסת אפליקציית Node.js ביעדים מתארחים ממכונת הפיתוח המקומית.
  • העברת שרת proxy קיים עם הטמעת יעד מסורתית של Node.js של Edge למטרות מתארחות.

פריסת אפליקציית Node.js למטרות מתארחות באמצעות ממשק המשתמש של Edge

במדריך הזה תלמדו לפרוס אפליקציה פשוטה ב-Node.js למטרות מתארחות באמצעות ממשק המשתמש של Edge. בסיום המדריך תוכלו להבין את המבנה הבסיסי והתוכן של שרת proxy של Hosted Targets, ואיך לגשת לקובצי יומן של פריסה ושל build.

כניסה לחשבון

  1. נכנסים לכתובת: apigee.com/edge
  2. מזינים את פרטי הכניסה ל-Apigee כדי להיכנס לחשבון.

יצירת שרת proxy חדש

  1. בתפריט הניווט הצדדי, בוחרים באפשרות פיתוח > שרתים proxy ל-API.
  2. לוחצים על + שרת proxy.
  3. בדף Create Proxy (יצירת שרת proxy), בוחרים באפשרות Hosted Target (יעד מתארח).
  4. לוחצים על הבא.
  5. בשדה Proxy Name מזינים hello-hosted-targets.
  6. מוודאים שהאפשרות דוגמה "Hello World" נבחרה.
  7. לוחצים על הבא.
  8. בדף 'אבטחה', בוחרים באפשרות עבר (none) להרשאה.
  9. לוחצים על הבא.
  10. לוחצים על הבא.
  11. בדף ה-Build, מוודאים שסביבת הבדיקה נבחרה. שימו לב שסוג שרת ה-proxy הוא יעדים מתארחים.
  12. לוחצים על Build and Deploy. ייתכן שיחלפו כמה רגעים עד להשלמת הפריסה של שרת ה-proxy.
  13. אחרי הפריסה המוצלחת של שרת ה-proxy, לוחצים על View hello-hosted-targets proxy בתחתית הדף.
  14. קוראים לשרת ה-proxy של ה-API. הדרך הקלה ביותר לעשות זאת היא להיכנס לכרטיסייה Trace, להתחיל סשן של Trace וללחוץ על Send. הסטטוס 200 אמור להופיע עם התגובה הבאה:
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

בדיקת שרת ה-proxy

  1. בממשק המשתמש של Edge, לוחצים על הכרטיסייה Develop.
  2. בכלי הניווט, בוחרים באפשרות default (ברירת מחדל) בקטע Target Endpoints.
  3. בעורך הקוד, תוכלו לראות שיש רכיב צאצא ריק <HostedTarget/> מתחת לרכיב <TargetEndpoint>. חובה להוסיף את התג הריק הזה. הוא אומר ל-Edge שהיעד של שרת ה-proxy הוא אפליקציה שנפרסת בסביבת היעדים המתארחים.

  4. בכלי הניווט, שימו לב לתוכן שבקטע סקריפטים. קובצי האפליקציה Node.js רשומים בתווית מארח.

  5. בממשק המשתמש של Edge, בודקים את הקבצים שמפורטים בקטע hosted (מאוחסנים) בקטע Scripts (סקריפטים):
    • קובץ app.yaml מכיל פרטי תצורה. לדוגמה, אפשר להוסיף משתני סביבה שיהיו זמינים לאפליקציית Node.js בסביבת זמן הריצה. אין צורך לשנות את הקובץ עבור הדוגמה הזו.
    • הקובץ index.js הוא הקובץ הראשי של אפליקציית Node.js.
    • אם יש לאפליקציה יחסי תלות במודולים, הם חייבים להופיע בקובץ package.json.

הצגת קובצי היומן

קובצי יומן של אפליקציות יכולים להיות שימושיים לניפוי באגים בבעיות שמתרחשות במהלך שלב ה-build וגם במהלך זמן הריצה.

  1. בממשק המשתמש של Edge, לוחצים על הכרטיסייה Develop.
  2. כדי להציג את יומן ה-build, לוחצים על יומני build.
  3. כדי להציג את יומן הפריסה, לוחצים על יומני סביבת זמן הריצה.

    למידע נוסף, ראו גישה לקובצי יומן.

סיכום

  • פרסתם אפליקציית Node.js פשוטה בסביבת Hosted Targets ובדקתם אותה בממשק המשתמש של Edge.
  • למדתם ששרת proxy של יעדים מתארחים דורש תג ריק מיוחד בנקודת הקצה של היעד, שנקרא <HostedTarget/>.
  • למדתם שמערכת Edge טוענת עבורכם באופן אוטומטי את יחסי התלות של המודולים, ושצריך לציין את יחסי התלות בקובץ package.json.
  • למדתם גם איך לבדוק קובצי יומן של build ושל סביבת זמן ריצה.

פריסת Node.js מהמערכת ב-Edge

בקטע הזה מוסבר איך לפרוס אפליקציית Node.js עצמאית מהמערכת המקומית למטרות מתארחות באמצעות apigeetool. הכלי apigeetool מקבצ את אפליקציית Node.js לשרת proxy חדש של Hosted Targets ופורס אותו ב-Edge.

התקנת apigeetool

השימוש ב-apigeetool הוא הדרך המומלצת למפתחים לפרוס קוד של שרת proxy ב-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 ומעתיקים אליו את הקוד הזה. שימו לב שהמודול ה-Express רשום כתלות.
  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 מריץ התקנה של NPM כשאפליקציית Node.js פרוסה. הוא מקבל את יחסי התלות מ-package.json. הפעם היחידה שבה עליכם לספק node_Modules באופן מפורש היא אם יש לכם מודולים מותאמים אישית שלא זמינים דרך npm.

פריסה של שרת ה-proxy

  1. בטרמינל, לוחצים על cd לתיקיית השורש של אפליקציית Node.js.
  2. מריצים את apigeetool עם הפקודה deployhostedtarget:
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    כאשר -n הוא השם שרוצים לתת לשרת ה-proxy החדש. הוא חייב להיות ייחודי בארגון. התווים שמותר להשתמש בהם בשם מוגבלים ל-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.

בדיקת שרת ה-proxy

אפשר לבדוק את שרת ה-proxy באמצעות פקודה של cURL, באמצעות לקוח REST כמו Postman או בממשק המשתמש של Edge בכלי Trace. זוהי דוגמה לפקודת cURL.

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

אחזור יומני ה-Build

ביומני build מוצגים פלט שקשור לפריסה ולפיתוח של אפליקציית 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

אחזור יומני סביבת זמן הריצה

יומני סביבת זמן הריצה מציגים פלט שקשור לאפליקציה שפועלת. יומני סביבת זמן הריצה מוגדרים ברמת הסביבה ומחזירים יומנים של גרסת שרת ה-proxy שנפרסה כרגע. אפשר לעיין גם במאמר קובצי יומן.

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

הצגת שרת ה-proxy בממשק המשתמש של Edge

אחרי הפריסה, תוכלו לראות ולערוך את שרת ה-proxy בקטע API Proxies בממשק המשתמש של Edge.

העברת שרת proxy קיים של Node.js לשרת proxy של יעדים מתארחים

בקטע הזה מוסבר איך להעביר באופן ידני שרת proxy קיים ל-Edge API שמשתמש בהטמעת היעד המסורתית של Node.js למטרות מתארחות. מוסבר בו גם איך לפרוס את שרת ה-proxy אחרי שמבצעים את שלבי ההעברה.

שלבי ההעברה שומרים על המבנה, המדיניות, התהליכים ורכיבי ההגדרה האחרים של שרת ה-API. אפשר לבצע את ההעברה בארבעה שלבים, כפי שמתואר בהמשך, ולאחר מכן לפרוס את שרת ה-proxy שהוענק באמצעות apigeetool.

שלב 1: שינוי מבנה הקובץ של שרת ה-Proxy

כדי לשנות את מבנה הקבצים, שרת ה-API צריך להיות במערכת הקבצים המקומית. אם שרת ה-proxy נפרס ב-Edge, צריך להוריד אותו לפני שממשיכים. בתצורה המסורתית, 'חבילת' שרת ה-proxy של Edge שכוללת קוד Node.js פועלת לפי מבנה הקבצים הזה. קוד האפליקציה של Node.js ממוקם בספרייה resources/node:

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


ביעדים מתארחים, צריך למקם את ספריית השורש של אפליקציית Node.js בספרייה שנקראת resources/hosted. פשוט יוצרים ספרייה חדשה שנקראת resources/host ומעבירים אליה את התוכן של resources/node. לאחר מכן תוכלו למחוק את הספרייה resources/node.

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

שלב 2: מוסיפים את קובץ המניפסט

יוצרים קובץ מניפסט בשם app.yaml וממקמים אותו בספרייה apiproxy/resources/hosted.

בהמשך מופיע קובץ app.yaml לדוגמה. הוא מציין שזמן הריצה הוא Node.js (חובה). היא גם יוצרת משתנה סביבה בסביבת הביצוע (משתנה שאפליקציית Node.js יכולה לגשת אליו). משתנה הסביבה הוא אופציונלי והוא מוצג כאן רק כדוגמה. פרטים נוספים ודוגמאות זמינים במאמר קובץ המניפסט.

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


בדוגמה הבאה מוצג מבנה פרויקט של Node.js שנמצא במיקום הנכון בשרת proxy לפריסה של Hosted Targets:

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

שלב 3: מוודאים שיש קובץ package.json

בשרתי proxy רגילים של Edge Node.js, הערך package.json היה אופציונלי. עם זאת, ליעדים מתארחים צריך לספק אחד בספרייה apiproxy/resources/hosted. הקפידו לציין בקובץ הזה את כל יחסי התלות הנדרשים לאפליקציה.

שלב 4: משנים את נקודת הקצה כיעד של שרת ה-proxy

בשרת proxy מסורתי של Node.js, צריך להוסיף את התג <ScriptTarget> לקובץ של נקודת הקצה של היעד (בדרך כלל /apiproxy/targets/default.xml). ליעדים מתארחים, צריך להוסיף תג ריק בשם <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>
    

פריסה של שרת ה-proxy

עכשיו אפשר לפרוס את שרת ה-proxy באמצעות הפקודה apigeetool deployproxy.

  1. עוברים cd לספריית השורש של שרת ה-proxy: ‎/apiproxy
  2. משתמשים בפקודה הבאה כדי לפרוס את שרת ה-proxy:
  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.

בדיקת שרת ה-proxy

אפשר לבדוק את שרת ה-proxy באמצעות פקודה של cURL, באמצעות לקוח REST כמו Postman או בממשק המשתמש של Edge בכלי Trace. זוהי דוגמה לפקודת cURL:

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