工欲善其事,必先利其器. 首先,咱们先明确下如下基本概念html
Linux相关linux
Ubuntugit |
Ubuntu是基于linux的免费开源桌面PC操做系统 十分契合英特尔的超极本定位 支持x8六、64位和ppc架构 全面支持网页浏览器 WPS。Ubuntu基于Debian发行版和GNOME桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改成Unity,与Debian的不一样在于它每6个月会发布一个新版本。Ubuntu的目标在于为通常用户提供一个最新的、同时又至关稳定的主要由自由软件构建而成的操做系统。github |
sudoshell |
sudo是linux系统管理指令,是容许系统管理员让普通用户执行一些或者所有的root命令的一个工具,如halt,reboot,su等等。这样不只减小了root用户的登陆 和管理时间,一样也提升了安全性。sudo不是对shell的一个代替,它是面向每一个命令的。数据库 |
aptapache |
Advanced Packaging Tool(apt)是Linux下的一款安装包管理工具。APT由几个名字以“apt-”打头的程序组成。apt-get、apt-cache 和apt-cdrom是处理软件包的命令行工具。编程 |
libuvjson |
跨平台异步IO库,是Kestrel Server的必需组件,必须在最终运行前安装.ubuntu |
VirtualBox |
VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式改名成 Oracle VM VirtualBox。Innotek 以 GNU General Public License (GPL) 释出 VirtualBox,并提供二进制版本及 OSE 版本的代码。使用者能够在VirtualBox上安装而且执行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系统做为客户端操做系统 |
curl |
cURL curl -O的输出结果 原做者 Daniel Stenberg 初始版本 1997 稳定版本 7.40.0(2015年1月8日,27天前) 开发状态 活跃 |
Linux相关知识非本文主要内容,其余信息请参考相关文档.
.NET相关
Mono |
Mono是一个由Novell公司(由Ximian发起,并由Miguel de lcaza领导的,一个致力于开创.NET在Linux上使用的开源工程。它包含了一个C#语言的编译器,一个CLR的运行时,和一组类库,并实现了 ADO NET和ASP NET。可以使得开发人员在Linux用C#开发程序。) |
DNVM |
(.NET Version Manager):因为要实现跨平台的目的,微软提供了DNVM功能,DNVM是ASP.NET最底层的内容,他是一组Powershell脚本,用于启动指定版本的ASP.NET运行环境,而且能够在同一台机器的同一时间点上经过使用Nuget工具来管理各类版本的ASP.NET运行环境(DNX),以及进行相应的升级操做。 |
DNX |
(.NET Execution Environment):DNX是ASP.NET程序的运行环境,用于启动并运行ASP.NET程序。该运行环境包括了编译系统、SDK工具集、Native CLR宿主环境。可使用DNVM管理各类版本的DNX,如dnvm list命令能够列出全部可用的DNX环境,而dnvm install 0.1-alpha-build-0446则能够将指定版本的DNX安装到.dnx文件夹,你能够在%USERPROFILE%\.dnx\runtimes 目录下找到已安装全部版本的DNX。不一样的操做系统有不一样的DNX版本。 |
dnu命令 |
(DNX Utility):是一个命令行的包管理器,包含在DNX内,因此只要安装了DNX,就可使用dnu命令, 其能够用于恢复程序包、安装程序包、部署程序包等等,好比把project.json里自定义的程序集自动下载下来进行使用。 |
dnx命令 |
dnx.exe是用于启动自宿主环境(Self-Hosting)的命令行工具,在使用命令行代码进行自宿主环境启动程序时,dnx负责查找并调用CLR Native Host,dnx命令是整个运行环境的入口点,你可使用dnx run来启动程序。 |
Kestrel |
ASP.NET 5 一个基于 libuv 组件的Web Server实现. |
NuGet |
Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时,Nuget能把在项目中添加、移除和更新引用的工做变得更加快捷方便 |
关于ASP.NET核心技术,请进一步参考汤姆大叔的博文:
解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置
咱们以目前比较流行的Ubuntu为例,个人配置环境是:
l 主机: Win8.1 和 VS2015 RC
l 虚拟机: VirtualBox-4.3.28-100309-Win
l Linux: ubuntu-15.04-desktop-amd64
这些软件的安装过程都比较人性化了,这里不加累述.
安装完成并进入系统之后,稍微清理下左侧的快捷方式,拖出经常使用的终端命令,咱们到以下界面,准备进入下一步的安装.
经过下列命令行,安装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/
首先须要安装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安装结束.
在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 的跨平台方案.