在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
引言工欲善其事,必先利其器. 首先,我们先明确下以下基本概念 Linux相关
Linux相关知识非本文主要内容,其他信息请参考相关文档. .NET相关
关于ASP.NET核心技术,请进一步参考汤姆大叔的博文: 解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置 安装Ubuntu我们以目前比较流行的Ubuntu为例,我的配置环境是: l 主机: Win8.1 和 VS2015 RC l 虚拟机: VirtualBox-4.3.28-100309-Win l Linux: ubuntu-15.04-desktop-amd64 这些软件的安装过程都比较人性化了,这里不加累述. 安装完成并进入系统以后,稍微清理下左侧的快捷方式,拖出常用的终端命令,我们到如下界面,准备进入下一步的安装.
安装MONO通过下列命令行,安装MONO – 下载时间可能很长. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list sudo apt-get update sudo apt-get install mono-devel
建议依次运行如果有问题重新运行有问题的命令.看到如下结果表示Mono安装完成:
如果安装没有顺利完成,请参考MONO Project网站寻找最新的安装方法. http://www.mono-project.com/docs/getting-started/install/linux/
安装DNVM首先需要安装curl程序 sudo apt-get install curl 然后利用curl安装DNVM curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh 安装完毕以后,利用dnvm升级命令获取最新运行环境 dnvm upgrade 如果遇到更新失败,可以加入-f参数强行覆盖更新. 最后运行下面的命令,确认当前安装的运行环境 dnvm list
由于目前VS2015 RC的dnx版本是1.0.0-beta4,所以这里请保证当前活跃版本就是1.0.0-beta4. (我这里装的比较杂,其实没有11855那2个也是可以的) 此外可以发现dnx和dnu 2个命令(可以在控制台运行这2个命令,看到帮助信息)都已经部署完毕,到此dnvm安装结束. 配置ASP.NET代码在Window主机中, 利用VS 2015建立一个vNext版本的WebApi程序.
这里把这个项目命名为 WebApi2015. 建立完毕后,把程序目录打包传送到Ubuntu虚拟机. 在虚拟机任意目录解压. 另外我们再非Windows环境可以采用Visual Studio Code进行代码的编辑,这个工具非常容易安装,具体安装方法可以参考官网: https://code.visualstudio.com/Docs/setup 虽然这个工具还不如VS方便,但比起文本编辑器还是高级了许多: 下面我们对项目文件做些调整:
l 加入Kestrel组件的引用,这个是Linux环境下必选的Web Server. l 加入Kestrel的命令行,把启动URL设为http://localhost:5000, 这个步骤是必须的,否则后续的dnx命令将无法执行. l 把Project_Readme.html移入wwwroot作为一个可以展示的静态页面. 当然这些调整也可以再Windows里面先调整好,再拷贝过来. 部署和运行打开一个终端,把当前路径设置到我们项目中的src/WebApi2015中,也就是project.json所在目录. 首先利用dnu命令进行所有相关组件的恢复操作: dnu restore 注意这里经常因为网络问题而中断,反复执行这个命令皆可.(不要轻易强行中断这个命令,会造成坏包),直到出现大量的installing信息并完成project.lock.json文件,恢复过程才算顺利结束,如下图:
然后运行下面命令执行此ASP.NET 5程序. dnx . kestrel 不过这个时候可能依然会报错,是因为一般新安装的系统还没有libuv组件.最终,我们还需要利用下面的命令来安装libuv组件. sudo apt-get install automake libtool curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src cd /usr/local/src/libuv-1.4.2 sudo sh autogen.sh sudo ./configure sudo make sudo make install sudo rm -rf /usr/local/src/libuv-1.4.2 && cd ~/ sudo ldconfig
安装完毕以后,再运行 dnx . kestrel , 运行通过
利用浏览器访问 http://虚拟机IP:5000/Project_Readme.html 或者 http://虚拟机IP:5000/api/values 可以看到页面和默认WebApi返回内容. 如果兴趣,还可以在wwwroot加入其他页面或者在Controller里面加入其他WebApi来进行尝试 – 甚至可以加入Controller , View 和 Model文件来显示MVC的内容. 结束语当然,目前我们运行的程序还仅仅是一个非常简单的版本,还没有包括EF, SignalR, Identity等复杂组件,但从整个部署过程中,我们可以感觉到其实差距已经很小. 首先运行和部署环境DNVM和dnu, dnx命令和VS 2015的环境是一致的,而且组件包都是从Nuget上获取,这和标准的Windows开发环境并没有太大区别, 所以可以预见,即使是更复杂的ASP.NET 5应用程序,依然可以完整的部署到Linux环境上来, 加上未来EF技术对MSSQL等跨平台数据库的更好的支持,.NET开发人员完全可以在将来推出自己的 Linux – Kestrel/ Jexus – MySQL – ASP.NET 的跨平台方案. 软件开发,项目管理,开发管理,团队管理. CMMI,PMP
引言工欲善其事,必先利其器. 首先,我们先明确下以下基本概念 Linux相关
Linux相关知识非本文主要内容,其他信息请参考相关文档. .NET相关
关于ASP.NET核心技术,请进一步参考汤姆大叔的博文: 解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置 安装Ubuntu我们以目前比较流行的Ubuntu为例,我的配置环境是: l 主机: Win8.1 和 VS2015 RC l 虚拟机: VirtualBox-4.3.28-100309-Win l Linux: ubuntu-15.04-desktop-amd64 这些软件的安装过程都比较人性化了,这里不加累述. 安装完成并进入系统以后,稍微清理下左侧的快捷方式,拖出常用的终端命令,我们到如下界面,准备进入下一步的安装.
安装MONO通过下列命令行,安装MONO – 下载时间可能很长. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list sudo apt-get update sudo apt-get install mono-devel
建议依次运行如果有问题重新运行有问题的命令.看到如下结果表示Mono安装完成:
如果安装没有顺利完成,请参考MONO Project网站寻找最新的安装方法. http://www.mono-project.com/docs/getting-started/install/linux/
安装DNVM首先需要安装curl程序 sudo apt-get install curl 然后利用curl安装DNVM curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh 安装完毕以后,利用dnvm升级命令获取最新运行环境 dnvm upgrade 如果遇到更新失败,可以加入-f参数强行覆盖更新. 最后运行下面的命令,确认当前安装的运行环境 dnvm list
由于目前VS2015 RC的dnx版本是1.0.0-beta4,所以这里请保证当前活跃版本就是1.0.0-beta4. (我这里装的比较杂,其实没有11855那2个也是可以的) 此外可以发现dnx和dnu 2个命令(可以在控制台运行这2个命令,看到帮助信息)都已经部署完毕,到此dnvm安装结束. 配置ASP.NET代码在Window主机中, 利用VS 2015建立一个vNext版本的WebApi程序.
这里把这个项目命名为 WebApi2015. 建立完毕后,把程序目录打包传送到Ubuntu虚拟机. 在虚拟机任意目录解压. 另外我们再非Windows环境可以采用Visual Studio Code进行代码的编辑,这个工具非常容易安装,具体安装方法可以参考官网: https://code.visualstudio.com/Docs/setup 虽然这个工具还不如VS方便,但比起文本编辑器还是高级了许多: 下面我们对项目文件做些调整:
l 加入Kestrel组件的引用,这个是Linux环境下必选的Web Server. l 加入Kestrel的命令行,把启动URL设为http://localhost:5000, 这个步骤是必须的,否则后续的dnx命令将无法执行. l 把Project_Readme.html移入wwwroot作为一个可以展示的静态页面. 当然这些调整也可以再Windows里面先调整好,再拷贝过来. 部署和运行打开一个终端,把当前路径设置到我们项目中的src/WebApi2015中,也就是project.json所在目录. 首先利用dnu命令进行所有相关组件的恢复操作: dnu restore 注意这里经常因为网络问题而中断,反复执行这个命令皆可.(不要轻易强行中断这个命令,会造成坏包),直到出现大量的installing信息并完成project.lock.json文件,恢复过程才算顺利结束,如下图:
然后运行下面命令执行此ASP.NET 5程序. dnx . kestrel 不过这个时候可能依然会报错,是因为一般新安装的系统还没有libuv组件.最终,我们还需要利用下面的命令来安装libuv组件. sudo apt-get install automake libtool curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src cd /usr/local/src/libuv-1.4.2 sudo sh autogen.sh sudo ./configure sudo make sudo make install sudo rm -rf /usr/local/src/libuv-1.4.2 && cd ~/ sudo ldconfig
安装完毕以后,再运行 dnx . kestrel , 运行通过
利用浏览器访问 http://虚拟机IP:5000/Project_Readme.html 或者 http://虚拟机IP:5000/api/values 可以看到页面和默认WebApi返回内容. 如果兴趣,还可以在wwwroot加入其他页面或者在Controller里面加入其他WebApi来进行尝试 – 甚至可以加入Controller , View 和 Model文件来显示MVC的内容. 结束语当然,目前我们运行的程序还仅仅是一个非常简单的版本,还没有包括EF, SignalR, Identity等复杂组件,但从整个部署过程中,我们可以感觉到其实差距已经很小. 首先运行和部署环境DNVM和dnu, dnx命令和VS 2015的环境是一致的,而且组件包都是从Nuget上获取,这和标准的Windows开发环境并没有太大区别, 所以可以预见,即使是更复杂的ASP.NET 5应用程序,依然可以完整的部署到Linux环境上来, 加上未来EF技术对MSSQL等跨平台数据库的更好的支持,.NET开发人员完全可以在将来推出自己的 Linux – Kestrel/ Jexus – MySQL – ASP.NET 的跨平台方案. |
请发表评论