![](/img/trans.png)
[英]How do I explicitly make sure my restore, build and publish settings are consistent in .Net Core?
[英]How do I host/publish my .Net Core WebAPI on Ubuntu?
我正在學習.Net Core。
我使用ASP.Net MVC開發了WebApplication,因為它可以在本地IIS上安裝和運行。
在Ubuntu和Linux中托管/發布.Net Core WebApi的方式類似,而不是像5000這樣的特定端口運行?
docker對這種情況有幫助嗎? 如果是,那我該如何使用它?
是否可以在沒有docker的情況下托管/發布? 如何在沒有Docker的情況下主持/發布?
我還閱讀了以下鏈接並實施了所有步驟。 發布到Linux生產環境
在上面的鏈接中,我無法確定訪問webapi的URL是什么?
正如@Pawel所指出的,托管.NET Core Web API或ASP.NET Core應用程序的推薦方法是使用Kestrel,它是內置於dotnet核心工具中的Web服務器。 出於開發目的,您不需要另一個Web服務器來啟動和測試您的API。
您不需要Docker來托管您的Web應用程序/ API ,但應將其視為生產托管,因為它是一種干凈,快速的自動化版本和隔離進程的方法。
使用Docker,流程結構是相同的 - Docker只托管和管理流程。 您可以讓Kestrel在一個Docker容器中運行API,而Nginx(在另一個容器中或安裝在基本操作系統上)將調用轉發給它。
只需簡單的步驟即可在開發設置中運行API
確保在project.json中定義適當的運行時
"runtimes": { "win7-x64": {}, "win81-x64": {}, "ubuntu.14.04-x64": {}, "debian.8-x64": {} }
buildOptions
部分中定義"emitEntryPoint": true
。 dotnet build -r ubuntu.14.04-x64 --build-profile Release
dotnet publish -r ubuntu.14.04-x64 --configuration Release -o ./bin/Release/Publish
使用命令行,如我所示,為Ubuntu構建和發布您的應用程序 - 我已經在VS 2015 Update 3中嘗試過,並且在為正確的運行時構建它時遇到了問題
appsettings.json
。 sudo -i
獲取管理員權限, cd
到您放置二進制文件的文件夾並使用以下dotnet MyWebApi.dll
運行您的api: dotnet MyWebApi.dll
其中MyWebApi.dll是您構建過程的主要輸出。 此時,Kestrel應該從通常的消息開始,說明它正在偵聽的端口(例如,5000)。 如果它是無頭服務器,您應該能夠使用curl調用Web API:
curl http://localhost:5000/whatever/your/api/needs/here
如果Ubuntu框具有GUI(Gnome等),您應該能夠使用瀏覽器連接到您的api。
如果您的Ubuntu服務器沒有運行防火牆,您應該能夠使用同一網絡上另一台計算機上的瀏覽器連接到Web API:
http://<linux-ip-address>:5000/whatever/your/api/needs/here
您可以通過在終端窗口中鍵入ip addr show
來獲取Ubuntu服務器的IP地址。
dotnet MyWebApi.dll
在Windows上手動啟動應用程序,並將IIS配置為轉發給它。 Asp.NET Core應用程序使用名為Kestrel的跨平台應用程序Web服務器。 您可以直接使用Kestrel運行您的應用程序(例如使用dotnet run
- 在開發期間非常有用)但是不建議將Kestrel直接暴露給外部世界,因此在生產環境中,當您在Windows上運行時,您會將IIS放在應用程序前面或nginx在Linux上運行時。 你可以在這里找到一個示例nginx配置: https : //github.com/aspnet/ServerTests/blob/dev/test/ServerComparison.FunctionalTests/nginx.conf
您可以像這樣指定url / port(在“Program.cs”文件中):
public static void Main(string[] args) {
var host = new WebHostBuilder()
.UseKestrel()
.UseUrls("http://192.168.0.0:8080")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.Build();
host.Run();
}
將“192.168.0.0”替換為UseUrls()方法中的實際ip或url。
在項目目錄中,只需打開一個終端/控制台窗口並運行“dotnet run”。
確保它顯示“正在收聽:192.168.0.0:8080”(或您輸入的url / ip)。
上面的示例假設您正在為啟動類使用Startup
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.