跨平台运行 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/vnext、https://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》。
跨平台运行 Rafy 首次部署记录的更多相关文章
- hadoop记录-[Flink]Flink三种运行模式安装部署以及实现WordCount(转载)
[Flink]Flink三种运行模式安装部署以及实现WordCount 前言 Flink三种运行方式:Local.Standalone.On Yarn.成功部署后分别用Scala和Java实现word ...
- 为首次部署MongoDB做好准备:容量计划和监控
如果你已经完成了自己新的MongoDB应用程序的开发,并且现在正准备将它部署进产品中,那么你和你的运营团队需要讨论一些关键的问题: 最佳部署实践是什么? 为了确保应用程序满足它所必须的服务层次我们需要 ...
- Docker集中化web界面管理平台-Shipyard部署记录
Docker图形页面管理工具基本常用的有三种: DOCKER UI,Shipyard,Portainer.对比后发现,Shipyard最强大,其次是Portainer,最后是Docker ui.之前介 ...
- Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录
一. MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...
- ProxySQL Cluster 高可用集群环境部署记录
ProxySQL在早期版本若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数据并不能共通,在主实例上配置后,仍需要在备用节点上进行配置,对管理来说非常不方便.但是Proxy ...
- Centos7下ELK+Redis日志分析平台的集群环境部署记录
之前的文档介绍了ELK架构的基础知识,日志集中分析系统的实施方案:- ELK+Redis- ELK+Filebeat - ELK+Filebeat+Redis- ELK+Filebeat+Kafka+ ...
- Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...
- Centos下SFTP双机高可用环境部署记录
SFTP(SSH File Transfer Protocol),安全文件传送协议.有时也被称作 Secure File Transfer Protocol 或 SFTP.它和SCP的区别是它允许用户 ...
- Docker网络解决方案 - Calico部署记录
简单来说,实现docker跨主机容器间通信,常用的第三方网络方案是Flannel,Weave,Calico:Flannel会为每个host分配一个subnet,容器从这个subnet中分配ip,这些i ...
随机推荐
- PowerShell实现批量重命名文件
[string]$FileName="E:\test11" #-------------------------------------- Clear-Host foreach($ ...
- category中重写方法?
问:可以在category中重写方法吗? 答:代码上可以实现 在category中重写方法,但在实际开发中,不建议这样做.如果确实需要重写原有方法也建议使用子类进行重写. category是为了更方便 ...
- 一道返回num值的小题目
题目描述: 实现fizzBuzz函数,参数num与返回值的关系如下: .如果num能同时被3和5整除,返回字符串fizzbuzz .如果num能被3整除,返回字符串fizz .如果num能被5整除,返 ...
- 一个表缺失索引发的CPU资源瓶颈案例
背景 近几日,公司的应用团队反应业务系统突然变慢了,之前是一直比较正常.后与业务部门沟通了解详情,得知最近生意比较好,同时也在做大的促销活动,使得业务数据处理的量出现较大的增长,最终系统在处理时出现瓶 ...
- MAC Osx PHP安装指导
php.ini的位置 Mac OS X中没有默认的php.ini文件,但是有对应的模版文件php.ini.default,位于/private/etc/php.ini.default 或者说 /etc ...
- 在Windows上编译和调试CoreCLR
生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...
- C++随笔:.NET CoreCLR之GC探索(2)
首先谢谢 @dudu 和 @张善友 这2位大神能订阅我,本来在写这个系列以前,我一直对写一些核心而且底层的知识持怀疑态度,我为什么持怀疑态度呢?因为一般写高层语言的人99%都不会碰底层,其实说句实话, ...
- iOS有关横向TableView的东西
之前看到Apple store里面有横向的tableview,当然也有可能是collectionview啦. 尤其是项目中只有一条那么需要横向滑动的东西,就没有必要使用庞大的collectionvie ...
- c# 字符串连接使用“+”和string.format格式化两种方式
参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...
- Linux基础介绍【第四篇】
Linux文件和目录的属性及权限 命令: [root@oldboy ~]# ls -lhi total 40K 24973 -rw-------. 1 root root 1.1K Dec 10 16 ...