מדריך Node.js: מעבר לסביבת פרודקשן

במאמר הקודם ראינו איך אני משתמש במודולים חיצוניים כדי ליצור אפליקציה. במקרה הזה אפליקציה שמשתמשת ב-Web Socket כדי להדפיס את השעה. אחרי שטרחנו וכתבנו, נשאלת השאלה – איך לפרסם?

כמעט כל שירות משמעותי היום תומך ב-Node.js. מ-Azure של מיקרוסופט ועד שרתי הענן של מיקרוסופט. ישנם גם שירותי shared (לא הרבה) שמאפשרים אחסון אפליקציות Node.js. אחד משירותי הענן היותר פופולריים הוא הרוקו (Heroku) שמאפשר גם אחסון אפליקציות עם נתוני תעבורה נמוכים בחינם.

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

באופן עקרוני, אנחנו צריכים להתקין את Heroku toolbelt. אפשר להתקין אותו מכל סביבה שהיא: חלונות, לינוקס או מק. אחרי ההתקנה, כל הפקודות שלו ניתנות להרצה מהקונסולה או מה-cmd אם אתם בחלונות. אחרי שהתקנו, כל מה שצריך לעשות זה heroku login. ממש לפי ההוראות:


$ heroku login
Enter your Heroku credentials.
Email: XXX@XXXXXXX.com
Password (typing will be hidden): 
Your Heroku account does not have a public ssh key uploaded.
Could not find an existing public key at ~/.ssh/id_rsa.pub
Would you like to generate one? [Yn] Y
Generating new SSH public key.
Uploading SSH public key /home/ran/.ssh/id_rsa.pub... done
Authentication successful.
$ heroku keys
=== XXX@XXXXXXX.com Keys
ssh-rsa AAAAB3NzaC...8fzCB2t0S9 ran@ran-Inspiron-1525

עכשיו הכל מוכן. באופן עקרוני heroku עובדת עם git כאשר אנו דוחפים את הקוד שלנו ל heroku master כאשר אנו רוצים לעדכן את הגרסה.
הדבר הראשון שאנח עושים זה ללכת לתיקיה שיש בה את המוצר שלנו. לצורך העניין זו התיקיה example-nodejs-clock-heb. אפשר להוריד אותה מ-GitHub. מיד אחרי שנכנסנו אליה, אנו נכתוב
heroku create

ואז נוסיף את כל הקבצים _אם צריך) ל-git באמצעות git add ו-git commit. מי שלא יודע מה זה git, מומלץ לו להשקיע מספר דקות בלמידה של זה.

לפני שאנחנו עושים push, יש כמה דברים שצריך לעשות. ראשית אנו צריכים ליצור package.json. מדובר בקובץ שמכיל מידע על האפליקציה שלנו. איך יוצרים? עם npm init. פשוט מקלידים בתיקיה של האפליקציה ועוקבים אחר ההוראות:


$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (example-nodejs-clock-heb) 
version: (0.0.0) 1.0.0
description: This is an example application for socket.io.
entry point: (app.js) 
test command: nodejs app.js
git repository: (https://github.com/barzik/example-nodejs-clock-heb.git) 
keywords: clock example socket.io
author: Ran Bar-Zik
license: (BSD-2-Clause) 
About to write to /var/www/html/example-nodejs-clock-heb/package.json:

{
  "name": "example-nodejs-clock-heb",
  "version": "1.0.0",
  "description": "This is an example application for socket.io.",
  "main": "app.js",
  "scripts": {
    "test": "nodejs app.js"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/barzik/example-nodejs-clock-heb.git"
  },
  "keywords": [
    "clock",
    "example",
    "socket.io"
  ],
  "author": "Ran Bar-Zik",
  "license": "BSD-2-Clause",
  "bugs": {
    "url": "https://github.com/barzik/example-nodejs-clock-heb/issues"
  }
}


Is this ok? (yes) yes
</pkg>

מאוד מאוד חשוב להוסיף לקובץ הזה את המודולים שאנו צריכים. dependencies הם נקראים בשפת Node.js. אם אני צריך את socket.io, זה מה שאני אוסיף.


  "dependencies": {
      "socket.io": "*"
  },

הדבר הבא שאני אוסיף הוא קובץ שכולל את השורה שאותה אני צריך לכתוב בשורת הקונסולה על מנת להפעיל את האפליקציה. עד עכשיו כתבנו לתוך קובץ js ועל מנת להפעיל אותו כתבנו nodejs app.js, אם app.js היה שם הקובץ שלנו. עכשיו אנחנו צריכים “לומר” ל-heroku איך להפעיל את האפליקציה שלנו. הקובץ הזה נקרא Procfile והוא כולל את השורה הבאה:


web: node app.js

בגדול? זהו. אפשר לעשות את ה-push heroku master, אבל לפעמים יש גם שינויים בקוד האפליקציה עצמה שצריך לבצע:

כאשר אנו מפעילים את השרת בסביבת הענן, אנחנו לא יכולים לקבוע את הפורט או להניח שמדובר יהיה בפורט 80 או פורט 3000, יש לנו את ה-process.env שמכיל כמה משתנים חשובים. החשוב שבהם הוא ה-PORT. איך זה עובד? ככה:


var port = process.env.PORT || 3000;

app.listen(port); 

לעומת:


app.listen(3000); 

לא כזה נורא, נכון? עושים push. אחרי שעושים push צריך לעשות את ה-scaling. כיוון שזה חשבון חינם אנו נסתפק בשורה הבאה


heroku ps:scale web=1

אם הכל תקין, נכתוב heroku open על מנת שדפדפן ברירת המחדל יפתח על האפליקציה. אם משהו משתבש (והוא משתבש במצבים של not hello world application) אז לא צריך להכנס ללחץ. כדי לראות את הלוגים בזמן אמת צריך להקליד:


heroku logs --tail

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

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

במדריך הבא אנו נלמד ליצור מודול.

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂
למאמר הקודם בסדרת המדריכים על Node.js
למאמר הבא בסדרת המדריכים על Node.js

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (3 הצבעות, ממוצע: 5.00 מתוך 5)

תגיות: פורסם בקטגוריה: Node.js

יאללה, שתפו :)

אל תשארו מאחור! יש עוד מה ללמוד!

כתיבת תגובה

האימייל לא יוצג באתר.

רישום