.net core2.0+nginx+Ubuntu14.04【一個小白的初次嘗試】


  新的業務來了,需要使用linux環境部署web服務,作為一個C#的懶惰程序員,就這么上了車【狗臉】,廢話不多說,跟我一樣的小白請看,大神請繞路。

  站點暫時沒有使用Docker部署,為什么呢,因為我還沒搞清楚哇,攤手~

   


 

目標  

  VS2017+Core2.0+bootstrap+vue+ubuntu14.04+nginx半天完成一個新網站的搭建和部署。

GO

   首先下載VS2017,安裝的時候,注意請務必勾選如下:

    

  確認本地Windows和linux環境下都已經安裝.net core

  檢測方法如下:windows 打開cmd  輸入dotnet

         linux 下打開temernal  輸入dotnet亦然,

  具體安裝方法請參考微軟官網,window:https://www.microsoft.com/net/download/windows/build

                linux:https://www.microsoft.com/net/download/linux/build

 

新建解決方案:

    

此處先說說拙見:Program.cs和Startup.cs文件同為項目啟動文件,但是實際上項目由main作為唯一入口startup中主要含有一些項目的配置,比如IOC組件注入、MVC配置,具體請百度。

開發就到此為止。

 

window下部署:本地運行CMD控制台,切換到程序運行目錄:cd E:\QMX\qmxweb\QMX.CoreWeb\QMX.CoreWeb  

運行命令:dotnet restore   拉取項目所需引用以及幻雲nuget包准備運行

運行命令:dotnet run   這個命令完成了本地的程序運行,結果如下:

  

 

此時使用瀏覽器打開localhost:8080/# 完成本地的站點運行。

 

以上僅僅完成了程序的運行,並沒有完成部署,若想使用8080端口部署該應用,操作如下:

在運行目錄下,執行命令:dotnet publish

    

 此時即完成了站點發布產物的生成  那么我們怎么將這個產物進行部署到指定端口呢?

上圖中最后一行指出了發布產物的位置,切換到此目錄下:cd E:\QMX\qmxweb\QMX.CoreWeb\QMX.CoreWeb\bin\Debug\netcoreapp2.0\publish\ 

執行發布命令:dotnet QMX.CoreWeb.dll  此時即完成了站點的發布,並會報告出該應用程序監聽端口,如下:

  

 

至此已經完成window下core站點的發布。

 

linux下部署:

准備:

  1)安裝nginx 此處不再贅述  具體請參考https://www.cnblogs.com/jimisun/p/8057156.html

  2)安裝.netcore組件

  3)下載winscap 地址 https://www.winpcap.org/install/default.htm

  4)下載putty 地址https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

GO:

  1)使用nginx監聽8080端口  具體操作就是在nginx的安裝目錄下配置站點對應域名映射本機8080端口。

  2)使用winscap連接本機的window環境和服務器linux環境

  

在此工具幫助下在linux下建立文件夾  從window下找到coreweb對應的發布產物,拷貝到對應的linux環境下。

  3)使用putty連接上遠程機器之后,切換到對應的發布產物  默認:【應用程序名稱】.ll所在目錄下,執行

  dotnet  [YourAppName].dll

此時可以看到shell提示系統已經監聽了8080端口,此時linux內部訪問8080端口已經可以直接訪問該應用,配合上nginx則實現了域名直接訪問內部8080端口的過程。

 

那么,是不是到此結束了呢??答案是:否

 

  當你辛辛苦苦擼完代碼部署完畢之后,你隨后關掉了shell,卻發現原先能訪問的站點不能訪問了,這是為什么呢?

 

  因為該程序依賴shell的持續執行,如若不想干等,只有重新搞一個守護進程持續幫我們執行dotnet運行app的命令。

 

守護進程

  執行命令:sudo apt-get install supervisor   安裝完畢守護進程

  但是我們要進行守護進程的配置:本人安裝的守護進程默認安裝路徑在/etc/supervisor/之下,ls我們看到有一個conf.d的文件夾和supervisor.conf,顯然后者就是我們要的配置文件了!

vim打開之后,大失所望,原因,包含的文件是*.conf  嗎,去讀取的守護配置文件,自己在寫一個吧。

  

切換到conf,d文件夾下,打開vim [AppName].conf   編寫如下文件

  [program:qmxCoreService]
  command=dotnet QMX.CoreWeb.dll; 運行程序的命令
  directory=/root/QMX.Web/ ; 命令執行的目錄
  autostart=true ; 程序意是否自動啟動
  autorestart=true; 程序意外退出是否自動重啟
  stderr_logfile=/var/log/QMX.CoreWeb.err.log ; 錯誤日志文件
  stdout_logfile=/var/log/QMX.CoreWeb.out.log ; 輸出日志文件
  user=root; 進程執行的用戶身份
  stopsignal=INT

 以上配置完畢之后,:wq退出vim之后  執行命令:supervisord -c /etc/supervisor/supervisord.conf   

執行之后,正常情況下啥都不發生,如果發生了以下錯誤,如:

Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h

 

不要緊張,兩步即可輕松解決:

1)find / -name supervisor.sock   得到該路徑  path1

2)unlink  path1

 再次讀取supervisord -c /etc/supervisor/supervisord.conf   

此時 ps -ef | grep  [APPName***]  如果出現兩個進程,一個是守護進程,一個是dotnet [app].dll則說明完成守護了呢。

 

到此為止  coreweb在linux下的部署就ok了。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM