0


CentOS Mono Nginx 部署 MVC4+WebApi

本文介绍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 -yinstall 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&&makeinstall# 这个过程比较漫长,去干点别的吧。

(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
makeinstall

(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 &&makeinstall
ldconfig
  1. 安装xsp:
cd /usr/local/src/xsp
./autogen.sh –prefix=/usr
make&&makeinstall
  1. 安装pcre:
cd /usr/local/src
tar –jxvf pcre-8.33.tar.bz2
cd pcre-8.33
./configure –prefix=/usr
make&&makeinstall
  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&&makeinstall

(注:第二种安装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 --dport80-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也有可能会因为版本问题保存,所以需要在配置文件中配置升级配置,具体如下:

<runtime><assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1"><!-- 配置内容 --></assemblyBinding></runtime>
  1. 添加Controller、View和WebApi

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

然后再添加一个FirstApiController的WebApi。

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

六、部署

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

/usr/nginx/html

中,

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

<httpRuntimetargetFramework="4.5"/><compilationtargetFramework="4.5"/>
标签: centos nginx linux

本文转载自: https://blog.csdn.net/m0_72112783/article/details/139293908
版权归原作者 mike141321 所有, 如有侵权,请联系我们删除。

“CentOS Mono Nginx 部署 MVC4+WebApi”的评论:

还没有评论