Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

לינוקס ושרתים - הפעלת שרת nodejs בזמן אתחול

elcuco - 10/12/2019 - 12:49
נושא ההודעה: הפעלת שרת nodejs בזמן אתחול
אז התיאוריה אומרת להפעיל nginx בתור פרוקסי לשרת nodejs. אבל איך מפעילים את השרת nodejs מלכתחילה?

מצאתי את pm2 (שאותו מפעילים מתוך systemd וזה דווקא נחמד) אבל אני שש להתקין יישומים גלובאליים על השרת שלי מתוך npm.

תיעוד:
https://pm2.keymetrics.io/docs/usage/quick-start/
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04

האם יש אלטרנטיבה אחרת? (תיעוד של docker יהיה נחמד למי שמוצא את השאלה הזאת עוד שנה, אבל לא רלוונטי אליי כרגע).
Anonymous - 10/12/2019 - 13:29
נושא ההודעה:
לא ברורה לי הבעיה שלך (וזו אינה תהיה רטורית).

יש פקודה שבעזרתה אתה יכול להריץ את node. את הפקודה הזו אתה יכול לשים בתוך יחידה של systemd בתור ExecStart .

מה חסר?
mksoft - 10/12/2019 - 14:35
נושא ההודעה:
למה אתה צריך אותו? אפשר פשוט ליצור קובץ service ל-systemd שיפעיל את השרת. הנה דוגמה:
https://nodesource.com/blog/running-your-node-js-app-with-systemd-part-1/
Anonymous - 10/12/2019 - 17:34
נושא ההודעה:
שאלה לא קשורה. איך אתה מריץ את Node ?
אתה לא צריך MiddleWare שיתמוך במספר רב של בקשות?

למשל כשכתבתי פרוייקט בדג'נגו השתמשתי ב WSGI
לNode אתה לא משתמש נגיד ב https://github.com/kriszyp/jsgi-node ?

תודה
Anonymous - 11/12/2019 - 08:04
נושא ההודעה:
כל התכנון של node הוא סביב IO אסינכרוני והיכולת לטפל במספר גדול של בקשות ב-thread יחיד של השרת. החיסרון של השיטה זה שאם יש בקשות שלא מבוססות IO אלא דורשות חישובים ומעמיסות את המעבד אז צריך לטפל בהן בנפרד בצורה יותר מסובכת.

בכל מקרה MiddleWare כזה לא נדרש ולא פופולרי בעולם של node.
elcuco - 11/12/2019 - 20:37
נושא ההודעה:
שאלה נוספת:

אז, אני משתמש ב-systemd כדי להפעיל את השרת node שלי. עכשיו, אני רוצה לתפור שכאשר אני עושה git tag יקרה hook ואז הקוד יפרס אל המקום המתאים, ו־systemd יפעיל מחדש את השירות שלי.

הבעייה היא שכל זה לא קורה תחת root אלא תחת משתמש ללא הרשאות. השאלה החדשה שלי היא: איך להפעיל מחדש את השירות ממשתמש שהוא לא root?

כרגע, בעזרת sudo ולמשתמש יש הרשאה בדיוק לפקודה אחת :
קוד:
systemcontrol restart blabla.service
. האם יש פתרון אחר?
mksoft - 12/12/2019 - 10:05
נושא ההודעה:
ל־systemd יש אפשרות ל-services פר משתמש, חפש systemd lingering, לא ניסיתי, יכול להיות שזה מה שאתה מחפש. הנה דוגמה:
https://www.brendanlong.com/systemd-user-services-are-amazing.html
כל הזמנים הם GMT + 2 שעות