CentOS Mono Nginx 部署 MVC4+WebApi

CentOS Mono Nginx 部署 MVC4+WebApi

码农世界 2024-06-04 前端 98 次浏览 0个评论

本文介绍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。
    wget http://origin-download.mono-project.com/sources/mono/mono-2.11.4.tar.bz2 
    wget http://origin-download.mono-project.com/sources/mono/mono-3.2.1.tar.bz2 
    
    1. Libgdiplus:
    wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.9.tar.bz2 
    
    1. 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 
    
    1. pcre:
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.bz2
    
    1. 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 --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 
    
    1. 安装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
    
    1. 安装xsp:
    cd /usr/local/src/xsp
    ./autogen.sh –prefix=/usr
    make && make install
    
    1. 安装pcre:
    cd /usr/local/src
    tar –jxvf pcre-8.33.tar.bz2
    cd pcre-8.33
    ./configure –prefix=/usr
    make && make install
    
    1. 安装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 # 这句把上述规则写进防火墙中
    

    启动nginx

    /usr/nginx/sbin/nginx
    

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

    1. 配置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
    
    1. 删除掉原来项目中对以上dll的引用,重新添加引用,地址为你的项目中的libs(存放你复制的dll的文件夹),注意:
    • Mvc4对应的dll“复制本地”都选择“True”;
    • WebApi对应的dll中System.Net.Http.Formatting.dll选择复制本地就可以了。
    • Webgrease对应的dll:System.Web.Optimization.dll选择复制本地。
      1. 配置Web.config

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

      
          
              
          
      
      
      1. 添加Controller、View和WebApi

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

      然后再添加一个FirstApiController的WebApi。

      1. 按照文件的方式发布程序。

      六、部署

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

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

      
      
      

转载请注明来自码农世界,本文标题:《CentOS Mono Nginx 部署 MVC4+WebApi》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,98人围观)参与讨论

还没有评论,来说两句吧...

Top