.net core程序部署到 阿里云

一、準備工作

(一)創(chuàng)建一個測試程序

使用VS創(chuàng)建一個WebApi項目:

image.png

本地訪問路徑:http://localhost:5000/WeatherForecast

(二)將WebApi項目發(fā)布

image.png

發(fā)布后生成的文件


image.png

(三)下載遠程操作工具

  1. Xshell 使用 windows 遠程連接 Linux 系統(tǒng)上


    image.png
  2. winscp 使用windows 遠程上傳文件到Linux上


    image.png

二、阿里云服務(wù)器的配置

(一)購買阿里云服務(wù)器

  1. 直接在網(wǎng)上購買即可(可選擇學生服務(wù),會有優(yōu)惠)阿里云學生地址
  2. 進入控制臺,相當于查看所有的實例(其實控制臺就相當于是總的管理器)
    image.png

    若沒有實例,請先創(chuàng)建實例
    image.png

    遠程連接時會使用實例用戶與密碼,可在下圖位置進行設(shè)置
    image.png

(二)安裝 Ubuntu 的鏡像

1.如果已經(jīng)安裝了其他的操作系統(tǒng),可以重新更換操作系統(tǒng)。


image.png

image.png

自定義的密碼就是后面用遠程工具進行連接的,登錄密碼和登錄名。

(三)安全組配置

安裝組其實就是用來放行端口的。通俗來說就是管大門的。具體的可以參考這個文章::阿里云安全組詳細解說

image.png

image.png

image.png

1. 常用的幾個端口

  • 3389端口:遠程桌面的
  • 20/21端口:FTP,上傳下載文件的;文件傳輸?shù)?/li>
  • 22端口:ssh 安全登錄
  • 443: HTTPS 服務(wù)器
  • 25:e-mail 的默認端口
  • 3306端口:MySQL
  • 1521: Oracle 數(shù)據(jù)庫
  • 6379: redis 數(shù)據(jù)庫
  • 8888:寶塔面板初試接口
  • 80端口:一般做個人網(wǎng)站要配置的
  • icmp用來ping的
    2. 安裝組的參數(shù)具體含義
  • 優(yōu)先級:從一到一百的數(shù)字,數(shù)字越小,優(yōu)先級越高。
  • 協(xié)議:自定義TCP就行了(具體是干啥的我不知道)
  • 端口范圍:這個一定要寫個范圍,哪怕是只有一個端口,也還是 80/80 這么寫。
  • 授權(quán)對象: 如果我們是想讓所有的人都可以訪問,那么就是默認的 0.0.0.0 / 0
    一般配置這個的時候,都是選擇公網(wǎng)入方向,進行配置。授權(quán)對象實際上是運行方位的 ip 地址,如果允許所有的人進行訪問,就是 0.0.0.0/0 ,如果是多個用戶的話,可以中間用 , 隔開。
    3. 安全組和防火墻的區(qū)別
  • 云防火墻可以根據(jù)機器學習結(jié)果,自動將安全域進行分組;而安全組完全依賴于您靜態(tài)的手動劃分。
  • 云防火墻在訪問控制策略生效之前,存在大量的模擬過程,可以幫助您保障策略的正確性;而安全組中規(guī)則在配置之后即刻生效,一旦訪問規(guī)則配置錯誤可能直接導致業(yè)務(wù)中斷。
  • 在云防火墻中您可以監(jiān)控高危端口的訪問情況。例如,查看3306端口是否有來自外部(互聯(lián)網(wǎng))流量的訪問。
  • 云防火墻還可以幫助您進行服務(wù)器變更前的確認。例如,某個服務(wù)器需要下線時,您可以通過云防火墻查看該服務(wù)器是否仍有訪問流量,從而判斷服務(wù)器下線是否影響業(yè)務(wù)

(四)安裝寶塔(不必須,但強烈建議)

寶塔可以讓你通過瀏覽器可視化操作云服務(wù)器,允許你在一定程度上可以像使用windows一樣使用Ubuntu系統(tǒng)

  1. 寶塔安裝詳見寶塔面板安裝命令
    image.png
  2. 安裝成功后會有相關(guān)的網(wǎng)址與賬號密碼


    image.png
  3. 使用外網(wǎng)地址登錄到寶塔面板后臺,第一次會自動彈出套件推薦安裝對話框,選擇安裝“LNMP套件”


    image.png

三、安裝dotnet運行時

直接去微軟官網(wǎng)查找,對應(yīng)版本上的dotnet運行環(huán)境相關(guān)操作,此處的連接在unbuntu上安裝.net core。直接在Xshell執(zhí)行相應(yīng)的命令行,復制粘貼就可以了。具體操作如下
1.使用 APT 進行安裝可通過幾個命令來完成。 安裝 .NET 之前,請運行以下命令,將 Microsoft 包簽名密鑰添加到受信任密鑰列表,并添加包存儲庫。在終端中,運行以下命令:

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

.NET SDK 使你可以通過 .NET 開發(fā)應(yīng)用。 如果安裝 .NET SDK,則無需安裝相應(yīng)的運行時。 若要安裝 .NET SDK,請運行以下命令:
sudo apt-get update;
sudo apt-get install -y apt-transport-https &&
sudo apt-get update &&
sudo apt-get install -y dotnet-sdk-3.1

  1. 通過 ASP.NET Core 運行時,可以運行使用 .NET 開發(fā)且未提供運行時的應(yīng)用。 以下命令將安裝 ASP.NET Core 運行時,這是與 .NET 最兼容的運行時。 在終端中,運行以下命令:
  sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-3.1

