אתם מציגים את מסמכי התיעוד של 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.
כניסה לחשבון
- נכנסים לכתובת: apigee.com/edge
- מזינים את פרטי הכניסה ל-Apigee כדי להיכנס לחשבון.
יצירת שרת proxy חדש
- בתפריט הניווט הצדדי, בוחרים באפשרות פיתוח > שרתים proxy ל-API.
- לוחצים על + שרת proxy.
- בדף Create Proxy (יצירת שרת proxy), בוחרים באפשרות Hosted Target (יעד מתארח).
- לוחצים על הבא.
- בשדה Proxy Name מזינים
hello-hosted-targets
. - מוודאים שהאפשרות דוגמה "Hello World" נבחרה.
- לוחצים על הבא.
- בדף 'אבטחה', בוחרים באפשרות עבר (none) להרשאה.
- לוחצים על הבא.
- לוחצים על הבא.
- בדף ה-Build, מוודאים שסביבת הבדיקה נבחרה. שימו לב שסוג שרת ה-proxy הוא יעדים מתארחים.
- לוחצים על Build and Deploy. ייתכן שיחלפו כמה רגעים עד להשלמת הפריסה של שרת ה-proxy.
- אחרי הפריסה המוצלחת של שרת ה-proxy, לוחצים על View hello-hosted-targets proxy בתחתית הדף.
- קוראים לשרת ה-proxy של ה-API. הדרך הקלה ביותר לעשות זאת היא להיכנס לכרטיסייה Trace, להתחיל סשן של Trace וללחוץ על Send. הסטטוס 200 אמור להופיע עם התגובה הבאה:
{"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}
בדיקת שרת ה-proxy
- בממשק המשתמש של Edge, לוחצים על הכרטיסייה Develop.
- בכלי הניווט, בוחרים באפשרות default (ברירת מחדל) בקטע Target Endpoints.
- בעורך הקוד, תוכלו לראות שיש רכיב צאצא ריק
<HostedTarget/>
מתחת לרכיב<TargetEndpoint>
. חובה להוסיף את התג הריק הזה. הוא אומר ל-Edge שהיעד של שרת ה-proxy הוא אפליקציה שנפרסת בסביבת היעדים המתארחים. - בכלי הניווט, שימו לב לתוכן שבקטע סקריפטים. קובצי האפליקציה Node.js רשומים בתווית מארח.
- בממשק המשתמש של Edge, בודקים את הקבצים שמפורטים בקטע hosted (מאוחסנים) בקטע Scripts (סקריפטים):
- קובץ app.yaml מכיל פרטי תצורה. לדוגמה, אפשר להוסיף משתני סביבה שיהיו זמינים לאפליקציית Node.js בסביבת זמן הריצה. אין צורך לשנות את הקובץ עבור הדוגמה הזו.
- הקובץ index.js הוא הקובץ הראשי של אפליקציית Node.js.
- אם יש לאפליקציה יחסי תלות במודולים, הם חייבים להופיע בקובץ package.json.
הצגת קובצי היומן
קובצי יומן של אפליקציות יכולים להיות שימושיים לניפוי באגים בבעיות שמתרחשות במהלך שלב ה-build וגם במהלך זמן הריצה.
- בממשק המשתמש של Edge, לוחצים על הכרטיסייה Develop.
- כדי להציג את יומן ה-build, לוחצים על יומני build.
- כדי להציג את יומן הפריסה, לוחצים על יומני סביבת זמן הריצה.
למידע נוסף, ראו גישה לקובצי יומן.
סיכום
- פרסתם אפליקציית 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 פשוטה.
- יוצרים ספרייה לאפליקציית Node.js. קוראים לספרייה node-hosted-express.
- עוברים לספרייה החדשה באמצעות cd.
- יוצרים קובץ בשם index.js ומעתיקים אליו את הקוד.
- יוצרים קובץ בשם package.json ומעתיקים אליו את הקוד הזה. שימו לב שהמודול ה-Express רשום כתלות.
- יוצרים קובץ בשם app.yaml ומעתיקים אליו את הקוד הבא:
- מוודאים שהספרייה נראית כך:
ls app.yaml index.js package.json
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) })
{ "name": "hello-world", "version": "1.0.0", "main": "index.js", "scripts": { "start": "node index.js --use_strict" }, "author": "", "license": "", "dependencies": { "express": "^4.16.0" } }
runtime: node runtimeVersion: 8 application: my-express-app env: - name: NODE_ENV value: production - name: LOG_LEVEL value: 3
בדיקה של מבנה הספריות הנדרש לקוד האפליקציה
לאפליקציית Node.js צריך להיות אותו מבנה של אפליקציית Node.js רגילה. עם זאת, חשוב לוודא שפעלת לפי הדרישות הבאות לפני הפריסה באמצעות apigeetool
ב-Edge:
- קובץ המניפסט app.yaml נדרש וצריך להופיע בתיקיית השורש של האפליקציה. מידע נוסף על הקובץ הזה זמין במאמר קובץ מניפסט.
- נדרש קובץ package.json. האפליקציה צריכה לכלול את כל יחסי התלות שדרושים לאפליקציה.
- אין צורך בתיקייה node_modules. Edge מריץ התקנה של NPM כשאפליקציית Node.js פרוסה. הוא מקבל את יחסי התלות מ-package.json. הפעם היחידה שבה עליכם לספק node_Modules באופן מפורש היא אם יש לכם מודולים מותאמים אישית שלא זמינים דרך npm.
פריסה של שרת ה-proxy
- בטרמינל, לוחצים על cd לתיקיית השורש של אפליקציית Node.js.
- מריצים את apigeetool עם הפקודה deployhostedtarget:
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
.
- עוברים cd לספריית השורש של שרת ה-proxy: /apiproxy
- משתמשים בפקודה הבאה כדי לפרוס את שרת ה-proxy:
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!