[料理佳餚] 在 CentOS 7 上執行 ASP.NET 5(MVC 6)

一直想嘗試將 .Net 的 Application 部署到 Linux 的平台上,而最近看到了 asp.net/home 的 Sample 有三個 Project 分別是 ConsoleApp, HelloMvc, HelloWeb,對於要建置一台 Web 或 WebApi 伺服器而言已經足夠,所以決定先挑 ASP.NET MVC 來試試看。

先用 VirtualBox 把 CentOS 7 裝起來。

對於 Linux 我還是個新手,安裝過程就照著書上的建議一步一步執行,過程很順利沒什麼問題。

再來用 Visual Studio 2015 的 ASP.NET 5 範本新增一個範例網站。

在新增範例網站的過程當中遇到一些問題,我記錄在另一篇文章裡面 [料理佳餚] ASP.NET 5 從 beta5 升級到 beta6,確認 Visual Studio 2015 可以成功執行範例網站。

接著在 CentOS 上建立執行環境。

安裝 Mono JIT compiler

rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
yum update
yum install mono-complete

檢查 Mono JIT compiler 版本,確認有安裝成功。

mono --version

2015/09/18 更新:上完保哥的課,回家實驗一下,Mono JIT compiler 是可以不用裝的。

安裝 DNVM

curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx dnvm/dnvm.sh
dnvm upgrade

檢查 DNVM 版本,確認有安裝成功。

dnvm

檢查已安裝的 DNX 版本

dnvm list

檢查已安裝的 DNX 別名

dnvm alias

安裝 libuv API

yum install automake libtool
curl -sSL https://github.com/libuv/libuv/archive/v1.7.0.tar.gz | sudo tar zxfv - -C /usr/local/src
cd /usr/local/src/libuv-1.7.0
sh autogen.sh
./configure
make
make install
rm -rf /usr/local/src/libuv-1.7.0 && cd ~/
ldconfig

如果 ASP.NET 5 是用 x64 建置的,必須為 libuv API 建立一個 Symbolic Link 到 /usr/lib64 目錄。

ln -s /usr/local/lib/libuv.so /usr/lib64/libuv.so.1

到這邊如果一切順利的話,基本上 ASP.NET 5 所需要執行的環境一切就緒。

調整 project.json 的設定

由於 ASP.NET 5 是用 Kestrel 這個 Web Server 套件來 Host ASP.NET 的服務,所以我們在 Windows 上用 Visual Studio 2015 將網站開發完成後,必須針對 Kestrel 這個套件建立相依性及進行設定。

複製檔案到伺服器上

將開發完成的網站整包(包含 Source Code)想辦法複製到 Linux 底下,目錄請隨意。

執行套件還原

切換目錄到與 project.json 同目錄底下,執行套件還原。

dnu restore

啟動 Kestrel Web Server

dnx . kestrel

瀏覽範例網站

其他有使用到的 Linux 指令

#檢查防火牆狀態
systemctl status firewalld

#關閉防火牆
systemctl stop firewalld

#啟動防火牆
systemctl start firewalld

#關閉防火牆服務
systemctl disable firewalld

#啟動防火牆服務
systemctl disable firewalld

#執行 DNVM
source ~/.dnx/dnvm/dnvm.sh

#啟動 Kestrel Web Server
dnx /usr/local/src/AspNet5Lab/src/AspNet5Lab/ kestrel

參考資料

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學