目前 ASP.NET5 环境仅对 Ubuntu 支持得比较好,而使用 yum 的几个 Linux 则需要花一些时间去安装了(理论上讲 mono 提供了 yum 的包,但实际安装的时候报缺少 libpng15.so,并没有找到任何方法修复). OS X 和 Windows 当然是一路绿灯并没有什么问题. 不巧的是我的 Amazon EC2 跑的是 Amazon Linux,折腾了一个礼拜才最终搞定.
首先当然是安装 mono. 安装过程可以参考 mono 官方的教程. (需要先安装 git 和 make)
1 2 3 4 5 |
git clone https://github.com/mono/mono.git cd mono ./autogen.sh make make install |
注意:编译安装 mono 需要花费较长的时间.
如果是安装到默认位置,那应该是在 /usr/local/bin/mono,这样的话有可能无法执行 sudo mono. 如果需要用管理员身份执行,创建一个 /usr/bin/mono 的链接:
1 |
ln -s /usr/local/bin/mono /usr/bin/mono |
接下来编译安装 libuv:
1 2 3 4 5 6 7 |
sudo git clone https://github.com/libuv/libuv.git cd libuv sudo sh autogen.sh sudo ./configure sudo make sudo make install sudo ldconfig |
安装 dnvm:
1 |
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh |
执行 dnvm 来检测是否安装成功. 如果提示找不到命令 dnvm,尝试执行 source ~/.dnx/dnvm/dnvm.sh 来安装 dnvm. 然后执行 dnvm upgrade 安装最新版本的运行时.
接下来要安装证书. 在 Windows 下,.NET 会使用 Windows 管理的证书,但 Linux 并没有这个机制,因此 mono 自己维护了一套证书管理系统. 而在刚安装完的状态下,这个证书库是空的,也就是说 mono 会拒绝发起任何 https 请求,这也就意味着,当执行 dnu restore 的时候讲无法访问 https://www.nuget.org/ (这就像是装完 Ubuntu 结果 apt-get 的时候拒绝执行因为 Ubuntu 不信任 http://archive.ubuntu.com/,当然这里并没有用 ssl).
1 |
mozroots --import --sync |
现在运行环境已经安装完毕了,可以用 dnx . kestrel 来用 Kestrel 运行 ASP.NET5 项目. 但后台运行则需要一些设置. 写 init.d 的脚本是一种方法,但这里我使用了 supervisor 来管理后台运行的程序. 这里有几个注意点:dnvm dnu 及 dnx 默认是安装在用户目录下的,其他用户不能通过直接输入 dnx 来运行,必须输入完整路径;包也是默认存放在用户目录下的,需要通过环境变量的方式手动指定路径. 以下是 supervisor 配置文件的范例:
1 2 3 4 5 6 7 |
[program:your_aspnet_project] directory=/path/to/your/project environment=DNX_PACKAGES="/home/your-user-name/.dnx/packages" command=/home/your-user-name/.dnx/runtimes/dnx-mono.1.0.0-beta6/bin/dnx . kestrel autostart=true autorestart=true user=your-user-name |
至此一个能后台运行的 ASP.NET5 应用就配置完成了.
0 条评论。