在OpenWrt 路由器上運行 asp.net core


目前只支持 OpenWrt x86_64, 所以只能在軟路由上跑。 等微軟發布ARM/ARM64 的.NET Core musl binary后就可以在普通家用路由器上運行了(只要內存夠大)
另外openwrt 的服務配置 procd 好像不支持 working directory, 只能在dotnet 加個參數 --contentroot 來指定,否則靜態文件都無法顯示

在路由器上安裝依賴 

root@OpenWrt:/# opkg install lttng-ust libopenssl libstdcpp zlib libintl-full

發布項目時需加上參數 -r linux-musl-x64  

dotnet publish -c Release -f netcoreapp2.1 -r linux-musl-x64

將生成的文件 bin\Release\netcoreapp2.1\linux-musl-x64\publish 全部復制到路由器上(我放在掛載的U盤上 )
先執行測試

root@OpenWrt:/# /mnt/sdb1/publish/myWebApp --urls http://*:81 --contentroot /mnt/sdb1/publish

添加啟動項:
編寫一個rc腳本    /etc/init.d/aspdotnet 

#!/bin/sh /etc/rc.common
USE_PROCD=1
START=99
STOP=10

start_service() {
  procd_open_instance
  procd_set_param command /mnt/sdb1/publish/myWebApp --urls http://*:81 --contentroot /mnt/sdb1/publish
  procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
  procd_set_param limits core="unlimited"
  procd_set_param stdout 1
  procd_set_param stderr 1
  procd_close_instance
}

openwrt的procd 好像沒法設置工作目錄,只能用參數 --contentroot 來指定

賦予可執行權限 

root@OpenWrt:/# chmod +x /etc/init.d/aspdotnet

啟用服務,運行服務

root@OpenWrt:/# /etc/init.d/aspdotnet enable
root@OpenWrt:/# /etc/init.d/aspdotnet start

然后就可以訪問 http://路由器地址:81/  訪問了 


免責聲明!

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



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