本文介绍Nginx如何部署MVC4+WebApi。
环境:
- CentOS 6.4(32、64位)
- Mono-3.2.1
- Nginx 1.5.4
- ASP.NET MVC 4
- WebApi 1.0
一、首先安装一些需要的软件包
- 首先更新CentOS上的软件包:
yum –y update
。 - 安装一些需要的库:
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`,然后开始下载以下软件包。
- 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
- Libgdiplus:
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.9.tar.bz2
- 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
- pcre:
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.bz2
- Nginx:
wget http://nginx.org/download/nginx-1.5.4.tar.gz
关于Nginx这个下载的是最新版本,需要自己安装,也可以使用配置yum源头的方式安装,这个安装的好处是:执行yum命令后就自动安装完了,最后还会帮你生成一个nginx的帮助命令文件,帮助你执行nginx的启动、重启和关闭等等。本文先介绍自己编译安装的情况(个人喜好这种方式,因为新版的Nginx已经添加了一些辅助命令了,以后介绍。)
三、安装软件包
- 安装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
- 安装libgdiplus:
cd /usr/local/src
tar –jxvf libgdiplus-2.10.9.tar.bz2
cd libgdiplus-2.10.9
./configure –prefix=/usr
Make &&makeinstall
ldconfig
- 安装xsp:
cd /usr/local/src/xsp
./autogen.sh –prefix=/usr
make&&makeinstall
- 安装pcre:
cd /usr/local/src
tar –jxvf pcre-8.33.tar.bz2
cd pcre-8.33
./configure –prefix=/usr
make&&makeinstall
- 安装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:
- 开放80端口:
iptables -I INPUT -p tcp --dport80-j ACCEPT
service iptables save # 这句把上述规则写进防火墙中
启动nginx
/usr/nginx/sbin/nginx
启动之后,就可以通过地址访问nginx了,自己访问看看吧。
- 配置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程序:
- 使用vs建立mvc4项目,选择“基本”或者“空”。
- 项目建立好后,删除对System.Web.Providers.dll的引用,这个貌似不支持,添加上去就无法执行程序。
- 以下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
- 删除掉原来项目中对以上dll的引用,重新添加引用,地址为你的项目中的libs(存放你复制的dll的文件夹),注意:
- Mvc4对应的dll“复制本地”都选择“True”;
- WebApi对应的dll中System.Net.Http.Formatting.dll选择复制本地就可以了。
- Webgrease对应的dll:System.Web.Optimization.dll选择复制本地。
- 配置Web.config
由于我们使用了System.Net.Http.dll的4.0版本,Webgrease也有可能会因为版本问题保存,所以需要在配置文件中配置升级配置,具体如下:
<runtime><assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1"><!-- 配置内容 --></assemblyBinding></runtime>
- 添加Controller、View和WebApi
在Controllers文件夹下添加一个HomeController控制器,然后添加一个Index视图。
然后再添加一个FirstApiController的WebApi。
- 按照文件的方式发布程序。
六、部署
使用ftp或者winscp等等工具,把发布好的程序上传到centos的
/usr/nginx/html
中,
还有重要的一步:发布完成后,一定要修改删除Web.config中这两行
<httpRuntimetargetFramework="4.5"/><compilationtargetFramework="4.5"/>
版权归原作者 mike141321 所有, 如有侵权,请联系我们删除。