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

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

 

Linux

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

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

 

ASP.NET vNext vs MONO

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

ASP.NET vNext

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

下面是 vNext 官网和其文档:

http://www.asp.net/vnexthttps://docs.asp.net/en/latest/index.html

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

解读ASP.NET 5 & MVC6系列》、《ASP.NET 5系列教程》。

MONO

其实,目前来说,.NET 跨平台,大家用的比较多的还是 MONO。官网:http://www.mono-project.com/ 

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

但是,MONO 并不支持完整的 .NET,例如 WPF、WWF 就没有在 MONO 上实现(详见:《兼容性对比》)。所以,我们可以使用一个工具来检测应用程序是否会有兼容性问题:“Mono Migration Analyzer”。

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

 

Web Server

在 Linux 在运行 MONO 可以使用 Apache、Nginx 等作为 Web 服务器,见:《 MONO ASP.NET》、《mod_mono》。另外,国人编写的 Jexus 服务器也是比较流行的,对 .NET 支持非常好,用起来很简单。所以我们选择了最简单的 Jexus 服务器,降低学习的难度。

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

 

最终运行环境

Linux(OpenSUSE)+MONO+Jexus+MVC5+Rafy+Oracle。

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

不过还是发现了很多的兼容性问题。比较多的情况是由于 Linux 是大小写敏感的,而 Windows 并不敏感,所以程序中大量的文件在 Linux 上‘找不到’。另外,Windows 中的路径分隔符是’\’,而 Linux 中是 ‘/’,也导致了一些问题。关于程序移植时考虑的内容,详见:《Application Portability》。

时间: 2024-10-31 01:25:27

跨平台运行 Rafy 首次部署记录的相关文章

Kafka与Logstash的数据采集对接 —— 看图说话,从运行机制到部署

基于Logstash跑通Kafka还是需要注意很多东西,最重要的就是理解Kafka的原理. Logstash工作原理 由于Kafka采用解耦的设计思想,并非原始的发布订阅,生产者负责产生消息,直接推送给消费者.而是在中间加入持久化层--broker,生产者把数据存放在broker中,消费者从broker中取数据.这样就带来了几个好处: 1 生产者的负载与消费者的负载解耦 2 消费者按照自己的能力fetch数据 3 消费者可以自定义消费的数量 另外,由于broker采用了主题topic-->分区的

非常了不起的工具iNET----------帮你实现.NET项目跨平台运行.

项目 非常了不起的工具INET,实现.NET跨平台! 执行摘要 微软的.NET是一套连接信息.人.系统.设备的软件技术.此新一代的技术是基于Web服务和小模块创建的应用,可以使任何应用彼此互连并且能连接到Internet上的其他大型应用..NET的基础核心是集成开发设备(IDE), Visual Studio.NET和一种新的应用执行环境-Microsoft .net开发框架.这些系统使开发人员能够像灵活使用 Visual Basic 和C#一样开发强大的应用程序和Web服务. 但是有局限的一点

asp.net-Forms 验证在本地运行有效,部署在IIS上却无效,IIS是6版本的,是不是哪里需要设置????

问题描述 Forms 验证在本地运行有效,部署在IIS上却无效,IIS是6版本的,是不是哪里需要设置???? 做了附件下载验证用户的的程序,附件地址不能隐藏,就做了个Forms验证在本地都 正常,发布到IIS上后就无效了. Forms 验证在本地运行有效,部署在IIS上却无效 IIS是6版本的,是不是哪里需要设置???? 解决方案 看下是什么错误,最有可能是数据库的问题. 解决方案二: 理论上不需要设置,你是不是 net framework 版本不一致?? 解决方案三: 你是怎么验证form的?

Jexus 5.8.1 BETA1,全面支持ASP.NET5跨平台运行

作为一款运行于Linux/FreeBSD平台上以支持ASP.NET著称的高性能HTTP服务器和反向代理服务器,继5.6版完成对OWIN标准应用的支持后,就把着力点放到了对ASP.NET5的支持. 但是,由于ASP.NET5与之前的ASP.NET相比,不管是从运行环境还是部署方式都发生了革命性的变化,Jexus很难像"前ASP.NET时代"那样,把ASP.NET5轻易地纳入其工作进程内直接运行. 支持ASP.NET5,摆在Jexus面前有多种待选方案,比如利用OWIN协议针对ASP.NE

小白学数据分析-----&gt;首次购买记录分析方法

最近几天比较忙,大家都在问如何建立比较完整和有效的数据分析平台,说实话这个问题我考虑了很久,有效并有深度得数据挖掘与分析平台对于游戏产品的质量改善,人气.收益的提升,玩家资源的保有 ,客群分析非常有必要.众多经分系统的好处不在此处解释,且看今天讨论的内容,首次购买记录分析. 在如今道具收费的免费游戏中,首次购买记录的分析发挥着巨大的作用,这与电商的购买不太一样,还是存在很大的区别.道具收费的游戏中,道具购买是我们收益的主体,如何对于道具购买的分析是非常重要的一环. 由于道具收费的免费游戏,玩家存

实现Java程序跨平台运行的12点注意事项

程序 编写跨平台Java程序注意事项 使用Java语言编写应用程序最大的优点在于"一次编译,处处运行",然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写一个真正的跨平台的Java程序呢?下面是在编写跨平台的Java程序是需要注意的一些事情: 1. 编写Java跨平台应用程序时,你可以选择JDK1.0,1.1,1.2或支持它们的GUI开发工具如:Jbuilder,Visual Age for Java

为首次部署MongoDB做好准备:容量计划和监控

如果你已经完成了自己新的MongoDB应用程序的开发,并且现在正准备将它部 署进产品中,那么你和你的运营团队需要讨论一些关键的问题: 最佳部署实践是什么? 为了确保应用程序满足它所必须的服务层次我们需要监控哪些关键指标? 如何能够确定添加分片的时机? 有哪些工具可以对数据库进行备份和恢复? 怎样才能安全地访问所有新的实时大数据? 本文介绍了硬件选择.扩展.HA和监控.在查看详细信息之前,首先让我们处 理一个最常见的问题: 部署MongoDB和部署RDBMS有什么不同? 你会发现MongoDB作为

JIRA 敏捷开发平台部署记录

1.1 jira说明 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. JIRA中配置灵活.功能全面.部署简单.扩展丰富,其超过150项特性得到了全球115个国家超过19,000家客户的认可 1.1.1 前期准备 #准备 echo "10.0.0.1 mirrors.aliyuncs.com mirrors.aliyun.com" >> /etc/hosts yum cle

首次调用一直运行-Android 加速度传感器 app手机调用会自己不断的运行

问题描述 Android 加速度传感器 app手机调用会自己不断的运行 app 首次调用系统传感器的时候,手机没有动,传感器会一直运行,过了30几秒才会停下来,目前只有在锁屏后传感器依旧可以运行的手机上发现这个问题,其它手机暂时没有.补充:在android中使用传感器相关类获取加速表的值后,发现值在不停的变,即使是将手机平放在桌面上值也不会固定,不知道是否是灵敏度的问题,想要利用加速表测算出手机移动的距离,如果加速表的值一直变,会有很大的误差,请高手指教.手机平放桌面时,获取的x轴和y轴的值不是