因为最近在上一个移动互联网项目,但是对于外包公司的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