CentOS Mono Nginx 部署 MVC4+WebApi

前端之家收集整理的这篇文章主要介绍了CentOS Mono Nginx 部署 MVC4+WebApi前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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-@H_502_31@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@H_502_31@:

wget http://origin-download.mono-project.com/sources/mono/mono-2.11.4.tar.bz2
@H_502_31@
Mono-3.2.1@H_502_31@:

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包。)

@H_502_31@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

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/@H_502_31@src

解压:tar –jxvf mono.4@H_502_31@.tar.bz2

转到解压后的目录:Cd mono-4@H_502_31@

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

./configure --prefix=/@H_502_31@usr

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

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

cd /usr/local/@H_502_31@src

tar –jvxf mono-1@H_502_31@.tar.bz2

cd mono-1@H_502_31@

./autogen.sh –prefix=/@H_502_31@usr

make (这个过程也很漫长)

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

cd /usr/local/src/mono-4@H_502_31@

make uninstall

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

1@H_502_31@ make install

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

 ldconfig 

2、 安装libgdiplus:

cd /usr/local/@H_502_31@src

tar –jxvf libgdiplus-2.10.9@H_502_31@.tar.bz2

cd libgdiplus-9@H_502_31@

./configure –prefix=/@H_502_31@usr

Make &&@H_502_31@ make install

ldconfig

3、 安装xsp:

cd /usr/local/src/@H_502_31@xsp

./autogen.sh –prefix=/@H_502_31@usr

make && make install

4、 安装pcre:

cd /usr/local/@H_502_31@src

tar –jxvf pcre-8.33@H_502_31@.tar.bz2

cd pcre-8.33@H_502_31@

./configure –prefix=/@H_502_31@usr

make && make install

5、 安装Nginx

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

cd /usr/local/@H_502_31@src

tar zxvf Nginx-1.5.4@H_502_31@.tar.gz

cd Nginx-4@H_502_31@

./configure –prefix=/usr/@H_502_31@NginxNginx安装在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 -@H_502_31@j ACCEPT

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

启动Nginx

/usr/Nginx/sbin/Nginx

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

2、 配置Nginx

vi /usr/Nginx/conf/Nginx.conf

修改server如下:

@H_502_31@server {

         listen   80@H_502_31@;

         server_name  localhost;

         location /@H_502_31@ {

                 root /usr/Nginx/@H_502_31@html;

                 index index.html index.htm;

                 fastcgi_index Default.aspx;

                 fastcgi_pass 127.0.0.1:9000@H_502_31@;

                 include /usr/Nginx/conf/@H_502_31@fastcgi_params;

         }

 }

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

vi /usr/Nginx/conf/@H_502_31@fastcgi_params

fastcgi_param  PATH_INFO          ""@H_502_31@;

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

五、编写MVC+WebApi程序:

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

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

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

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

@H_502_31@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" />

        <bindingRedirect oldVersion=1.0.0.0-4.0.0.04.0.0.0System.Web.WebPages"@H_502_31@publicKeyToken=" />

      </dependentAssembly>

 
      <dependentAssembly>

        <assemblyIdentity name=WebGrease1.0.0.0-1.3.0.01.3.0.0System.Net.Httpb03f5f7f11d50a3a0.0.0.0-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: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/@H_502_31@src

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

2、 安装Jexus

tar -zvxf jexus-5.4@H_502_31@.tar.gz

cd jexus-5.4@H_502_31@

sudo ./@H_502_31@install

3@H_502_31@、  启动Jexus

cd /usr/@H_502_31@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附件

可以部署的项目源码

分类: asp.net,ASP.NET MVC,Web Api

猜你在找的CentOS相关文章