4.可以執(zhí)行下邊的命令,來運行一下試試,如果安裝成功,會有反應(yīng),如果沒有安裝上,會提示錯誤

dotnet  --info

四、使用WinSCP 傳送文件

使用實例名稱與密碼將 WinScp 連接到云服務(wù)器,連接成功后,進入home 目錄,普通用戶都是在home 目錄下進行操作,一般你也可以建立一個自己的文件夾,把東西都放在同一個文件夾里,我這里創(chuàng)建了demo文件夾。將左側(cè)本地文件直接拖拽到右側(cè)的demo文件夾中,就可完成文件上傳到云服務(wù)器。


image.png

五、使用Xshell執(zhí)行dotnet 命令

在項目文件目錄下運行下面命令:

dotnet  AliyunDemo.dll
image.png

發(fā)現(xiàn) http://<云服務(wù)器公網(wǎng)IP>:<端口號> 在瀏覽器根本打不開網(wǎng)頁,于是

netstat -tnl 

查看端口5000是否正常


image.png

發(fā)現(xiàn)5000端口,只對本地127.0.0.1有效,當然我們客戶端沒法訪問了,此時有兩種方法可以云解決

  1. 修改WebApi項目中的 Programe.cs 文件


    image.png

    2.在運行命令中指定URL

dotnet  AliyunDemo.dll --urls http://*:5000

image.png

注意:
若你進行了寶塔安裝,且安裝了“LNMP套件”,此時仍然打不開網(wǎng)頁,原因是LNMP中的Nginx進行了路由,所以此時需要我們配置一下Nginx。

六、寶塔中配置Nginx

登錄到寶塔,進入管理頁面


image.png

image.png

此時再進行第五步,運行起項目,使用Nginx配置的端口80,就可以在瀏覽器中訪問到了。


image.png

七、守護進程

完成上面步驟后,雖然可以訪問了,但當Xshell關(guān)閉后,就不可以訪問了。這是因為Xshell啟動的項目是前臺進程,我們需要讓項目啟動變動后臺進程。
守護進程是安裝一個類似于Windows Service一樣的服務(wù), 能實時監(jiān)控程序狀態(tài),異常退出時能自動重啟。Supervisor 是用Python開發(fā)的Linux/Unix系統(tǒng)下的一個進程管理工具。它可以使進程(類似Windows Service)脫離終端,變?yōu)楹笈_守護進程(daemon)。能實時監(jiān)控進程狀態(tài),異常退出時能自動重啟。詳細文檔請查看官網(wǎng)。配置守護進程Supervisor, 讓我們的程序能365天24小時不間斷運行。

(一)安裝Supervisor

  1. 安裝可以使用一下命令:
sudo apt-get install supervisor

安裝成功后,supervisor就會默認啟動,有很多方法添加進程,看了很多博客上的介紹和加上我的實際使用,我認為一下方法最好用,將每個進程的配置文件單獨拆分,放在/etc/supervisor/conf.d/目錄下,以.conf作為擴展名,例如dotnetdemo.conf定義的一個簡單的HTTP服務(wù)器


image.png
  1. 文件內(nèi)容配置如下:

image.png

配置說明

[program:CoreWebTest]                         ;自定義進程名稱, 根據(jù)自己喜好命名
command=dotnet CoreWebTest.dll                ;程序啟動命令 使用dotnet 命令
directory=/home/wwwroot/CoreWebTest           ;命令執(zhí)行的目錄 你.NET Core 程序存放目錄
autostart=true                                ;在Supervisord啟動時,程序是否啟動
autorestart=true                              ;程序退出后自動重啟
startretries=5                                ;啟動失敗自動重試次數(shù),默認是3
startsecs=1                                   ;自動重啟間隔
user=root                                     ;設(shè)置啟動進程的用戶,默認是root
priority=999                                  ;進程啟動優(yōu)先級,默認999,值小的優(yōu)先啟動
stderr_logfile=/var/log/CoreWebTest.err.log   ;標準錯誤日志 路徑可以自定義
stdout_logfile=/var/log/CoreWebTest.out.log   ;標準輸出日志  路徑可以自定義 
environment=ASPNETCORE_ENVIRONMENT=Production ;進程環(huán)境變量
stopsignal=INT                                ;請求停止時用來殺死程序的信號
  1. 重啟supervisor,讓配置文件生效,然后啟動CoreWebTest進程:
supervisorctl reload
supervisorctl start CoreWebTest

到此,就可以長久正常訪問項目接口了。

supervisorctl 使用說明

supervisorctl start programxxx,啟動某個進程
supervisorctl restart programxxx,重啟某個進程
supervisorctl stop groupworker: ,重啟所有屬于名為groupworker這個分組的進程(start,restart同理)
supervisorctl stop all,停止全部進程,注:start、restart、stop都不會載入最新的配置文件。
supervisorctl reload,載入最新的配置文件,停止原有進程并按新的配置啟動、管理所有進程。
supervisorctl update,根據(jù)最新的配置文件,啟動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啟。

supervisor啟動和停止的日志文件存放在/var/log/supervisor/supervisord.log
注意:顯式用stop停止掉的進程,用reload或者update都不會自動重啟

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容