2025-07-28 麒麟V10中部署.net core項目,并設(shè)置開機自啟動 以.net6為例

本來不想寫后端了,沒想到最近用到了獲取硬件信息的接口,不過對方只提供TCP協(xié)議接口,前端沒法直接調(diào)用,只好又把.NET拾起來。哎好久沒用了。。。。

第一部分 .net core環(huán)境部署

1、.net core runtime下載

下載地址:https://dotnet.microsoft.com/en-us/download/dotnet/6.0
頁面的右側(cè)是runtime 左側(cè)是SDK,下載右側(cè)的二進制版本Binaries,根據(jù)麒麟系統(tǒng)的CPU 選擇合適的版本:X86 、arm架構(gòu)32、64位自己找到下載文件,我自己的服務(wù)器是X86_64的,所以我直接下載X64版本,下載的文件名是:aspnetcore-runtime-6.0.36-linux-x64.tar.gz

2、發(fā)布.net core webapi

開發(fā)完的.net core webapi發(fā)布到文件夾中,本文發(fā)布到publish文件夾中,然后壓縮成publish.zip

3、將上述兩個壓縮包都復(fù)制到麒麟系統(tǒng)中

我這里都放到路徑:/home/administrator/kfq/donet中
(1)執(zhí)行命令:zip publish.zip,將其解壓到/home/administrator/kfq/donet/publish目錄
(2)執(zhí)行命令:tar zxvf aspnetcore-runtime-6.0.36-linux-x64.tar.gz -C dotnet,將其解壓到/home/administrator/kfq/donet/dotnet目錄

4、配置.net core全局變量

編輯文件vim /etc/profile,在最后面添加:
export DOTNET_ROOT=/home/administrator/kfq/donet/dotnet
export PATH=/home/administrator/kfq/donet/dotnet
如果已經(jīng)有PATH變量了,則在后面加:后再加/home/administrator/kfq/donet/dotnet,下面是示例:
export PATH=$PATH:/home/administrator/kfq/donet/dotnet

5、更新系統(tǒng)全局變量

執(zhí)行命令:source profile
執(zhí)行完就可以再執(zhí)行:dotnet --info或者dotnet --version,看時候出來dotnet的信息,出來了就說明.net core6部署成功了。

6、運行.net core程序

通過命令:dotnet /home/administrator/kfq/donet/publish/net6webapi.dll(和exe文件同名,項目名)就可以啟動.net core程序了。

第二部分 .net core程序開機自啟動

1、創(chuàng)建 Systemd 服務(wù)文件

在 /etc/systemd/system/ 目錄下,創(chuàng)建一個新的服務(wù)文件 swdotnet.service,我直接用touch命令創(chuàng)建的文件編輯不了,不知道什么原因,后來我就直接在外面把文件寫好,然后復(fù)制到這個目錄中了。文件中的代碼如下所示:

Description=SwWeb .NET Core Application
After=network.target
 
[Service]
WorkingDirectory=/home/administrator/kfq/donet/publish
ExecStart=/home/administrator/kfq/donet/dotnet/dotnet /home/administrator/kfq/donet/publish/net6webapi.dll
Restart=always
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://0.0.0.0:5000
 
[Install]
WantedBy=multi-user.target

解釋上面每個變量的意思:
[Unit] 部分定義了服務(wù)的描述和依賴關(guān)系。在這里,服務(wù)需要在網(wǎng)絡(luò)配置完成后啟動。
[Service] 部分定義了如何啟動你的應(yīng)用。
ExecStart 行指定了如何啟動 .NET Core 應(yīng)用。
WorkingDirectory 指定了工作目錄,就寫dll文件的目錄就行。
Restart=always 保證服務(wù)在崩潰時會自動重啟。
[Install] 部分告訴 Systemd 在系統(tǒng)啟動時如何處理這個服務(wù)。
WantedBy=multi-user.target 表示該服務(wù)將作為多用戶模式的一部分啟動。

以上代碼中我試過ExecStart=dotnet /home/administrator/kfq/donet/publish/net6webapi.dll,卻不行,不知道為什么。而且會遇到很多問題,可以看系統(tǒng)日志來排查,看日志的命令:tail -n 20 /var/log/syslog。有個遇到的問題是提示我的文件有可執(zhí)行權(quán)限,要把這個權(quán)限去掉,運行命令:sudo chmod 644 swdotnet.service。就行了。

2、下面的代碼是其他人寫的,我記錄下,上面成功了,可以直接看第三步。

沒試過,我自己成功的就是上面的代碼,下面的好像設(shè)置了用戶和組,反正我沒設(shè)置也跑起來了。

[Unit]
Description=DCOWebhook ASP.NET Core Web API
After=network.target

[Service]
WorkingDirectory=/var/www/dco
ExecStart=/usr/bin/dotnet /var/www/dco/DCOWebhook.dll --urls "http://0.0.0.0:5000" #換成需要監(jiān)聽的端口
Restart=always
# 用戶和組
User=www-data
Group=www-data
# 環(huán)境變量
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

解釋下參數(shù)。User 和 Group:推薦使用非 root 用戶(如 www-data)運行服務(wù),提升安全性。

3、設(shè)置開機自啟動

主要是以下四個命令:
(1)sudo systemctl daemon-reload。每次修改了服務(wù)文件,都需要讓 Systemd 加載新的配置。執(zhí)行這個命令。
(2)sudo systemctl enable yfweb.service。讓服務(wù)在開機時自動啟動
(3)sudo systemctl start yfweb.service。立即啟動服務(wù)
(4)sudo systemctl status yfweb.service。如果服務(wù)運行正常,狀態(tài)應(yīng)顯示為 active (running)。你應(yīng)該會看到服務(wù)正在運行,并監(jiān)聽指定的端口
這樣設(shè)置后如果沒報錯,就成功設(shè)置了開機啟動,如果有問題,那就要具體問題具體分析了,主要是看下系統(tǒng)日志。

4、以下幾個是我參考的文章,也賦在下面把。

https://cloud.tencent.com/developer/article/2491778
https://blog.csdn.net/weixin_48916144/article/details/147371288
https://blog.csdn.net/liqz2009/article/details/122377218
http://blog.tool90.com/331.html

?著作權(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)容