CentOS Mono Nginx 部署 MVC4+WebApi

2023-10-27

CentOS Mono Nginx 部署 MVC4+WebApi

CentOS Mono Nginx 部署 MVC4+WebApi

经过几天的折磨,终于在CentOS上成功部署了MVC4+WebApi。Mono上的服务器推荐两种:Jexus(国产高人写的一款很牛的服务器)和Nginx(Fastcgi方式)。本文介绍Nginx如何部署MVC4+WebApi。

环境:

CentOS 6.4(32、64位)

Mono-3.2.1

Nginx 1.5.4

ASP.NET MVC 4

WebApi 1.0

 

一、首先安装一些需要的软件包

1、  首先更新CentOS上的软件包:yum –y update。

2、  安装一些需要的库:

yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel  cairo-devel

yum –y install build-essential automake autoconf libtool bison libglib2.0-dev libfreetype6-dev libfontconfig-dev gettext libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev libjpeg-dev

以上的包挺多的,但是为了保险起见,还是全部安装吧,有可能还会有缺少包的情况,就使用yum自己安装吧。

二、下载所需要的软件包

我把所有的软件包都下载在/usr/local/src中了,你也可以选择其他的位置。

    首先在命令行执行:cd /usr/local/src,然后开始下载以下软件包。

1、  Mono:由于从Mono3.0之后编译源代码需要原来有一个老的Mono环境,所以必须要下载两个版本的Mono:Mono-2.11.4和Mono-3.2.1。

Mono-2.11.4:

wget http://origin-download.mono-project.com/sources/mono/mono-2.11.4.tar.bz2

Mono-3.2.1:

wget http://origin-download.mono-project.com/sources/mono/mono-3.2.1.tar.bz2

2、  Libgdiplus:

wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.9.tar.bz2

3、  xsp:xsp是Mono提供的一个测试版本的服务器,但是也提供Nginx运行asp.net的fastcgi。

官网上的xsp是2.x的,这个版本的fastcgi-mono-server4不能用;所以需要从github上下载最新的3.0版本。(git之前,要使用yum –y intall git安装git包。)

Yum –y install git。

Git clone https://github.com/mono/xsp.git

4、  pcre:

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.bz2

5、  Nginx:

wget http://nginx.org/download/nginx-1.5.4.tar.gz

关于Nginx这个下载的是最新版本,需要自己安装,也可以使用配置yum源头的方式安装,这个安装的好处是:执行yum命令后就自动安装完了,最后还会帮你生成一个nginx的帮助命令文件,帮助你执行nginx的启动、重启和关闭等等。本文先介绍自己编译安装的情况(个人喜好这种方式,因为新版的Nginx已经添加了一些辅助命令了,以后介绍。)

三、安装软件包

1、  安装Mono:

(1)    首先安装Mono 2.11.4:执行以下命令,

转到存放目录:Cd /usr/local/src

解压:tar –jxvf mono.2.11.4.tar.bz2

转到解压后的目录:Cd mono-2.11.4

Configure:我把mono安装在usr目录下,所以执行以下命令:

./configure --prefix=/usr

编译安装:make && make install(这个过程比较漫长,去干点别的吧。)

(2)    Mono2.11.4安装完成之后,开始安装Mono3.2.1:执行以下命令:

cd /usr/local/src

tar –jvxf mono-3.2.1.tar.bz2

cd mono-3.2.1

./autogen.sh –prefix=/usr

make (这个过程也很漫长)

(3)    mono-3.2.1编译完成之后,需要先卸载掉Mono-2.11.4:

cd /usr/local/src/mono-2.11.4

make uninstall

(4)    卸载完mono-2.11.4之后开始安装mono-3.2.1:

cd /usr/local/src/mono-3.2.1

make install

(5)安装完成之后,执行一下ldconfig命令,确保新安装的动态库可以被找到。

 ldconfig 

2、  安装libgdiplus:

cd /usr/local/src

tar –jxvf libgdiplus-2.10.9.tar.bz2

cd libgdiplus-2.10.9

./configure –prefix=/usr

Make && make install

ldconfig

3、  安装xsp:

cd /usr/local/src/xsp

./autogen.sh –prefix=/usr

make && make install

4、  安装pcre:

cd /usr/local/src

tar –jxvf pcre-8.33.tar.bz2

cd pcre-8.33

./configure –prefix=/usr

make && make install

5、  安装nginx:

开始说了nginx的安装可以使用yum源的方式,也可以使用自己编译的方式,下面是自己编译的方式:

cd /usr/local/src

tar zxvf nginx-1.5.4.tar.gz

