תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
-
ניסיתי להתקין באמצעות
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
איך אפשר לוודא באמת מה מותקן ומה לא?
-
@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
והשגיאה עדיין ממשיכה.
למישהו יש נסיון עם זה? פספסתי התקנה של משהו? -
@yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
שאלה נוספת: מה עדיף לאנגולר Apache או Nginx?
אנגולר אחרי build זה בעצם קבצים סטטיים (בעיקר טקסט, אולי גם כמה תמונות),
אני ממליץ על Caddy בגלל הקונפיגורציה שלו שהיא קלה ופשוטה בצורה מדהימה + נותן HTTPS אוטומטי באופן מובנה,
הפרומיל ביצועים שאולי תקבל יותר בnginx הוא לא משהו שרלוונטי לסדרי גודל שלך, וגם לא בטוח שהוא בכלל קיים. -
@dovid כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
עריכה: מיקרוסופט ממליצה על nginx כשרת פרוקסי עבור asp.net.
ברשותך אולי תרחיב על זה, כי אני לא מכיר בהקשר הזה את הנושא של פרוקסי. אני רגיל שהאנגולר פונה ישר לדונטנט בלי מתווכים למיניהם, אז בשביל מה צריך להכניס פה מישהו נוסף?
-
@צדיק-תמים כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
@yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
שאלה נוספת: מה עדיף לאנגולר Apache או Nginx?
אנגולר אחרי build זה בעצם קבצים סטטיים (בעיקר טקסט, אולי גם כמה תמונות),
אני ממליץ על Caddy בגלל הקונפיגורציה שלו שהיא קלה ופשוטה בצורה מדהימה + נותן HTTPS אוטומטי באופן מובנה,
הפרומיל ביצועים שאולי תקבל יותר בnginx הוא לא משהו שרלוונטי לסדרי גודל שלך, וגם לא בטוח שהוא בכלל קיים.אשמור את המלצתך להמשך. כעת אני מעוניין להתנסות בכלים היותר סנטנדרטיים ומצויים.
-
@yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
ברשותך אולי תרחיב על זה, כי אני לא מכיר בהקשר הזה את הנושא של פרוקסי. אני רגיל שהאנגולר פונה ישר לדונטנט בלי מתווכים למיניהם, אז בשביל מה צריך להכניס פה מישהו נוסף?
אתה שאלת אם apach או nginx.
בהקשר הזה (של תוכנה שרצה בעצמה כמו asp.ney או nodejs) הם מכונים שניהם פרוקסי הפוך.
עזוב את המינוח, סה"כ עניתי על שאלתך. -
חזרתי לאחר הפסקת מה.
האנגולר עובד הדוטנט רץ. מותקן openSsl.
אני מקבל את השגיאה הבאה כשאני מנסה ליצור תקשורת https
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
זה קשור לכך שלא מוגדר לי Kestrel ב-AppSetting.json אלא רק iis express?
תודה! -
אוקי אז הנה תקציר.
התקנתי nginx + קונפיגורציה והאנגולר עולה בלי צד שרת כמובן.
לאחר התקשקשות עם תאימות לגרסאות מיושנות של דוטנט, הגעתי לתובנה שעדיף פשוט לעבוד על גרסה שהיא "out of the box" (יש תרגום מקובל לעברית?).
העברתי את הפרוייקט לדוטנט 7 והפרוייקט רץ. בשביל הטסט יצרתי שני קונטרולרים, אחד מחזיר מספר מדוטנט עצמו ואחד מחזיר מה-DB.
ב-DB עצמו עוד לא נגעתי ואני מנסה לראות קודם שהתקשורת עם הדוטנט עובדת טוב.מה שקורה שכשאני מנסה לגשת לקונטרולר באמצעות tls/ssl (במילים אחרות https) מקבל את השגיאה הנ"ל.
דוגמא//with http ubuntu@vps-c2df8674:~$ curl http://localhost:5000/api/Numbers/GetNumbersFromDotnet 1 2 3 4 5 from dotnet //with https ubuntu@vps-c2df8674:~$ curl https://localhost:5000/api/Numbers/GetNumbersFromDotnet curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number //wrong ubuntu@vps-c2df8674:~$ curl --tlsv1 https://localhost:5000/api/Numbers/GetNumbersFromDotnet curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
שאלה נוספת:
האם curl הוא הכלי המקובל לנסיונות שכאלו (אין UI כמובן)?תודה רבה.
-
@yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
מה שקורה שכשאני מנסה לגשת לקונטרולר באמצעות tls/ssl (במילים אחרות https) מקבל את השגיאה הנ"ל.
לפי המבואר פה זו השגיאה שמקבלים כאשר מנסים לגשת עם פרוטוקול TLS לשרת שמדבר HTTP פשוט
כדאי שתעתיק לפה את קונפיגרצית ה-nginx שלך