在Linux上以服務的方式運行ASP.NET Core站點


更新:用supervisor是更好的解決方法,詳見 Linux下為 dotnet 創建守護進程

要在生成環境下在Linux服務器上跑ASP.NET Core站點,首先要解決的問題是以服務的方式運行ASP.NET Core站點,這樣即使服務器重啟,站點也能自動運行。

Node.js中有強大的pm2,而.NET Core目前一無所有,只能自己動手實現。摸索了一個晚上,終於使用initctl命令基於Linux的upstart實現了,在這篇博文中分享一下(試驗所用的Linux服務器器是Ubuntu)。

首先在 /etc/init/ 目錄中創建一個服務配置文件,比如這里是 /etc/init/dotnet-app.conf ,並在該文件中添加如下的內容:

description     "set system dotnet-app"

start on runlevel [2345]

task

script
cd /data/AboutUs && sudo dotnet run
end script

其中加粗的部分就是運行ASP.NET Core站點的命令。

接着用下面的命令啟動服務:

initctl start dotnet-app

注:如果出現"initctl: Job failed to start"的錯誤,可以查看"/var/log/upstart/"目錄中對應的錯誤日志,比如這里是 /var/log/upstart/dotnet-app.log 。

然后用下面的命令查看服務運行情況:

# initctl status dotnet-app
dotnet-app start/running, process 862

"start/running"說明服務啟動成功,這時ASP.NET Core站點就可以正常訪問了。

最后重啟Linux服務器驗證一下,reboot命令重啟服務器,服務器啟動好之后,ASP.NET Core站點也隨之能訪問,搞定。

[更新]

還有一種解決方法就是借助supervisor,詳見 ASP.NET Core 幫助文檔中的 Publish to a Linux Production Environment


免責聲明!

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



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