.netcore項目初體驗(新手必看,第一次用必看)


 為什么叫新手必看?第一次必看?

因為我就是新手,我第一次用它。就在2周前。目前項目運行平穩。

此文有你第一次使用時,必須要使用的一切配置。

 

題外話:

雖然netcore現在已經是2.2版本了,江湖流傳是能比肩Java的微軟神作,但卻是我第一次用.netcore來做生產項目。選它的原因也有些令人尷尬。

公司因為變革,改走java路線了。服務器也不在我手上進行管理。於是問了管服務器的同事,說是windows服務器已經沒有了。

沒辦法。之前用java寫過一個項目,進度太慢。這次的項目時間短任務重,又只有自己一個干。

於是乎,那就.netcore走下去吧。至少是C#,再慢也比寫java快。

 

話不多說。接下來的內容就是本次項目使用netcore的各種經驗和總結,當然,也有坑坑坑的事兒發生。

開發環境:win7/win10 vs2017  .netcore2.1

生產環境:centos7.4,ubuntu 16

 

本次項目使用的技術點有:

netcore項目發布介紹(及添加linux下的駐守進程)[已完結]

netcore讀取配置文件及mysql連接

log4net 配置(全局異常捕獲)

swagger 配置

Autofac 的配置

https 的配置及使用

cors 跨域的配置

圖片合成,生成二維碼,

 

netcore項目發布介紹(及添加linux下的駐守進程)

1、本地發布:和原先.netframework項目一樣,項目右鍵,點發布即可。

  注意下圖,發布的配置文件中需要選擇linux-64;    

  

  發布后,只有原先.netframework項目的bin目錄,沒有任何靜態資源文件夾。

  若有使用到的話,記得將靜態資源文件,項目的xml文件(swagger會使用到)等也記得打包好。

2、安裝生產服務器的運行環境:

  netcore在centos7.4安裝下的安裝步驟( ubuntu與之類似)

  (官方教程:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install)

  sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

  sudo yum update

  sudo yum install dotnet-sdk-2.1

  安裝步驟太簡單了,簡直不需要多余的描述了。

  然后輸入 dotnet 回車,若出現如下圖所示,則表示安裝成功了。

  

  否則,請詳細查看安裝時的內容,里面會有提示你為什么沒有安裝成功的原因。

  注:之前用騰訊雲安裝了centos7.6(系統安裝好后服務器上本地查詢,卻是顯示的7.5版本,后來死活連接不上mysql。因為時間關系,具體原因沒有分析過。后來)

3、上傳打包好的文件夾到linux服務器

  本文上傳路徑為: /usr/wwwroot/mynetcoreproject (路徑自己定,沒有的話就新建吧)

  上傳好后進入此目錄,

  輸入命令 dotnet mynetcoreproject .dll,

  看到如下界面,則表示啟動成功

  

  此時,表示服務器已經在8088端口啟用,

  輸入命令: curl http://localhost:8088/api/values 應該就能看到此接口的返回數據了。

 4、安裝守護進程supervisor

  如第3步的操作,若退出xshell或退出控制台,那么這個站點也同時被關閉了(不能像服務一樣在后台運行,生產環境中這是不敢想象的)

  面臨的問題以如下三個(出處:https://www.cnblogs.com/Hai--D/p/5820718.html

問題1:ASP.NET Core應用程序運行在shell之中,如果關閉shell則會發現ASP.NET Core應用被關閉,從而導致應用無法訪問,這種情況當然是我們不想遇到的,而且生產環境對這種情況是零容忍的。 

問題2:如果ASP.NET Core進程意外終止那么需要人為連進shell進行再次啟動,往往這種操作都不夠及時。 

  問題3:如果服務器宕機或需要重啟我們則還是需要連入shell進行啟動。  

  此時,就要安裝守護進程supervisor了。.至於它是什么?安裝好后就知道了。

  安裝過程如下:(詳見https://www.cnblogs.com/Dicky-Zhang/p/6171954.html,眾多網友有反饋提到我下面的安裝方式是有坑的,在前面給到的鏈接文章中也是排在最后一位的安裝方式。具體有什么坑不得而知,我偷懶用了第四次,運氣好,一次成功,就不再研究了)  

$ sudo su - #切換為root用戶

# yum install epel-release

# yum install -y supervisor

# systemctl enable supervisord # 開機自啟動

# systemctl start supervisord # 啟動supervisord服務

# systemctl status supervisord # 查看supervisord服務狀態

# ps -ef|grep supervisord # 查看是否存在supervisord進程

安裝完成后,先別急着啟動它,還需要做如下配置

 

在supervisord.conf中,添加控制台訪問

[inet_http_server]         ; inet (TCP) server disabled by default

port=*:7002        ; (ip_address:port specifier, *:port for all iface)

username=yourusername              ; (default is no username (open server))

password=yourpassword               ; (default is no password (open server))

 

注意,在supervisord.conf的

[include]

files = /etc/supervisor/conf.d/*.ini

有如上信息,

所以,啟動進程的配置文件將寫在 /etc/supervisor/conf.d/目錄下

 

[program:yourprogram]

command=dotnet /usr/wwwroot/yourprogram/yourprogram.dll    ;這一行其實就是手動啟動項目的命令

directory=/usr/wwwroot/yourprogram

environment=ASPNETCORE__ENVIRONMENT=Production

user=root

stopsignal=INT

autostart=true

autorestart=true

startsecs=3

stderr_logfile=/var/log/ossoffical.err.log

stdout_logfile=/var/log/ossoffical.out.log

保存並退出后,

再執行systemctl start supervisord啟動守護進程,此時,站點項目也就一起啟動起來了。

通過訪問 http://IP:7002,再輸入賬號密碼(supervisord.conf中inet_http_server節的配置)

就能看到如下界面了。

 

  因為Supervisor已經設定為自動啟動了,所以每次它自身的啟動也會將所以配置文件下項目都啟動起來。

  通過上文的界面管理,在版更項目后,也可方便的點一下“Restart“即可。

 

                            

 


免責聲明!

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



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