本文旨在指導(dǎo)從未接觸過(guò)linux的.net開(kāi)發(fā)者,如何在centos7上安裝.net core環(huán)境,并部署.net core應(yīng)用程序。
本指南僅適用于centos,其他Linux發(fā)行版的命令可能需要稍作調(diào)整。
在開(kāi)始之前,請(qǐng)確保已準(zhǔn)備好服務(wù)器地址、用戶名和密碼。如果您沒(méi)有Linux系統(tǒng),可以使用新生命團(tuán)隊(duì)提供的公網(wǎng)服務(wù)器centos.newlifex.com。
新生命團(tuán)隊(duì)的netcore服務(wù)器免費(fèi)開(kāi)放計(jì)劃
一、準(zhǔn)備工作
在Windows開(kāi)發(fā)機(jī)上安裝xshell和xftp,前者用于通過(guò)ssh連接Linux服務(wù)器,后者用于FTP文件傳輸。
打開(kāi)xshell,創(chuàng)建一個(gè)新連接,名稱和主機(jī)都填寫(xiě)centos.newlifex.com(實(shí)際使用時(shí)應(yīng)替換為您的Linux服務(wù)器地址或域名),其他選項(xiàng)保持默認(rèn),如下:
點(diǎn)擊連接后,會(huì)彈出SSH安全警告,您需要接受并保存SSH密鑰。
接受后,系統(tǒng)會(huì)要求輸入用戶名,這里我們輸入root,并選擇記住用戶名。
然后輸入密碼,新生命團(tuán)隊(duì)開(kāi)放服務(wù)器本周的密碼是nx@1250407685。
為了方便,我們同樣選擇記住密碼。
連接成功后,您可以在左側(cè)會(huì)話管理器中看到剛才創(chuàng)建的連接,這在管理多個(gè)Linux服務(wù)器時(shí)非常方便。
我們可以嘗試一些可能用到的命令:
使用w命令查看當(dāng)前連接到服務(wù)器的用戶。下圖顯示只有我自己連接。
使用free -h命令查看服務(wù)器內(nèi)存使用情況。下圖顯示已使用內(nèi)存119M,Linux在這方面表現(xiàn)非常出色。
使用top命令查看系統(tǒng)進(jìn)程資源占用情況,類似于Windows任務(wù)管理器,定時(shí)刷新,按Q鍵退出。
共63個(gè)進(jìn)程,只有1個(gè)在運(yùn)行,系統(tǒng)非常干凈。不過(guò)下方看到有一個(gè)Java進(jìn)程,后續(xù)我們會(huì)處理掉它。
使用ps aux命令查看進(jìn)程詳細(xì)信息。
我們發(fā)現(xiàn)那個(gè)java進(jìn)程來(lái)自cloudmonitor,應(yīng)該是云監(jiān)控服務(wù)。
二、安裝環(huán)境
我們是為了.NET Core而來(lái),主要任務(wù)是安裝運(yùn)行時(shí)環(huán)境。
為了方便和一勞永逸,我們采取快捷方式,先看看我的配置:
打開(kāi)xshell的快速命令工具欄,然后添加幾組快捷命令:
按鈕“.Net Core”(注意:最后一行命令后面必須有一個(gè)換行,否則最后命令無(wú)法得到執(zhí)行,下同)
按鈕“.Net Core SDK”
按鈕“Asp.Net Core”
按鈕“卸載.Net Core”
具體功能就不介紹了,來(lái)源于:https://www.php.cn/link/9d88196d9b43925ec4093e0228fd7803
我們嘗試第一個(gè)按鈕,安裝.NET Core運(yùn)行時(shí),不包括ASP.NET Core和.NET Core SDK。
上圖顯示,已安裝.NET Core運(yùn)行時(shí)2.1.1。
您可以使用卸載按鈕,然后再安裝另外兩個(gè),看看有什么不同。
三、部署應(yīng)用
使用visual studio 2017新建一個(gè).NET Core控制臺(tái)項(xiàng)目。
在NuGet中引用NewLife.Core,建立一個(gè)稍微高級(jí)一點(diǎn)的示例。
代碼語(yǔ)言:JavaScript 代碼運(yùn)行次數(shù):0
運(yùn)行 復(fù)制 “`javascript Static void Main(String[] args) { XTrace.Useconsole(); var svr = new ApiServer(1234) { Log = XTrace.Log, EncoderLog = XTrace.Log, StatPeriod = 5 }; var ns = svr.EnsureCreate() as NetServer; ns.SocketLog = XTrace.Log; ns.SessionLog = XTrace.Log; ns.LogSend = true; ns.LogReceive = true; svr.Start(); Console.ReadKey(); } “`
如上,我們使用ApiServer建立一個(gè)rpc服務(wù),并打開(kāi)所有調(diào)試日志,它內(nèi)置有兩個(gè)服務(wù)接口,方便測(cè)試RPC通信。
編譯并發(fā)布為可移植應(yīng)用程序:
我們會(huì)得到一個(gè)包含dll文件和runtimeconfig.json文件的目錄,這些是運(yùn)行所必需的文件。
使用xshell連接到服務(wù)器,這里可以是centos.newlifex.com。
在xshell工具欄上有一個(gè)綠色圖標(biāo),點(diǎn)擊打開(kāi)xftp,左窗口地址欄進(jìn)入剛才的發(fā)布目錄,右窗口新建/root/ApiServer目錄,并將左邊的必要文件拖到右邊,即可實(shí)現(xiàn)上傳!
回到xshell中,使用cd ApiServer進(jìn)入目錄,執(zhí)行dotnet ConsoleApp5.dll即可運(yùn)行應(yīng)用程序(前提是已安裝.NET Core運(yùn)行時(shí))。
客戶端使用碼神工具XCoder(https://www.php.cn/link/88275708422d0942423446f76b49e8fb Core應(yīng)用程序已成功在CentOS上運(yùn)行。
僅僅運(yùn)行還不夠,有時(shí)候我們還需要查看應(yīng)用程序的工作日志。仍然使用xftp,刷新右側(cè)窗口,可以看到多出了Log目錄,這就是我們的應(yīng)用程序日志,右鍵傳輸即可下載到本地,當(dāng)然也可以簡(jiǎn)單直接地拖到左邊。
使用vscode打開(kāi)日志文件,可以看到非常詳細(xì)的信息,特別是日志頭部,有助于分析和查找問(wèn)題。
四、總結(jié)
這篇面向Linux零基礎(chǔ)的Windows工程師的極簡(jiǎn)教程終于寫(xiě)完了,基本上足以應(yīng)對(duì)八成以上的日常工作。
其他更多細(xì)節(jié),可以在網(wǎng)上找到,例如如何將應(yīng)用程序安裝為服務(wù)、如何實(shí)現(xiàn)開(kāi)機(jī)啟動(dòng)等等。
綜合過(guò)去20年編寫(xiě)代碼的經(jīng)驗(yàn),.NET Core具有極強(qiáng)的優(yōu)勢(shì),盡管存在一些小問(wèn)題,但我必須說(shuō),只要微軟不放棄,我堅(jiān)決不放棄!
我是大石頭,從1999年開(kāi)始,19年的老碼農(nóng)。目前在快遞行業(yè)從事數(shù)據(jù)分析架構(gòu)工作,分析路上的上億包裹。歡迎大家一起探索C#大數(shù)據(jù)!
End.