cd nginx-1.5.4

./configure –prefix=/usr/nginx(nginx安装在nginx目录里面)

make && make install

(注:第二种安装nginx的方法:http://www.cnblogs.com/highend/archive/2013/03/06/centos6_3_install_nginx_1_2_7.html

四、配置nginx:

1、  开放80端口:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

service iptables save (这句把上述规则写进防火墙中,要不以后每次都要开启80端口)

启动nginx

/usr/nginx/sbin/nginx

启动之后,就可以通过地址访问nginx了,自己访问看看吧。

2、  配置nginx:

vi /usr/nginx/conf/nginx.conf

修改server如下:

server {

         listen   80;

         server_name  localhost;

         location / {

                 root /usr/nginx/html;

                 index index.html index.htm;

                 fastcgi_index Default.aspx;

                 fastcgi_pass 127.0.0.1:9000;

                 include /usr/nginx/conf/fastcgi_params;

         }

 }

打开fastcgi_params,在最后面添加以下两句:

vi /usr/nginx/conf/fastcgi_params

fastcgi_param  PATH_INFO          "";

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

 

五、编写MVC+WebApi程序:

1、  使用vs建立mvc4项目,选择“基本”或者“空”。

2、  项目建立好后,删除对System.Web.Providers.dll的引用,这个貌似不支持,添加上去就无法执行程序。

3、  以下dll从本地复制出来放到你的项目下面,建立个libs,放到这里吧。

这些dll我已经复制出来了,放到后附件下载中,如果你不想自己一个一个的复制的话,就使用附件里面的吧。

Mvc4对应的dll:

Microsoft.Web.Infrastructure.dll

System.Web.Helpers.dll

System.Web.Mvc.dll

System.Web.Razor.dll

System.Web.WebPages.Deployment.dll

System.Web.WebPages.dll

System.Web.WebPages.Razor.dll

WebApi对应dll:

System.Net.Http.dll(注意:这个dll要复制4.0的哦,不要2.0的。)

System.Net.Http.Formatting.dll

System.Net.Http.WebRequest.dll

Webgrease对应的dll:

System.Web.Optimization.dll

 

4、  删除掉原来项目中对以上dll的引用,重新添加引用,地址为你的项目中的libs(存放你复制的dll的文件夹),注意:

Mvc4对应的dll“复制本地”都选择“True”;

WebApi对应的dll中System.Net.Http.Formatting.dll选择复制本地就可以了。

Webgrease对应的dll:System.Web.Optimization.dll选择复制本地。

5、  配置Web.config

由于我们使用了System.Net.Http.dll的4.0版本,Webgrease也有可能会因为版本问题保存,所以需要在配置文件中配置升级配置,具体如下:

<runtime>

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

      <dependentAssembly>

        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>

        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />

      </dependentAssembly>

      <dependentAssembly>

        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />

        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />

      </dependentAssembly>

      <dependentAssembly>

        <assemblyIdentity name="System.Web.WebPages"publicKeyToken="31bf3856ad364e35" />

        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />

      </dependentAssembly>

 
      <dependentAssembly>

        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />

        <bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.3.0.0" />

      </dependentAssembly>

 
      <dependentAssembly>

        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" />

        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />

      </dependentAssembly>


    </assemblyBinding>

  </runtime>

如果有runtime这个配置节,就按照这个配置,如果没有,就自己添加。其中只有WebGrease和System.Net.Http是必须的,其他可有可无。

6、  添加Controller、View和WebApi

在Controllers文件夹下添加一个HomeController控制器,然后添加一个Index视图。

然后再添加一个FirstApiController的WebApi。

7、按照文件的方式发布程序。

 

六、部署

使用ftp或者winscp等等工具,把发布好的程序上传到centos的 /usr/nginx/html中,

还有重要的一步:发布完成后,一定要修改删除Web.config中

<httpRuntime targetFramework="4.5" />

<compilation targetFramework="4.5" />

这两行,因为mono不支持<httpRuntime targetFramework="4.5" />这个中的targetFramework,为了保险起见把<compilation targetFramework="4.5" />也删除了。

七、启动

1、重启nginx

/usr/nginx/sbin/nginx –s reload

2、启动 fastcgi_mono服务器

fastcgi-mono-server4 /applications=/:/usr/nginx/html /socket=tcp:127.0.0.1:9000

 

八、开始访问吧

你以为你到这里就可以正确访问你的程序了,你要是这样认为你就错了。记得在windows下,我们输入xxx、xxx/home或者xxx/home/index就可以正确访问了,如果在mono下你也这样干,你就错了,你必须要注意url地址的大小写,如果你的Controller是HomeController,首页是Index,那你就老老实实的xxx/Home或者xxx/Home/Index这样访问,否则就提示你老死也找不到视图啊(这个简答的问题差点把我搞疯掉啊)。这些应该在nginx或者mono下面可以配置,暂时没找到配置的地方,有知道的兄弟姐妹可以告知一下啊。

总之一条:在mono下一定要注意大小写。

 

 

 

附录:使用jexus替代nginx

Jexus是个好东东啊,比nginx配置起来简单,也非常好的支持最新的mono。

1、  下载Jexus

cd /usr/local/src

wget http://www.linuxdot.net/down/jexus-5.4.3.tar.gz

2、  安装Jexus

tar -zvxf jexus-5.4.tar.gz

cd jexus-5.4

sudo ./install

3、  启动Jexus

cd /usr/jexus

sudo ./jws start

4、  部署

把你的发布文件上传到jexus对应的web目录就可以了,部署的方式和上面nginx是一样的,注意点也一样哦。

部署完成之后,直接重启jexus就可以了(sudo ./jws restart)。

然后,你就可以尽情的访问了。

 

写的有点仓促,不合理的地方,请大家指正,谢谢!

 

参考:

1、CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4

http://www.cnblogs.com/shanyou/p/3218611.html

2、在Ubuntu13.04中配置Jexus+Mono3.2运行Asp.Net Mvc 4站点 (一)

http://www.cnblogs.com/windvoice/p/3221974.html

3、Linux上搭建Asp.net MVC3环境(CentOS + Nginx + Mono)

http://www.cnblogs.com/bboy/archive/2012/10/08/2714626.html

4、CentOS上搭建Nginx + Mono 运行 asp.net

http://www.cnblogs.com/wander1129/archive/2011/12/16/mono.html

5、CentOS 6.3 - 安装 Nginx 1.2.7(yum源)

http://www.cnblogs.com/highend/archive/2013/03/06/centos6_3_install_nginx_1_2_7.html

6、FastCGI Nginx

http://www.mono-project.com/FastCGI_Nginx

 

附件:

所需要的dll附件

可以部署的项目源码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS Mono Nginx 部署 MVC4+WebApi 的相关文章

随机推荐

  • Vosviewer+Pajek实现知网社交网络(解决中文乱码问题)

    Vosviewer Pajek实现知网社交网络 一 软件准备 Vosviewer安装 下载地址https www vosviewer com download 安装JDKhttps www oracle com java technolog
  • Python+Selenium_UI自动化操作(3)——刷新页面

    UI自动化 刷新页面 语法 refresh class TestRefreshWeb unittest TestCase def setUp self setUp是一个初始化方法 为test案例做数据准备 当前方法的数据准备动作是 启动ch
  • MQTT通讯协议简介和测试 [MQTT.fx]

    一 介绍 1 MQTT简介 MQTT Message Queuing Telemetry Transport 消息队列遥测传输 是IBM开发的一个即时通讯协议 有可能成为物联网的重要组成部分 该协议支持所有平台 几乎可以把所有联网物品和外部
  • 使用 POI创建一个简单的 Excel 文件

    初级程序员一枚 看到公司大佬写的生成Excel文件 做下记录 同时也分享给大家参考 实现原理是用workBook 然后还有OutputStream 首先是一个ExcelDataBean 这个实体类 用来 声明 Excel的最大行数 最大列数
  • 用tornado ,Supervisord ,nginx架网站

    最近使用 Tornado 重写了博客 于是查看了很多关于部署基于 Tornado 开发的网站的资料 比较成熟的方案就是使用 Nginx 来做反向代理 使用 Supervisord 来作为进程管理工具 至于什么叫反向代理 为什么 Tornad
  • 小鱼深度产品测评之:阿里云低代码开发平台魔笔,一站式的应用全生命周期管理,高效解决应用研发、迭代、运维的问题。

    低代码开发平台魔笔测评 1 引言 2 购买流程 3 魔笔 3 1添加应用 3 2 应用列表 3 1 1 列表应用展示 3 2 1 列应用操作 3 2 1 1 自动保存 3 2 1 2 复制功能 3 2 1 3 编辑功能 3 2 1 4 删除
  • (二)Android导航栏和菜单资源的结合使用

    ActionBar是Android3 0的重要更新之一 位于传统标题栏的位置 1 注意在使用ActionBar时保证该应用的目标版本应高于11 Android3 0的版本号
  • 知乎Python大佬带你10分钟入门Python爬虫(推荐收藏)

    一 基础入门 1 1 什么是爬虫 爬虫 spider 又网络爬虫 是指向网站 网络发起请求 获取资源后分析并提取有用数据的程序 从技术层面来说就是 通过程序模拟浏览器请求站点的行为 把站点返回的HTML代码 JSON数据 二进制数据 图片
  • 《软件调试的艺术》笔记--调试多线程程序

    下面是于线程相关的GDB命令用法汇总 info threads 给出关于当前所有线程的信息 thread 3 改成线程3 break 88 thread 3 当线程到达源代码88时停止执行 break 88 thread 3 if i 2
  • LaTeX教程(三)——文档格式排版

    文章目录 1 章节目录 1 1 生成章节 1 2 生成目录 2 交叉引用和脚注 2 1 交叉引用 2 2 脚注 3 特殊环境 3 1 列表 3 2 文本对齐 3 3 引用环境 3 4 代码环境 1 章节目录 1 1 生成章节 写文章或者论文
  • 关于程序员认知和编程学习,没有任何一篇文章会讲得如此透彻

    程序猿问科比 你为什么这么成功 科比 你知道洛杉矶凌晨四点是什么样子吗 程序猿 知道 一般那个时候我还在写代码 怎么了 科比 额 你以为程序员都是这样生活的 别瞎 他们只是在历劫 度过这段日子 他们就飞升上仙 乃至上神 过上另一种生活 就像
  • 【北京工业大学申请个人学生邮箱】

    北京工业大学申请个人学生邮箱 由于近期想要购买苹果设备 但是苹果更新了unidays认证 需要用到学生邮箱认证 因此花了几个小时查找北工大的邮箱注册方法 一趟下来 说实在的流程有些阴间 在此进行下记录 也方便后人的查找 一 进入 内网综合服
  • 商品上架、es应用到商品上架-35

    一 商品上架 上架的商品才可以在网站展示 上架的商品需要可以被检索 es是将数据保存到内存当中 所以我们不能将什么数据都保存到es当中 我们需要将重要的数据保存到es中 例如商品名称 规格型号 价格等信息 当需要的数据较多时 我们可以将主键
  • 我的博客地图

    最新更新时间 2020年03月12日11 37 13 猛戳 查看我的博客地图 总有你意想不到的惊喜 我的博客首页 我的博客创作中心 前端漫漫路 我的GitHub 我的站点 前言 由于自己写的文章越来越多 查看和查找具体内容变得格外耗时 因此
  • 【算法学习笔记】26:匈牙利算法(二分图最大匹配)

    1 简述 给定一个二分图 例如 匈牙利算法能够快速的计算出一种匹配方式 使得匹配的数量最多 注意 一个成功的匹配方式中 没有两条边是共用了同一个点的 形象的说 这个问题可以理解成二分图两边分别是男生和女生 有连线的表示可以凑成一对 匈牙利算
  • Flutter控件封装之视频进度条

    视频控制器 三方所提供的样式 有时很难满足我们的需求 对于此情况 我们不得不在此基础上自行封装 今天所分享的文章就是一个很简单的控制器封装案例 包含了基本的播放暂停 全屏和退出全屏 以及时间和进度的展示 封装了事件回调以及各个属性的控制 基
  • 英语快速记忆-后缀

    英语快速记忆 后缀 后缀在缀合法中只起改变词性的作用 不改变词根的含意 因词性不同 后缀可分为名词性 形容词性 动词性及副词性后缀 现列举于下 一 名词性后缀 1 age为抽象名词后缀 表示行为 状态和全体总称percentage百分数 百
  • 【idea】IDEA中TODO以及FIXME等关键字不高亮显示修复

    1 概述 最近突然碰到IDEA中TODO以及FIXME关键字不高亮显示的问题 同时TODO标签页无法搜索 如下 开始我的小写的显示颜色 大写的不显示颜色 后来发现这里区分大小写 同时在这里可以配置颜色 其他几个地方配置的好像不管用 如果配置
  • 邻接表创建

    邻接矩阵是个不错的图储存结构 但我们发现 对于边数相对顶点较少的图 这种结构是存在对储存空间的极大浪费的 关于邻接矩阵的相关知识在这里 邻接矩阵的创建 因此我们要考虑另外一种存储结构方式 我们在学习线性表时就注意到顺序存储结构预先分配空间会
  • CentOS Mono Nginx 部署 MVC4+WebApi

    CentOS Mono Nginx 部署 MVC4 WebApi CentOS Mono Nginx 部署 MVC4 WebApi 经过几天的折磨 终于在CentOS上成功部署了MVC4 WebApi Mono上的服务器推荐两种 Jexus