让 asp.net 在 mac 上飞

.NET
不跨平台一直饱受争议,虽然微软前端时间放出些消息,要支持.NET跨平台的发展,但是微软一直坚持着不主动、不拒绝、不负责的三不态度,仍然用一种软件帝国的心态,折腾着一些毫无新意的东西。微软想要重新获得大众的尊重和认可,必须丢弃一些传统的观念,积极听取开发者的声音,和开发者站在一起共同发展,而这似乎看起来任重而道远。

跨平台是一种趋势,到最后,微软也不得不低头。mono 一直在微软的白眼下发展,到如今也算是非常不错了,虽然还不能支持.NET
Framework 的全部特性,但对我们来说已经够用了,目前它已经支持 C# 4.0、ASP.NET MVC 4,也有很多开源组件把是否兼容 mono
框架作为一项重要指标。

作为一个企业来讲,降低硬件设备成本是实施一套软件系统重点要考虑的事情,很多企业为了节约成本,不得不选择其他一些低造价的编程语言,如
java、 php 等,这也是园子里面某些 .neter 们自觉低人一等的重要原因,也是 javaer 们经常大骂 .net 的常用手段,有了 mono,
你可以构建更为廉价的解决方案,让那些不懂装懂,鄙视你们的人去死吧。

今天我就要把 asp.net 程序搬到 mac 上去运行。

我们都知道 asp.net 程序不能单独运行,必须把它托管到 web 应用服务器上,在 windows 上我们基本上就是
IIS,IIS非常强大,管理也方便,在 mac 上我们装不了 IIS ,但我们还有别的工具,因为不管什么 web 应用服务器他们的原理都差不多,无非就是监听
http 请求,然后根据我们设置的路由规则把请求映射并转发到对应的处理程序上。

支持 mono 的应用服务器有很多,如 apache,nginx 等。

apache 不用多说,高大上的 java 界是个人都知道的东西,但我今天用的是 nginx。nginx 通常结合
keepalive 来做负载均衡,但它也是一个非常强大的 http 服务器。

第一步,下载:

这里去下载 nginx 。我这里选的是 1.2.9 的版本,目前最新的是 1.7.1,别问我为什么不用最新版的,因为我从
1.4.0 装到 1.7.1,没一次在我的 mac 上装成功了,我也不想折腾了,伤身啊。

第二步,解压:

下载好了,我们进入 downloads
目录解压:

zhaoguihuadediannao:/ zhaogh$ cd ~/download

zhaoguihuadediannao:downloads zhaogh$
tar nginx-1.2.9.tar.gz

第三步,安装前的配置

zhaoguihuadediannao:downloads zhaogh$
cd nginx-1.2.9

zhaoguihuadediannao:nginx-1.2.9 zhaogh$
sudo ./configure --prefix=/usr/local --with-http_ssl_module

这里主要是指定 nginx 的安装路径。

第四步,编译安装

zhaoguihuadediannao:nginx-1.2.9 zhaogh$
sudo make

zhaoguihuadediannao:nginx-1.2.9 zhaogh$
sudo make install

第五步,运行测试

zhaoguihuadediannao:nginx-1.2.9 zhaogh$
cd /usr/local/sbin

zhaoguihuadediannao:sbin zhaogh$ sudo
./nginx

在浏览器打开 http://localhost/
,如果能看到下面几个字,那么我想恭喜你,你的努力没白费,哥看到了你的成长和进步,可哥的辛苦又有几人看到,我为了这几个字折腾了好久。

Welcome to nginx!

想要我们做的 asp.net 程序能够在 nginx 上运行,光上面几步还不行,我们还要做一些基本的配置。

第六步,编辑配置

用 vi 打开 nginx.conf  文件

zhaoguihuadediannao:~ zhaogh$ cd
/usr/local/conf

zhaoguihuadediannao:conf zhaogh$ vi
nginx.conf

修改下面标颜色的内容,其他的不用动:

server {
listen 80;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log
main;

location / {
root
html;
index index.html index.htm
Default.aspx default.aspx;
fastcgi_index Default.aspx;
fastcgi_pass 127.0.0.1:9000;
include
/usr/local/conf/fastcgi_params;
}

然后修改 /usr/local/conf/fastcgi_params 文件,加上下面几行:

#
mono
fastcgi_param PATH_INFO
"";
fastcgi_param
SCRIPT_FILENAME $document_root$fastcgi_script_name;

第七步,启动 fastcgi-mono-server:

zhaoguihuadediannao:~ zhaogh$
fastcgi-mono-server2 /applications=localhost:/:/projects/website/
/socket=tcp:127.0.0.1:9000

记得把 /projects/website/ 这段改成你的程序目录,这个程序我是直接用 xamarin 模板做的一个
web application 。

第八步,启动 nginx:

zhaoguihuadediannao:conf zhaogh$ sudo
/usr/local/sbin/nginx -s quit

zhaoguihuadediannao:conf zhaogh$ sudo
/usr/local/sbin/nginx

zhaoguihuadediannao:conf
zhaogh$

现在我们再到浏览器上输入 http://localhost/
看看什么结果,有图有真相,绝不忽悠。

你完全可以把你在 vs 上做的 asp.net mvc 程序用 xamarin 编译好之后,放在 nginx
上去运行,不信你可以去试一试。我们也要响应党的号召,少用或是不用 windows 系统,以后再有客户跟你说 .net
不上档次,你就让他去死吧。

时间: 2024-11-10 08:38:15

让 asp.net 在 mac 上飞的相关文章

让ASP.NET5在Jexus上飞呀飞

就在最近一段时间,“Visual Studio 2015 CTP 5”(以下简称CTP5)发布了,CTP5的发布不仅标志着新一代的VisualStudio正式发布又向前迈出了一步,还标志着距离ASP.NET5(vNext)的正式发布不远.跟随者CTP5,KRE也从Kre beta-1.0升级到了Kre beta-2.0. 与众多.NET开发者一样,我们也一直在密切的关注ASP.NET5的发展,而作为领先的Linux.NET WebServer服务器更是如此,早在Kre beta-2.0发布前后,

centos6.5+jexus5.6.3+mono 3.10实践,让asp.net在linux上飞一会儿

备忘,这是给自己看的,用ubuntu server装mono 3.10老是卡在了编译libgdiplus上面,从来就没成功过,郁闷啊,零零散散搞了好几天,作罢.后来试了OpenSUSE 11很容易搞好了,但是不熟悉这个系统,后来坚持还想搞ubuntu server还是失败了,万般无耐,发行每回都是装的64位的ubuntu server,后来试32位的,还是不成功.后来就试centos了.一次成功.记录下来怕忘记了.要点是不能去git上down最新的源码,下个正式发布的tar包,就可以了. 步骤如

Mono 4.0 Mac上运行asp.net mvc 5.2.3

Mono 4.0 已经发布,二进制包已经准备好,具体的发布说明参见:http://www.mono-project.com/docs/about-mono/releases/4.0.0/. 今天在Mac上更新了Mono 4 和Xamarin Studio 5.9. 使用Xamarin Studio 创建了一个asp.net mvc 项目: 模版使用的是5.2.0 版本的,目标框架是Mono/.NET 4.5,我通过Nuget 更新到了5.2.3 , 更新包的过程中需要调整下web.config

【翻译】在Mac上使用VSCode创建你的第一个Asp.Net Core应用

Setting Up Your Development Environment 设置你的开发环境 To setup your development machine download and install .NET Core and Visual Studio Code with the C# extension. Node.js and npm is also required. If not already installed visit nodejs.org. 首先在你的机器上下载.Ne

在Mac上运行ASP.NET 5

原文:http://stephenwalther.com/archive/2015/02/03/asp-net-5-and-angularjs-part-7-running-on-a-mac 这篇文章中, 我会把之前的ASP.NET 5 项目在我的Mac上运行起来. 安装 Mono 首先你得安装Mono. Mono项目独立于Microsoft. Mono是一个.NET运行在Mac OSX和Linux上的开源实现. http://www.mono-project.com/download/ 安装M

ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.

在ASP.Net Core 2.0的项目里, 我使用Entity Framework Core 2.0 作为ORM. 有人习惯把数据库的连接字符串写在appSettings.json里面, 有的习惯写死在程序里, 有的习惯把它放在launchSettings.json里面(只放在这里的话迁移命令就找不到连接字符串了吧). 我习惯把连接字符串写成系统的环境变量. 我这个项目数据库的连接字符串的变量名是 “MLH:SalesApi:DefaultConnection”, 在windows 10上,

一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说最大的问题是标准不统一云云,但在我看来,最大的问题在于两个方面,一个是价格,一个是操作的简便性,技术上的问题并不是阻碍智能家居推广的核心因素. 再来说说最近很火很惹人爱的微软小娜,Cortana.本人作为微软的死忠,作为一名靠.Net混饭的屌丝程序男,自然是有一部撸妹的,并且在小娜推送当天更新了手机

尝试在Mac上编译DNX

自从XRE改名为DNX至今,从来没有在Mac OS X上成功编译过DNX.一直很纳闷,难道DNX的开发人员不用Mac?今天突然明白了,DNX的开发人员真的不用Mac.而且DNX用的2个持续集成服务AppVeyor与Travis,一个是Windows环境,一个是Linux环境,就是没有Mac OS X环境. 看来不能指望DNX的开发人员短期内解决这个问题了,只能自己动手. 编译的错误信息如下(编译命令./build.sh): Restore complete, 725ms elapsed info

剖析并利用Visual Studio Code在Mac上编译、调试c#程序

0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很不错的文档编辑器.不过匹夫更关心的是它的跨平台能力,这不,匹夫偷得半日闲,写篇小文来聊聊在Mac上如何使用Visual Studio Code编译和调试C#代码,最后匹夫也会尝试把Visual Studio Code嵌入Unity3D中,作为一个准“IDE”使用. 0x01 Visual Studi