一起谈.NET技术,ASP.NET MVC3 on Mono的折腾(二):Linux(openSUSE)下的部署

简介:   续上篇介绍Mono在Window下的部署,对于我而言,相比于Windows平台下的部署,Linux平台下的部署挑战性会更大一点。从来没有Linux使用经验的我,要在Linux下部署Mono,遇到的不仅仅是Mono部署的问题,还有各种Linux操作的问题。

  续上篇介绍Mono在Window下的部署,对于我而言,相比于Windows平台下的部署,Linux平台下的部署挑战性会更大一点。从来没有Linux使用经验的我,要在Linux下部署Mono,遇到的不仅仅是Mono部署的问题,还有各种Linux操作的问题。我是使用的从Mono官方下载的安全配置好的虚拟机,安装方面的问题就可以暂时先跳过去,不过这里还是要先总结一下,先熟悉一下的几个常用的openSUSE操作。

  1)配置网卡,进行文件管理都需要超级用户(su)密码,官方下载的虚拟机,su密码是:mono。刚开始不知道,还是小小的折腾了一会儿。其实,访问http://localhost 的默认首页就有这个用户密码的说明了。

  2)apache的配置路径是在:/etc/apache2/。站点的默认目录是在:/srv/www/htdocs/,你会频繁在这两个目录做切换。

  3)要修改配置你需要用超级用户的权限打开文件管理器,这个也是让我花了一些时间去查找。解决方案是创建一个命令行的快捷方式就可以了,看这个贴子

  4)重启apache的命令行:/etc/init.d/apache2 restart

  5)如果需要,最好去扫盲一下什么是,YaST,什么是安装源。Linux下,动不动就要下源码编译安装,吓都吓死人了。使用的VPC是之前下载的,装的是Mono 2.8,昨天就是利用YaST自动升级到Mono 2.10。

  事后总结,在Linux下部署Mono ASP.NET,主要是没有像IIS那样可视化的操作,都是命令行,看起来就是恐怖,但其实并没有的想像中的那么复杂。我们要先把官方的几个文档(Mod_monoAutoHostingApache mod_mono configuration tool)先熟悉一下,了解一下工作原理,再动手实施可能会少走一些弯路。另外一条教训就是,先部署低版本的,简单的,再尝试新版本刚支持的特性,比如先部署简单的ASP.NET WebForm页面(简单的一个页面),再部署MVC站点;先部署MVC1.0,再部署最新的MVC3.0,这样即使出错也更利于我们排错。刚开始直接折腾MVC3,那个杯具啊。

  官方文档中介绍,在openSUSE+Apache有两种部署方式:自动Hosting和手工创建配置文件部署:

  1.自动Hosting,只需做一次Apache配置,以后的部署Mono站点就只需要Xcopy到站点目录下就可以了,不需要再做额外部署。参考AutoHosting,主要步骤:

1)在/etc/apache2/httpd.conf添加:Include /etc/apache2/mod_mono.conf (这个文件在openSUSE 11.3的实际路径是Include /etc/apache2/con.d/mod_mono.conf),引入mod_mono的配置。

2)在mod_mono.conf文件中添加这一行:MonoAutoApplication enabled。在官方文档中,还需要加入:MonoServerPath "/usr/bin/mod-mono-server2",但实际上好像不需要。而且我改成:MonoServerPath "/usr/bin/mod-mono-server4",它也不工作,不知道是什么问题。

3)如果是部署MVC站点,还需要在mod_mono.conf文件中加入这行:ForceType application/x-asp-net。但是对MVC站点,不推荐使用自动Hosting。

  当我做了以上配置之后,我们在部署ASP.NET站点时,就只需要把目录拷贝到/srv/www/htdocs/就可以完成部署了。文件目录对应的就是站点的虚拟目录。

  2.手工创建部署文件,看完善友兄的这篇文章在Mono 2.8上部署ASP.NET MVC 2,我有点晕。那个配置文件就足以让我头痛,之前这篇文档Apache mod_mono configuration tool一直都被我无视着。当我完整的看完几个官方文档之后,我才意识到这个工具的重要性。这个工具会根据我们希望部署的站点的情况,提供几个输入框让我们输入,之后我们就可以下载它生成的配置文件,直接将这些配置文件下载放到:/etc/apache2/conf.d/  而不需要再做其它配置站点就可以正常工作。

  3.最土的部署办法,就是看看内置的那几个站点是如何部署的,直接把它的几个配置文件拷贝一下,修修改改也一样可以。在刚开始,我没有按正常流程来的时候,实在搞不清楚了,我用这种办法也一样把站点部署成功了。而且还是直接部署MVC3站点。

  总结到这里,我发现在Linux下部署Mono ASP.NET也不是很难的事情嘛。只是一开始走的弯路有点多,心情有点急躁。不过,上篇中提到的MVC3的几个问题,在Linux下面也是同样存在的,应该可以判断是Mono2.10存在的bug吧,不过这bug也太过低级吧,难道他们没有测试提交的情况?如果是这样,希望能尽快解决这些bug。

目录
相关文章
|
2月前
|
Linux 虚拟化
Vmware 傻瓜式安装(不可不知道的Linux基础知识和技术 01)
本文介绍了VMware虚拟机的下载与安装步骤。首先,通过提供的网盘链接下载VMware安装包。接着,详细描述了安装流程,包括接受协议、选择安装路径(建议避免系统C盘)、取消更新选项等。最后,输入许可证密钥完成安装,并展示了打开虚拟机后的主界面。整个过程简单易懂,适合新手操作。
145 1
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
44 7
|
3月前
|
安全 Linux Android开发
Linux CFI (Control-flow integrity)技术相关资料汇总
Linux CFI (Control-flow integrity)技术相关资料汇总
|
4月前
|
存储 监控 Linux
在Linux中,如何进行虚拟化技术的应用?
在Linux中,如何进行虚拟化技术的应用?
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
64 0
|
4月前
|
Linux C# C++
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
|
4月前
|
存储 分布式计算 负载均衡
在Linux中,什么是集群,并且列出常见的集群技术。
在Linux中,什么是集群,并且列出常见的集群技术。
|
4月前
|
Linux KVM 虚拟化
在Linux中,什么是虚拟化?并且列出常见的虚拟化技术。
在Linux中,什么是虚拟化?并且列出常见的虚拟化技术。
|
4月前
|
Kubernetes Linux KVM
在Linux中,有哪些虚拟化技术?
在Linux中,有哪些虚拟化技术?
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
49 0