Amazon Linux 编译安装 mono 并后台运行 ASP.NET5 应用(supervisor)

目前 ASP.NET5 环境仅对 Ubuntu 支持得比较好,而使用 yum 的几个 Linux 则需要花一些时间去安装了(理论上讲 mono 提供了 yum 的包,但实际安装的时候报缺少 libpng15.so,并没有找到任何方法修复). OS X 和 Windows 当然是一路绿灯并没有什么问题. 不巧的是我的 Amazon EC2 跑的是 Amazon Linux,折腾了一个礼拜才最终搞定.

首先当然是安装 mono. 安装过程可以参考 mono 官方的教程. (需要先安装 git 和 make)

注意:编译安装 mono 需要花费较长的时间.

如果是安装到默认位置,那应该是在 /usr/local/bin/mono,这样的话有可能无法执行 sudo mono. 如果需要用管理员身份执行,创建一个 /usr/bin/mono 的链接:

接下来编译安装 libuv:

安装 dnvm:

执行 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).

现在运行环境已经安装完毕了,可以用 dnx . kestrel 来用 Kestrel 运行 ASP.NET5 项目. 但后台运行则需要一些设置. 写 init.d 的脚本是一种方法,但这里我使用了 supervisor 来管理后台运行的程序. 这里有几个注意点:dnvm dnu 及 dnx 默认是安装在用户目录下的,其他用户不能通过直接输入 dnx 来运行,必须输入完整路径;包也是默认存放在用户目录下的,需要通过环境变量的方式手动指定路径. 以下是 supervisor 配置文件的范例:

至此一个能后台运行的 ASP.NET5 应用就配置完成了.

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">