红联Linux门户
Linux帮助

Ubuntu 14.04 LTS下APACHE支持ASP.NET MVC5

发布时间:2015-09-14 21:54:27来源:linux网站作者:hesi726

因为最近在上一个移动互联网项目,但是对于外包公司的PHP所采用的ZF(2.0.5)框架的效率觉得真的无法忍受,所以想着以后的接口采用自己熟悉的 ASP.NET 框架来写,

也因此,就有这一篇文章;

参考文档: http://www.bgsoftfactory.net/run-asp-net-mvc-4-with-mysql-on-linux/  真的基本上参考这一篇文档就够了;
网上其他的文档基本上没有什么参考价值;


说几个注意事项:

1.请注意,git checkout xx.xxx.xxxx 的时候,请自行到 https://github.com 上去查看产品的最新版本;

1.1 忘记说一个东东, 编译  libgdiplus 包的时候,需要先安装  cairo 的开发库;

libcairo2-dev: Development files for the Cairo 2D graphics library
apt-get install libcairo2-dev


2.编译 mono 的时候,根据 mono 的install 说明,在你 make 之前,
如果你没有一个可以工作的mono安装环境,你需要下载一个小小的 mono 编译器;
简单运行如下命令即可以在你的本机安装一个 足够编译 mono 源代码的 mono编译器;
简单来说,就是在 编译 mono 最新的源代码的时候,你需要一个mono编译器
( 如果你能够理解用 c编译器 来对 C编译器源代码 进行编译产生一个新的 C编译器的话,理解这句话应该不难)

make get-monolite-latest


3.mono的安装,配置根据 git 上 mono 的说法,建议你指定 --prefix=/usr,  参考文档中写的是 /usr/local,参考文档中说的应该是有问题的,因为死活说找不到 gmcs, 但指定  --prefix=/usr 就没有问题;
注意,make 之前先运行 下面的指令;

make get-monolite-latest

对 mono 进行 make 的时候,直接运行 make 即可,不需要像下面一样运行;
make EXTERNAL_MCS=${PWD}/mcs/class/lib/monolite/gmcs.exe


4.安装 xps 的时候,最新版本会报一个 gmcs not found 的错误,

直接在 cp /usr/local/bin/mcs  /usr/local/bin/gmcs 即可以解决此问题;


5.在 xsp 下部署 MVC5,  文档中的例子  https://github.com/BernardG/AspInfoMvc  直接下载下来,然后到这个目录下运行, xsp4 什么问题都没有;

但是,如果你用 VS2015 产生一个新的项目(注意,创建项目的时候个人认证 环境),然后部署上去的时候,你会发现一个稀奇的错误,
/bin\roslyn\csc.exe 运行时错误,

VS2015 为了支持 roslyn 编译扩充,新建立的项目自动在 bin 建立了一个 roslyn 目录,下面包含了一个 csc.exe 和 vbc.exe  两个编译器和一堆编译优化的优化的 dll, 这个目录即使你不上传,一样会报   /bin\roslyn\csc.exe 运行时之类的错误 ;
找到项目文件, 也就是 csproj 文件,删除下面两行,
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />,
手动清理bin目录,重新编译项目,你会发现 roslyn 目录已经不会产生,

把整个 web项目目录上传到 ubuntu, 然后在 web 目录下运行 xsp4, 貌似什么问题都没有;


6.安装和配置 mod_mono

因为,我的 asp.net MVC 需要在一个虚拟目录下运行,主目录文档还是走的 PHP的MVC,  不过,这个也不麻烦,还是根据参考文档,

在 mod_mono.conf 最后面增加如下几行,

Alias /test "/var/www/WebApplication3"
MonoServerPath mvctest "/usr/local/bin/mod-mono-server4"
MonoDebug mvctest true
MonoApplications mvctest "/test:/var/www/WebApplication3"
MonoSetEnv mvctest MONO_IOMAP=all
<Location "/test">
Allow from all
Order allow,deny
MonoSetServerAlias mvctest
SetHandler mono
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI ".(?:gif|jpe?g|png)$" no-gzip dont-vary
</Location>


OK, 一切搞定,不过也居然花了两天时间;

不过,暂时还没有支持 MYSQL, 根据,作者的说法, MySQL Connector/Net provider 驱动还不支持 EF6 框架;而 mono 只支持 EF6 (因为  EF6才开始开源),

http://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html  但根据这篇文章的说法,MySQL Connector/Net provider 从 6.8起开始支持 EF6了,所以,估计问题不大;

明天拿作者的例子试试看;

就这样了,至于 centos 6.5 , 大家就不要问我了,就是因为 centos 6.5搞不定,我才决定把服务器改成使用 UBUNTU 14.04 LTS的。


Ubuntu 15.04安装配置Apache和mysql的方法:http://www.linuxdiyf.com/linux/13074.html

Ubuntu 15.04下安装Apache 2.4.16:http://www.linuxdiyf.com/linux/13156.html

Linux服务器上,用ASP.NET生成中文图片的要点:http://www.linuxdiyf.com/linux/13689.html

ASP.NET 5(vNext)Linux部署:http://www.linuxdiyf.com/linux/12311.html