NET MVC接口服務如何運行在容器中

  有些公司內部存在一些NET項目,而公司服務器後期都換成了Linux,若單純爲這一個項目佔用一臺Windows服務器顯得極其浪費,因此需要將NET項目嵌入到Linux服務器中,爲了後期方便遷移和運維最好是Docker容器中運行。 

  新的.net core都已經支持docker,手頭有一些原來開發的asp.net舊項目,用的asp.net mvc開發的,跑在.net formwork 4.6上。

  我們的web項目要想運行,需要有一個像IIS一種的服務器組件,在這裏有兩層意思:

1.Net接口服務運行在Linux系統上

2.Net接口服務打包成鏡像運行在Docker容器中

Net接口服務運行在Linux系統上

  在linux裏我們一般使用jexus來實現這個功能,用docker鏡像的話應該有mono還要有jexus的基礎鏡像集成,也可以使用現成的鏡像azraelrabbit/monupw。

  Mono包含了一個C#語言的編譯器,一個CLR的運行時和一組類庫,並且實現了ADO.NET和ASP.NET,能夠使的開發人員在Linux下用C#開發程序。

  Jexus即Jexus Web Server,簡稱JWS是在linux平臺上的一款ASP.NET WEB服務器,Jexus並非全部由mono的.NET組件構成,非常巧妙的大量採用了Linux/Unix本身的優秀特性,從代碼層面保證了Jexus的性能優勢,同時Jexus的框架特徵也爲 高性能提供了基礎保證。
  需要注意的是Mono需要配置GDI+兼容API的庫Libgdiplus。
yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel  cairo-devel
備註:可能電腦已經安裝了這些文件,可用rpm -qa libexif*命令查看,但是這裏爲了確保萬無一失,直接全部執行。
  如何安裝Mono和Jexus請參考其他園友寫的比較仔細的教程。
  部署ASP.NET MVC項目
  jexus安裝的路徑下/usr/jexus下有一個siteconf文件夾,這裏面的每一個文件都 是一個網站的配置文件,每一個配置文件就代表一個網站,在(/usr/jexus/siteconf/)中,就已經有一個默認的網站配置文件,文件名 爲:"default";你可以修改這個配置文件,也可以將這個配置文件賦值並修改爲一個新的站點,更改端口、發佈文件虛擬根路徑。
  將編譯的文件上傳至此目錄。
  重新啓動Jexus就可以通過ip端口訪問,還要注意端口是否被防火牆攔截,需要放開或關閉防火牆。

注意:

桌面的net程序是無法通過此方式使用的,會異常。

Linux下是區分大小寫的。

Docker部署asp.net mvc站點

  用Docker部署net程序相對容易得多,首先需要Docker環境,這個不用說,再拉取已經內建了mono 和jexus 服務器的 docker鏡像 
docker pull azraelrabbit/monupw
  運行一個端點,啓動對應的服務端口22: sshd, 80: jexus,ssh工具連接主機的 2022 端口,即可連接到這個已啓動的容器內,2080主機端口爲映射的站點端口。
docker run --name cmsnet -d -p 2022:22 -p 2080:80 -v /mydata:/data azraelrabbit/monupw
  將你的mvc工程或asp.net工程複製到 /mydata路徑下. 並在ssh到容器裏用sudo 重啓一下jws . 即可訪問這個容器內的站點了,或者重啓下整個容器也可以。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章