עזרה | הפעלת אתר nodejs על השרת
-
העליתי אתר שעשיתי בnodejs ואני רוצה שהשרת יריץ לי את הקובץ app.js ויפעיל לי את האתר
אבל משום מה כל פעם שאני יוצא מהטרמינל הוא מפסיק לעבוד
זה שרת vps של קונטבו
מישהו יודע איך הוא ימשיך לרוץ ? -
@איציק-דייטש הוא לא 'מפסיק לעבוד' הוא פשוט מנוטרל (terminated) בגלל שהוא צאצא של התהליך הנוכחי של הטרמינל שפתחת - שכאשר התהליך הזה נסגר - הוא סוגר את כל התהליכים הצאצאים שלו.
לכן מה שאתה צריך לעשות זה להריץ את זה בלי תלות בתהליך של טרמינל כזה או אחר.
יש כל מיני אפשרויות, החל מ-disown
שזה מנתק את ההורות של התהליך ההורה של התהליך - על התהליך (בקיצור מגרש אותו מהבית) והוא לא יהיה צאצא של הטרמינל. ומשכך הוא גם לא ינוטרל כשהטרמינל נסגר. גוגל - disown.
אפשר גם עםnohup
, (שעד כמה שאני זוכר הוא עובד כך שהוא שולח סיגנל של SIGHUP לתהליך - ובזה הוא מנתק אותו מהתהליך ההורה) זה דיי דומה.יותר נכון יהיה להכין לזה סרוויס service שיריץ את נוד בצורה נכונה, ותוכל להפעיל / לסגור / לאתחל את הסרוויס כרצונך. סרוויס, כמובן, לא תלוי בטרמינל או מה שקרא לו לרוץ. הוא רץ בפני עצמו - כצאצא של ה-systemd.
איך להכין סרוויס לתהליך של נוד בצורה פשוטה -
@איציק-דייטש התכוונת לשרת ווינדוז או לינוקס? והאם פתרת את הבעיה?
-
@אליעזר_הגדול אני עדיין צריך לקרוא את מה שהוא הביא לי למעלה
יש לך מה להציע? -
@איציק-דייטש אני מסתפק לפי התגובה הקודמת בפוסט אחר אם אתה מקנטר או באמת שואל, ובלי קשר עוד לא ענית איזו מערכת הפעלה.
-
@אליעזר_הגדול אובונטו
-
@איציק-דייטש תקרא את הצעד השלישי במדריך הזה:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-18-04
בגדול אתה חייב לייצר סרוויס כדי שNODE לא יהיה תלוי במשתמש שלך אלא יהיה בפני עצמו. -
@אליעזר_הגדול המדריך הזה מתאים גם לאובונטו 20.04 נכון?
-
@איציק-דייטש https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-20-04
באתר הזה שיש הדרכה היא תואמת להכל -
@a0533057932 לפי המדריך פה
הוא אומר -g כדי להתקין גלובלי
מותר לי להוריד את זה כדי שיותקן רק על האפליקציה הנוכחית, נכון?
עשיתי ככה (בלי -g)
והפקודה הזאת לא עובדת
זה הפלט
-
@איציק-דייטש אמר בעזרה | הפעלת אתר nodejs על השרת:
@a0533057932 לפי המדריך פה
הוא אומר -g כדי להתקין גלובלי
מותר לי להוריד את זה כדי שיותקן רק על האפליקציה הנוכחית, נכון?
עשיתי ככה (בלי -g)
והפקודה הזאת לא עובדת
זה הפלט
-
@איציק-דייטש לא. אם אתה מתקין אותו ספציפית לפרוייקט, אתה לא יכול להפעיל אותו ככה, אלא עם הנתיב המלא שלו בתיקייה node_modules. משהו כזה:
./node_modules/path/to/pm2 start hello.js
אם אתה בכל זאת מתעקש לא להתקין אותו גלובלית, אתה יכול להתקין אותו בצורה של dev-dependency ככה:
npm i --save-dev pm2@latest
וככה הוא מותקן ספציפית בפרוייקט, ואתה יכול לקרוא לו כמו בן אדם:
pm2 start hello.js
בכל מקרה אני הייתי מעדיף לעבוד בפרוסס מנג'ר כמו pm2 בהתקנה גלובלית.
-
@איציק-דייטש כמו ש @מוטי-אורן התותח אמר, מומלץ להתקין את pm2 גלובלית. זה לא קשור גם לפרוייקט שלך ספציפית יותר מידי, אלא למכונה עצמה.
זה כמו לא להתקין את nodeJS גלובלית. -
@מוטי-אורן אין לי בעיה להתקין אותו גלובלי, אבל אני רק רוצה לדעת אם זה לא פוגע ב nodebb
-
@איציק-דייטש אמר בעזרה | הפעלת אתר nodejs על השרת:
@מוטי-אורן אין לי בעיה להתקין אותו גלובלי, אבל אני רק רוצה לדעת אם זה לא פוגע ב nodebb
לא, אין לו איך לפגוע בשום דבר..
-
@chv תודה רבה!
@מוטי-אורן תודה גם לך!
תודה לכל העוזרים
מקווה שלא יהיו לי עוד שאלות/ שגיאות