阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ASP.NET 5 (vNext) Linux部署

108次阅读
没有评论

共计 4838 个字符,预计需要花费 13 分钟才能阅读完成。

工欲善其事, 必先利其器. 首先, 我们先明确下以下基本概念

Linux相关

Ubuntu

Ubuntu 是基于 Linux 的免费开源桌面 PC 操作系统 十分契合英特尔的超极本定位 支持 x86、64 位和 ppc 架构 全面支持网页浏览器   WPS。Ubuntu 基于 Debian 发行版和 GNOME 桌面环境,而从 11.04 版起,Ubuntu 发行版放弃了 Gnome 桌面环境,改为 Unity,与 Debian 的不同在于它每 6 个月会发布一个新版本。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

sudo

sudo 是 linux 系统管理指令,是允许系统管理员让普通用户执行一些或者全部的 root 命令的一个工具,如 halt,reboot,su 等等。这样不仅减少了 root 用户的登录 和管理时间,同样也提高了安全性。sudo 不是对 shell 的一个代替,它是面向每个命令的。

apt

Advanced   Packaging Tool(apt)是 Linux 下的一款安装包管理工具。APT 由几个名字以“apt-”打头的程序组成。apt-get、apt-cache 和 apt-cdrom 是处理软件包的命令行工具。

libuv

跨平台异步 IO 库, 是 Kestrel Server 的必需组件, 必须在最终运行前安装.

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 天前)开发状态 活跃
  编程语言 C 操作系统 跨平台 类型 FTP / HTTP 许可协议 自由软件:MIT/X derivate   license 网站 curl.haxx.se   cURL 是一个利用 URL 语法在命令行下工作的文件传输工具,1997 年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称 cURL 为下载工具。它被广泛应用在 Unix、多种 Linux 发行版中,并且有 DOS 和 Win32、Win64 下的移植版本

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 能把在项目中添加、移除和更新引用的工作变得更加快捷方便

 

安装 Ubuntu

我们以目前比较流行的 Ubuntu 为例, 我的配置环境是:

  • 主机: Win8.1 和 VS2015 RC
  • 虚拟机: VirtualBox-4.3.28-100309-Win
  • Linux: ubuntu-15.04-desktop-amd64

这些软件的安装过程都比较人性化了, 这里不加累述.

安装完成并进入系统以后, 稍微清理下左侧的快捷方式, 拖出常用的终端命令, 我们到如下界面, 准备进入下一步的安装.

    ASP.NET 5 (vNext) Linux 部署                    

安装 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 安装完成:

 ASP.NET 5 (vNext) Linux 部署

如果安装没有顺利完成, 请参考 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

 ASP.NET 5 (vNext) Linux 部署

由于目前 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 程序.

 ASP.NET 5 (vNext) Linux 部署

这里把这个项目命名为 WebApi2015. 建立完毕后, 把程序目录打包传送到 Ubuntu 虚拟机.

在虚拟机任意目录解压.

另外我们再非 Windows 环境可以采用 Visual Studio Code 进行代码的编辑, 这个工具非常容易安装, 具体安装方法可以参考官网:

https://code.visualstudio.com/Docs/setup

虽然这个工具还不如 VS 方便, 但比起文本编辑器还是高级了许多:

下面我们对项目文件做些调整:

 ASP.NET 5 (vNext) Linux 部署

  • 加入 Kestrel 组件的引用, 这个是 Linux 环境下必选的 Web Server.
  • 加入 Kestrel 的命令行, 把启动 URL 设为 http://localhost:5000, 这个步骤是必须的, 否则后续的 dnx 命令将无法执行.
  • 把 Project_Readme.html 移入 wwwroot 作为一个可以展示的静态页面.

当然这些调整也可以再 Windows 里面先调整好, 再拷贝过来.

部署和运行

打开一个终端, 把当前路径设置到我们项目中的 src/WebApi2015 中, 也就是 project.json 所在目录.

首先利用 dnu 命令进行所有相关组件的恢复操作:

dnu restore

 注意这里经常因为网络问题而中断, 反复执行这个命令皆可.(不要轻易强行中断这个命令, 会造成坏包), 直到出现大量的 installing 信息并完成 project.lock.json 文件, 恢复过程才算顺利结束, 如下图:

 ASP.NET 5 (vNext) Linux 部署

然后运行下面命令执行此 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 , 运行通过

 ASP.NET 5 (vNext) Linux 部署

利用浏览器访问  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 的跨平台方案。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-05/118044.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计4838字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中