תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
-
אני מנסה לדעת מהם השלבים שעלי לבצע כדי להעלות אתר שבניתי לעולם האמיתי.
נתונים טכניים:
מדובר באתר פשוט ביותר (בסטייל hello world וזהו...) שבניתי באנגולר לצורך הדגמה זו.
יש לי צד שרת ב.net core (ראו כאן) המדגים תקשורת בסיסית בין הקליינט לשרת, וכמובן יש DB (גם זה מתואר בקישור לעיל).
ביצעתי על האנגולר ng build וקיבלתי תיקיית dist.
ביצעתי על צד השרת dotnet publish וזה הפלט שקיבלתיuploadProj -> C:\Users\yaakov\source\repos\uploadProj\uploadProj\bin\Debug\netcoreapp3.1\uploadProj.dll uploadProj -> C:\Users\yaakov\source\repos\uploadProj\uploadProj\bin\Debug\netcoreapp3.1\publish\ מקווה שתקין.
אני חדש בעניין אז ברשותכם כמה שאלות של מתחילים.
- איך והיכן אני קונה(?) שרת ברחבי הגלובוס?
- מאחסנים את כל המרכיבים על אותו שרת?
- יש עוד שלבים שלא ביצעתי?
אשמח לכל מידע והמלצה שיעזרו לפוגג את הערפל.
תודה רבה. -
ברוך הבא לעולם האמיתי,
השאלה הראשונה לפיתוח מערכת היכן ואיך זה ירוץ ב- production ?
הפתרונות שאני מכיר עבור netcore זה עם תשלום, אולי יש חידושים בעניין ואשכיל מחברי הפורום ויש פתרונות חינמיים.
הדרך שפעם מצאתי זה לארוז ל docker ולעלות לשרת אחסון ](תחליפי Heroku ) שתומך בכך. -
אוקיי משתף אתכם בתהליך ולמי שיש הערות - יתקבלו בברכה
ממה שבדקתי צריך שני דברים להשיג\לקנות- כתובת domain
- אתר אחסון קבצים
לגבי שלב 1 כאן אפשר לבדוק ולקנות domain.
לפני שאני לוחץ על תשלום אני רוצה לוודא איתכם שאני לא פשוט מדבר שטויות וסתם שורף כסף. האם אני בכיוון הנכון?
-
את התוכן של הdist אתה שופך לתיקיה הססטית של .net core (משהו כמו wwwroot נראה לי).
- אתה צריך לשלם או על שירות אירוח אתרים שתומך ב.net core או לשכור כל VPS שמריץ אובונטו.
מה לבחור מבין השניים? הראשון יקר יותר אבל יותר ממשק ויזואלי שמעלים את הקבצים והופה זה עובד. השני זול יותר, וגם מתאר נאמנה את העולם האמיתי או מצב הייצור שאליו אתה יום אחד תגיע.
שכירת VPS יש בהמון חברות, אני ממליץ על OVH אבל זו חברה שקשה לרישום (לוקח זמן עד שאתה מאושר). יש גם scalway, זה שני חברות זולות למרות שהם איכותיות יחסית.
כיון שאתה צריך לבחור דרך מהשניים, אני שומר את ההדרכה להמשך לשלב שבו תדע מה אתה עושה. - כן, בדרך כלל (החלק של האנגולר זה קבצים סטטיים, בעצם זה לא חייב להיות על אותו דומיין וגם לא על אותו שרת).
אתה אכן צריך דומיין, עדיף לך לא לקנות ישראלי מכמה סיבות (למשל זמן עדכון שרתים).
תוכל לקנות דומיין בcloudflare (אחרי רישום, תראה בצד שמאל domain register),
הדומיין פחות דחוף, אתה יכול לראות בד"כ את האתר עובד עם דומיין של החברה המארחת. - אתה צריך לשלם או על שירות אירוח אתרים שתומך ב.net core או לשכור כל VPS שמריץ אובונטו.
-
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
הדומיין פחות דחוף, אתה יכול לראות בד"כ את האתר עובד עם דומיין של החברה המארחת.
או ישירות לכתובת IP או עם דומיין מותאם בhosts..
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
אתה צריך לשלם או על שירות אירוח אתרים שתומך ב.net core או לשכור כל VPS שמריץ אובונטו.
לחילופין תחליפי heroku שתומכים בדוקר כמו @Aharon-0 כתב, למשל fly.io. מצרף מה שמצאתי מגוגל.
https://github.com/Arshu/ASP.NET-Core-In-Fly.io -
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
את התוכן של הdist אתה שופך לתיקיה הססטית של .net core (משהו כמו wwwroot נראה לי).
2. כן, בדרך כלל (החלק של האנגולר זה קבצים סטטיים, בעצם זה לא חייב להיות על אותו דומיין וגם לא על אותו שרת).למה בעצם זה חשוב ל.net לדעת או לקחת אחריות על מיקום קבצי הקליינט? זה פשוט עניין של סדר וארגון או משהו יותר מהותי?
(אני מגיע מתפיסה שבה באמת אין שום קשר מהותי בין הקליינט לסרבר למעט ה-API)?אתה אכן צריך דומיין, עדיף לך לא לקנות ישראלי מכמה סיבות (למשל זמן עדכון שרתים).
מה כוונתך "לא ישראלי"? שלא יהיה עם סיומת IL?
הדומיין פחות דחוף, אתה יכול לראות בד"כ את האתר עובד עם דומיין של החברה המארחת.
כלומר הדומיין הנוסף שאתה יכול לקנות הוא פשוט עניין שיווקי?
איזה אתריים זולים ואיכותיים יש שתומכים ב-.net אוטומטי? (אני מעוניין להתרשם מפערי המחירים).
-
מנסה את OVH.
- הם דורשים הזדהות באמצעות אמצעי תשלום, האם בטוח להכניס שם מספר אשראי שלא באמצעות paypal? (דרך paypal יש גבייה ראשונית של 30$)
- ראיתי כאן (בתקווה שבכלל זה מה שאני צריך) שהם מציעים כמה תוכניות, העניין שאין שום רמז לכך שיש תמיכה ב.net core.
אני מבין שמדובר במכונה וירטואלית (יש כאן וכאן קצת מידע) ואלי רק בהמשך צריך להגדיר את זה אבל אשמח להבהרות.
-
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
- בטוח לגמרי
- אני לא רוצה שתיקח מהם תכנית, הצעתי לך אותם בשביל שכירות של שרת וירטואלי (עם אובנטו).
זה הכיוון?
אם כן זה נראה שיש שם באמת אפשרות לאובונטו. עם דוקר או בלי? -
@yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
אם כן זה נראה שיש שם באמת אפשרות
זה נהדר לעבוד כשיש ככה אמון ושיתו"פ
אני לא מבין מה חסר בהודעתי הראשונה שאתה מייגע אותי בהרבה שאלות.
אני מצטט:אתה צריך לשלם או על שירות אירוח אתרים שתומך ב.net core או לשכור כל VPS שמריץ אובונטו.
מה לבחור מבין השניים? הראשון יקר יותר אבל יותר ממשק ויזואלי שמעלים את הקבצים והופה זה עובד. השני זול יותר, וגם מתאר נאמנה את העולם האמיתי או מצב הייצור שאליו אתה יום אחד תגיע.
שכירת VPS יש בהמון חברות, אני ממליץ על OVH אבל זו חברה שקשה לרישום (לוקח זמן עד שאתה מאושר). יש גם scalway, זה שני חברות זולות למרות שהם איכותיות יחסית -
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
אני לא מבין מה חסר בהודעתי הראשונה שאתה מייגע אותי בהרבה שאלות.
לא חסר כלום. לי חסר ניסיון ולכן אני אני בודק וחושש מעט לפני כל צעד.
-
יש לי VPS שמריץ אובונטו. ייצרתי מפתחות SSH. מה כעת?
-
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
מזל טוב.
פרט יותר איפה אתה אוחז,
יש לך ביד שם וסיסמה, או שכבר הפלגת הלאה?ברוכים תהיו.
יש שם משתמש וסיסמה וחיבור באמצעות Power shell. עדכנתי את המערכת. יש WinSCP תקין. מה הלאה?
אם הכיוון הוא כאן
יש לי בעיה שאין שם תמיכה ב-DOTNET 3, השאלה האם למישהו יש נסיון עם זה. -
הלינק שהבאת מתייחס לאובונטו 16, לך יש ללא ספק משהו חדש יותר, הנה לינק ל23.
בקשר ל3, אני חושב שבVS אפשר לעדכן בכמה קליקים את הגירסה, אבל גם אם תישאר עם 3 אני חושב שהמדריך רלוונטי רק שבמקום לשים בפקודה dotnet-runtime-7.0 צריך לשים dotnet-runtime-3.1. -
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
גם אם תישאר עם 3 אני חושב שהמדריך רלוונטי רק שבמקום לשים בפקודה dotnet-runtime-7.0 צריך לשים dotnet-runtime-3.1.
אז מה המשמעות של זה?
The following versions of .NET are no longer supported:
.NET 5
.NET Core 3.1
.NET Core 3.0
.NET Core 2.2
.NET Core 2.1
.NET Core 2.0
שאין תמיכה במקרה של תקלות אבל בעצם זה אמור לעבוד?
-
ניסיתי להתקין באמצעות
sudo apt-get install dotnet-sdk-3.1
ןקיבלתי את זה
Get:1 http://security.ubuntu.com/ubuntu lunar-security InRelease [109 kB] Hit:2 http://nova.clouds.archive.ubuntu.com/ubuntu lunar InRelease Hit:3 http://nova.clouds.archive.ubuntu.com/ubuntu lunar-updates InRelease Hit:4 http://nova.clouds.archive.ubuntu.com/ubuntu lunar-backports InRelease Fetched 109 kB in 1s (107 kB/s) Reading package lists... Done Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package dotnet-sdk-3.1 E: Couldn't find any package by glob 'dotnet-sdk-3.1' E: Couldn't find any package by regex 'dotnet-sdk-3.1' לכן ניסיתי את זה
ubuntu@vps-XXX:~$ sudo chmod +x ./dotnet-install.sh ubuntu@vps-XXX:~$ ./dotnet-install.sh --channel 3.1 אבל כשאני מריץ
dotnet --info
אני מקבל
Host: Version: 7.0.5 Architecture: x64 Commit: 8042d61b17 .NET SDKs installed: No SDKs were found. .NET runtimes installed: Microsoft.AspNetCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.NETCore.App] Other architectures found: None Environment variables: Not set global.json file: Not found Learn more: https://aka.ms/dotnet/info Download .NET: https://aka.ms/dotnet/download עוד פלט רלוונטי
ubuntu@vps-XXX:~$ dotnet --list-sdks ubuntu@vps-XXX:~$ dotnet --list-runtimes Microsoft.AspNetCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 7.0.5 [/usr/lib/dotnet/shared/Microsoft.NETCore.App] בקיצור הוא על גרסה 7. אמשיך לעדכן...
-
עכשיו הסרתי את גרסה 7 והנה כשאני מנסה שוב להריץ את הפקודה
./dotnet-install.sh --channel 3.1
הוא מודיע לי בחגיגיות ש
dotnet-install: .NET Core SDK with version '3.1.426' is already installed.
ואז כדי לוודא שיש לי dotnet 3 בהתרגשות אני כותב :
ubuntu@vps-XXX:~$ dotnet --info
והוא מחזיר לי:
-bash: /usr/bin/dotnet: No such file or directory איך אפשר לוודא באמת מה מותקן ומה לא?
-
הפיתרון היה כך
sudo find / -name dotnet
זה הפלט
/home/ubuntu/.dotnet/dotnet /etc/dotnet תכל'ס איך מתקדמים?
-
אני מקווה שאני לא מקשקש, אבל כנראה שבתייקה home/ubuntu/.dotnet/
נמצאים הקבצים הבינאריים של dotnet, אפשר לנווט לשם עםcd /home/ubuntu/.dotnet
ואז להריץdotnet --info/.
אם אכן זה גרסה 3 אז רק צריך להוסיף את התיקייה הזאת למשתני הסביבה. -
@yyy אני רק מוסיף הערת אגב, אם הוספת את התיקייה למשתני הסביבה עם הפקודה:
PATH="$PATH:/home/ubuntu/.dotnet"
אז בהפעלה מחדש זה לא יישאר ב-
PATH
, כדי לשנות את זה לתמיד צריך לערוך את הקובץetc/environment/
לדוגמא עםsudo nano /etc/environment
ולהוסיף שם את הנתיב (עם הפרדה של:
) ולשמור. -
העתקתי את קבצי ההרצה של הדוטנט אחרי ה-publish לשרת ובינתיים שאני מנסה להריץ את קובץ התוכנית באמצעות הפקודה
dotnet myProgram
נתקלתי בשתי שגיאות:
שגיאה 1
Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support. at System.Environment.FailFast(System.String) at System.Globalization.GlobalizationMode.GetGlobalizationInvariantMode() at System.Globalization.GlobalizationMode..cctor() at System.Globalization.CultureData.CreateCultureWithInvariantData() at System.Globalization.CultureData.get_Invariant() at System.Globalization.CultureInfo..cctor() at System.String.ToLowerInvariant() at Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment.GetArch() at Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment..cctor() at Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment.GetRuntimeIdentifier() at Microsoft.DotNet.Cli.MulticoreJitProfilePathCalculator.CalculateProfileRootPath() at Microsoft.DotNet.Cli.MulticoreJitActivator.StartCliProfileOptimization() at Microsoft.DotNet.Cli.MulticoreJitActivator.TryActivateMulticoreJit() at Microsoft.DotNet.Cli.Program.Main(System.String[]) Aborted (core dumped) ממה שהבנתי חסר לו איזה מרכיב של תמיכה בגלובליזציה
הפתרון שהוצע לי היה:
sudo apt-get install libicu-dev
זה לא עזר.
פתרון נוסף הואexport DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true
וזה לכאורה עובד אלא שיתכן שהשגיאה הבאה נובעת מפיתרון מאולתר זה.
שגיאה 2No usable version of libssl was found Aborted (core dumped) הבנתי שהשגיאה נובעת מחוסר בספריית OpenSSL.
ניסיתי את זה:sudo apt-get install libssl-dev
והשגיאה עדיין ממשיכה.
למישהו יש נסיון עם זה? פספסתי התקנה של משהו? -
שאלה נוספת: מה עדיף לאנגולר Apache או Nginx?
-
צדיק תמיםהשיב לyyy ב 1 ביוני 2023, 20:37 נערך לאחרונה על ידי צדיק תמים 6 בינו׳ 2023, 20:38
@yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
שאלה נוספת: מה עדיף לאנגולר Apache או Nginx?
אנגולר אחרי build זה בעצם קבצים סטטיים (בעיקר טקסט, אולי גם כמה תמונות),
אני ממליץ על Caddy בגלל הקונפיגורציה שלו שהיא קלה ופשוטה בצורה מדהימה + נותן HTTPS אוטומטי באופן מובנה,
הפרומיל ביצועים שאולי תקבל יותר בnginx הוא לא משהו שרלוונטי לסדרי גודל שלך, וגם לא בטוח שהוא בכלל קיים. -
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
עריכה: מיקרוסופט ממליצה על nginx כשרת פרוקסי עבור asp.net.
ברשותך אולי תרחיב על זה, כי אני לא מכיר בהקשר הזה את הנושא של פרוקסי. אני רגיל שהאנגולר פונה ישר לדונטנט בלי מתווכים למיניהם, אז בשביל מה צריך להכניס פה מישהו נוסף?
פוסט 25 מתוך 57