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.-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.: wget http://origin-download.mono-project.com/sources/mono/mono-2.11.4.tar.bz2 Mono-3.2.: 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..tar.bz2 转到解压后的目录:Cd mono-2.11. 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..tar.bz2 cd mono-3.2. ./autogen.sh –prefix=/usr make (这个过程也很漫长)
(3) mono-3.2.1编译完成之后,需要先卸载掉Mono-2.11.4:
cd /usr/local/src/mono-2.11. make uninstall
(4) 卸载完mono-2.11.4之后开始安装mono-3.2.1:
cd /usr/local/src/mono-3.2. make install
(5)安装完成之后,执行一下ldconfig命令,确保新安装的动态库可以被找到。
ldconfig
2、 安装libgdiplus:
cd /usr/local/src tar –jxvf libgdiplus-2.10..tar.bz2 cd libgdiplus-2.10. ./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..tar.gz cd nginx-1.5. ./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 -j ACCEPT service iptables save (这句把上述规则写进防火墙中,要不以后每次都要开启80端口) 启动nginx /usr/nginx/sbin/nginx
启动之后,就可以通过地址访问nginx了,自己访问看看吧。
2、 配置nginx:
vi /usr/nginx/conf/nginx.conf
修改server如下:
server {
listen ;
server_name localhost;
location / {
root /usr/nginx/html;
index index.html index.htm;
fastcgi_index Default.aspx;
fastcgi_pass 127.0.0.1:;
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:
八、开始访问吧
你以为你到这里就可以正确访问你的程序了,你要是这样认为你就错了。记得在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 、 启动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
附件:
CentOS Mono Nginx 部署 MVC4+WebApi的更多相关文章
- [CentOS] 结合Nginx部署DotNetCore的demo项目【转载】
部署前准备 1.VisualStudio2017+.netcore2.0SDK 2.Centos7.2 3.SecureCRT,Xftp(根据自己喜好) 创建WebApi项目 修改Program.cs ...
- centOS+uwsgi+nginx 部署flask项目,问题记录
用flask做的项目想要部署到centOS系统上,填了一些坑,终于成功了,记录一下遇到的问题: 此次部署主要是按照这个博客进行的 https://www.cnblogs.com/Ray-liang/p ...
- CentOS 7 Nginx部署.NET Core Web应用
部署.NET Core运行时 必要前提 在安装.NET Core前,需要注册Microsoft签名秘钥并添加Microsoft产品提要,每台机器只需要注册一次,执行如下命令: sudo rpm -Uv ...
- CentOS使用nginx部署https服务
nginx安装参考:https://www.cnblogs.com/taiyonghai/p/6728707.html 自签证书生成参考:https://gmd20.github.io/blog/op ...
- CentOS下Nginx部署React静态应用
查看CentOS版本: cat /etc/redhat-release 安装nginx: yum install nginx 查看nginx版本: nginx -v 启动nginx: systemct ...
- 【转】windows下nginx+mono+fastCGI部署asp.net网站
原文链接:http://www.cnblogs.com/amityat/archive/2011/08/23/2150153.html 1,什么是nginx 简介Nginx ("engine ...
- ASP.NET Core多平台部署 (Windows Server+IIS与CentOS 7+Nginx)
一,Windows Server+IIS部署 1,安装配置IIS,这个应该都不用多说了,教程一堆 2,下载安装.NET Core Runtime 与 .NET Core SDK,下载请点击下载地址,如 ...
- CentOS下 Django部署 nginx+uWSGI+Django(二)
该篇内容承接CentOS下 Django部署 uWSGI+Django(一),细节流程可参考此篇内容. 1. 当前系统 CentOS Linux release 7.6.1810 Python 2.7 ...
- Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(二)
Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(一) 接上一篇 3. Nginx配置反向代理 3.1 cnetos 安装nginx 首先,我们需要在服务器上安装N ...
随机推荐
- LDR详解
ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令. LDR伪指令的形式是"LDR Rn,=expr".下面举一个例子来说明它的用法. COUNT EQU ...
- 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域
一.前言 结合我们本次系列的第一篇博文中提到的上下文映射图(传送门:如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念),得知我们这个电商网站的核心域就是销售子域.因为电子商务是以信息网络 ...
- 使用 JavaScriptService 在.NET Core 里实现DES加密算法
文章<ASP.NET Core love JavaScript>和<跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题> ...
- Ajax 概念 分析 举例
Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...
- 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置
网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...
- app引导页(背景图片切换加各个页面动画效果)
前言:不知不觉中又加班到了10点半,整个启动页面做了一天多的时间,一共有三个页面,每个页面都有动画效果,动画效果调试起来麻烦,既要跟ios统一,又要匹配各种不同的手机,然后产品经理还有可能在中途改需求 ...
- 从零开始编写自己的C#框架(26)——小结
一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...
- Hbase的伪分布式安装
Hbase安装模式介绍 单机模式 1> Hbase不使用HDFS,仅使用本地文件系统 2> ZooKeeper与Hbase运行在同一个JVM中 分布式模式– 伪分布式模式1> 所有进 ...
- 【Machine Learning】决策树案例:基于python的商品购买能力预测系统
决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本 ...
- ASP.NET Core 中文文档 第四章 MVC(4.2)控制器操作的路由
原文:Routing to Controller Actions 作者:Ryan Nowak.Rick Anderson 翻译:娄宇(Lyrics) 校对:何镇汐.姚阿勇(Dr.Yao) ASP.NE ...