1. 程式人生 > 其它 >[學習筆記].Net5專案打包到Linux系統服務時遇到的坑

[學習筆記].Net5專案打包到Linux系統服務時遇到的坑

如果按照官方文件的步驟手動安裝.Net5 會有一個坑:

在 Linux 上手動安裝 .NET - .NET | Microsoft Docs

在使用systemd打包.Net5服務的時候,無法執行,報錯如下圖:

查詢系統日誌發現對dotnet訪問沒有許可權,dotnet已設定許可權755並且service的配置檔案中User已配置為本人使用者

奇怪的是作為本人使用者登入在終端中使用dotnet是有許可權的。

好一番尋找發現,systemd會阻止位於使用者的主目錄(Home)中二進位制檔案的執行。

linux - Failed at step EXEC spawning... Permission denied - Server Fault

我一下就想起來安裝dotnet的時候完全閉眼copy的微軟文件的命令。開啟微軟文件一看,果不其然,安裝目錄是{home_path}/dotnet!!

因此重新安裝,首先下載原始碼至/usr/local/src/

 sudo wget -P /usr/local/src/  https://download.visualstudio.microsoft.com/download/pr/e10f8ecd-eb2c-42a0-a217-98a18517e12c/436b90a4d5be20456b210c406c0f7718/dotnet-sdk-5.0.405-linux-x64.tar.gz

建立名為dotnet主目錄並將二進位制檔案解壓至該目錄

sudo mkdir ../dotnet
sudo tar zxvf dotnet-sdk-5.0.404-linux-x64.tar.gz -C ../dotnet

開啟~/.bashrc檔案,末尾新增如下兩行配置DOTNET_ROOT環境變數

export DOTNET_ROOT=/usr/local/dotnet/
export PATH=$PATH:$DOTNET_ROOT

儲存並執行

source .bashr

用whereis命令檢視dotnet已經在規範的目錄中了