天天看点

跨平台运行 Rafy 首次部署记录

一直想在 linux 上使用 mono 试试运行 rafy,最近因为业务需要,总算是真正地试验了一次。下面是本次部署记录的一些要点。

linux

这次部署,我是和两位同事一起来试验的。由于我们对 linux 都不太熟悉(多年前曾经用过很少一段时间的 redhat,那些命令现在也早已忘记了,哈。),所以我们三个分别测试了三个不同的镜像,最终选定了 opensuse 的一个镜像。(其实,我下载了一个ubuntu,才 800m,安装后老是有问题,不得不放弃,悲剧……)

相对于 windows 来说,linux 更轻量,安装很简单,安装速度也非常快。

跨平台运行 Rafy 首次部署记录

asp.net vnext vs mono

这两个是目前可行的 .net 跨平台方案。我们需要快速理解两个方案,分析哪个方案的移植成本最低。

asp.net vnext

微软本身已经逐步支持开源了,所以我们的想法自然是尽量先用微软官方发布的跨平台方案。asp.net vnext(5) 目前已经发布了 rc1。但是经测试,发现整个代码构建于新的 api 之上,如果要把我们的程序移植到 vnext 之上,需要修改许多代码。所以暂时还是没有选择使用 vnext,但是长期看来,必然还是需要选择 vnext。

下面是 vnext 官网和其文档:

下面是一些 vnext 相关的系列教程:

mono

mono 可简单理解为跨平台的 .net 平台,包括运行时、框架、工具。mono 框架是 .net 框架的重写版本,其 api 尽量保持与 .net 框架一致,也支持 cli 规范,所以上层的应用程序不需要重新编译,也可以直接运行在 mono 上。所以直接使用 mono 应该是成本最低的跨平台方案。

mono 安装完成后,对其进行了测试,可正确运行即可:

跨平台运行 Rafy 首次部署记录

web server

跨平台运行 Rafy 首次部署记录

这里遇到了一个问题,jexus 服务器使用的是 iis 经典模式,导致网站 web.config 中 <system.webserver> 配置节不可用(该配置节用于 iis 集成模式)。这里,需要把该配置节中的内容都修改到 <system.web> 中对应的配置节即可。

最终运行环境

linux(opensuse)+mono+jexus+mvc5+rafy+oracle。

在上述环境中,程序总算可以运行了。

跨平台运行 Rafy 首次部署记录

继续阅读