תהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי
-
@yyy כתב בתהליך העלאת מערכת fullstack מה-localhost לעולם האמיתי:
אם כן זה נראה שיש שם באמת אפשרות
זה נהדר לעבוד כשיש ככה אמון ושיתו"פ
אני לא מבין מה חסר בהודעתי הראשונה שאתה מייגע אותי בהרבה שאלות.
אני מצטט:אתה צריך לשלם או על שירות אירוח אתרים שתומך ב.net core או לשכור כל VPS שמריץ אובונטו.
מה לבחור מבין השניים? הראשון יקר יותר אבל יותר ממשק ויזואלי שמעלים את הקבצים והופה זה עובד. השני זול יותר, וגם מתאר נאמנה את העולם האמיתי או מצב הייצור שאליו אתה יום אחד תגיע.
שכירת VPS יש בהמון חברות, אני ממליץ על OVH אבל זו חברה שקשה לרישום (לוקח זמן עד שאתה מאושר). יש גם scalway, זה שני חברות זולות למרות שהם איכותיות יחסית -
@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
איך אפשר לוודא באמת מה מותקן ומה לא?
-
@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.
ברשותך אולי תרחיב על זה, כי אני לא מכיר בהקשר הזה את הנושא של פרוקסי. אני רגיל שהאנגולר פונה ישר לדונטנט בלי מתווכים למיניהם, אז בשביל מה צריך להכניס פה מישהו נוסף?