国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.net Core部署說明(Ubuntu)

2019-11-06 06:32:54
字體:
來源:轉載
供稿:網友
最近在學習asp.net core,當然學習的目的是想了解一下,Asp.net core是否真的能夠是先跨平臺部署。根據目前官網資料說明,asp.net core只有在Redhat 企業版上,才能夠實現所有的功能。不過這個版本是收費的,可能不是大多數人的最佳選擇。筆者目前選擇的實驗環境是Ubuntu 16.4 和CentOS7這兩個平臺。從長遠角度來說,CentOS7維護周期長,更加適合企業生產環境。Ubuntu擇以更加活躍的社區,更加快速的更新受到歡迎,不過他的維護周期一般只有2~3年,也就是說,一旦出現一個新版本,老版本的ubuntu可能就不會受到更新維護了,然而升級大版本,可能會牽扯很多問題,所以具體選擇那個系統,還需要用戶自行斟酌。筆者這里首先說一下Ubuntu的部署方法。這里是微軟官方的Getting Started教程:https://docs.asp.net/en/latest/getting-started.html 1.安裝.net core. 這里可以看到,目前.net core支持的所有linux系統。我們選擇Ubuntu。這里有個分支,需要確認ubuntu版本。根據版本不通,進行不通配置,更新下載.net core.版本可以通過命令:cat /etc/issue來查詢Ubutu 14.4 執行:sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'  sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893  sudo apt-get update  Ubuntu 16.4執行:sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list'  sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893  sudo apt-get update  然后安裝.net core sdk。sudo apt-get install dotnet-dev-1.0.0-PReview2-003121  完成之后,可以參照微軟說明,跑一個hello world進行下測試。 2.把使用vs2015,基于asp.net core開發的項目進行發布。這里一定要注意,必須是基于Asp.net Core開發的項目,基于.net framework的項目只能運行在windows平臺,切記。同時需要注意好數據庫的配置。默認的示例項目是使用的sqlserver compact數據庫,這個是不支持跨平臺的,當然也就不能部署到linux上去。所以使用示例項目的話,把SeedData的調用注釋掉,或者移除掉數據庫操作代碼再發布。如果是使用的MySQL或者其他數據庫,請確認提前在Ubuntu上完成部署,并做好相關數據庫配置。這里不再記錄,總是需要自行試一下的。對了,還需要注意一個地方,public static void Main(string[] args)  {  var host = new WebHostBuilder()  .UseKestrel()  .UseContentRoot(Directory.GetCurrentDirectory())  .UseIISIntegration()  .UseStartup<Startup>()  .Build();  host.Run();  }記得要UseKestrel()。 3.發布項目。可以用vs2015的發布網站發布,也可以用命令行發布。這里寫下命令行發布的方法。定位到項目目錄下,要有project.json的目錄下。dotnet restore  這個是更新所有的項目引用然后dotnet publish  這個是發布項目,發布過程中如果出現了錯誤提示,請自行根據情況解決。如果出現:“No executable found matching command "bower"”請看這里 4.將發布的項目上傳到ubuntu服務器。可以用ssh secure file transfer或者ftp什么的上傳。 5.切換到項目目錄下,執行dotnet XXX.dll  筆者這里測試用的Webapplication1.dll說明環境配置,及項目配置沒問題,服務正常啟用。不過沒有辦法遠程訪問?這是因為listening on: http://localhost:5000的原因,你只是監聽了localhost的5000端口,所以不支持外部ip:5000的訪問。這里可以用nginx,待會說到,也可以修改一下代碼如下:public static void Main(string[] args)  {  var host = new WebHostBuilder()  .UseKestrel()  .UseContentRoot(Directory.GetCurrentDirectory())  .UseIISIntegration()  .UseStartup<Startup>()  .UseUrls("http://*:5000")  .Build();  host.Run();  }這里改成了監聽http://*:5000,一看就明白了吧,這是監聽任意ip的5000端口。重新發布,并上傳后看到第二次執行后,監聽地址發生變化,現在瀏覽器里可以直接訪問了。好吧,這樣可以臨時湊合用,但是一旦重啟,服務并不會自動運行,并且現在主流都是通過nginx做代理使用,下面我們繼續說。 6.安裝nginxsudo apt-get install nginx  nano /etc/nginx/sites-available/default  當然vi也可以。修改Server節點配置:server {  listen 80;  location / {  proxy_pass http://localhost:5000;  proxy_http_version 1.1;  proxy_set_header Upgrade $http_upgrade;  proxy_set_header Connection keep-alive;  proxy_set_header Host $host;  proxy_cache_bypass $http_upgrade;  }  }  ctrl+O Ctrl+X 保存,然后退出。重啟Nginxsudo service nginx restart  這樣Nginx代理就配置好了,然后是做個自動啟動服務。 7.安裝Supervisorsupervisor就是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變為后臺daemon,并監控進程狀態,異常退出時能自動重啟。通俗的來講,可以方便的做成啟動項自動運行。sudo apt-get install supervisor  在/etc/supervisor/conf.d/目錄下新建文件 XXX.confnano /etc/supervisor/conf.d/Test.conf  敲入代碼:[program:WebApplication1]  command=/usr/bin/dotnet /home/robin/publish/WebApplication1.dll  directory=/home/robin/publish  autostart=true  autorestart=true  stderr_logfile=/var/log/NetCoreBBS.err.log  stdout_logfile=/var/log/NetCoreBBS.out.log  environment=ASPNETCORE__ENVIRONMENT=Production  user=root  stopsignal=INT  Ctrl+O Ctrl+X保存sudo service supervisor restart  重啟supervisor。然后你會發現,不需要你在手動去運行dotnet xxx.dll來啟動監聽了,并且可以直接通過80端口訪問項目了,即使沒有配置http://*:5000,使用的localhost也可以正常訪問,因為畢竟是走的nginx進行的轉發。 總結:.net 總算解決了跨平臺的問題,雖然WinForm程序目前還沒有實現,但是基礎的ConsoleApp,asp.net core,都已經可以實現linux平臺部署。可以說,基本的企業級項目開發已經可以通過asp.net core來實現跨平臺了。開發工具可以用vs2015(windows)或者Vs code(Mac和linux),就IDE環境來說,甩Eclipse幾條街妥妥的。不過需要注意,System.drawing并沒有實現,后臺加水印什么的,可能只能依托于其他三方插件實現,不過相信會越來越完善的。aspnet github社區(https://github.com/aspnet) 還希望大家參與進來,一塊完善aspnet core。一些bug也可以來這里反應。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开鲁县| 舟山市| 北流市| 麻阳| 六枝特区| 都昌县| 武宁县| 成武县| 泸州市| 无极县| 黄山市| 琼结县| 甘谷县| 博爱县| 瓦房店市| 房产| 雷州市| 安康市| 揭东县| 武邑县| 光山县| 棋牌| 新密市| 平和县| 神农架林区| 宜川县| 宽城| 荃湾区| 敦煌市| 青田县| 乌兰县| 吉隆县| 正阳县| 卓尼县| 宁化县| 岗巴县| 城口县| 宁陕县| 西和县| 滦平县| 乌苏市|