.NET跨平台之旅:在Linux上以本地机器码(native)运行ASP.NET Core站点
2016-03-12 14:56
1086 查看
在将“.NET跨平台之旅”示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 (博文链接)之后,我们有一个难以抗拒的冲动 —— 体验一下 dotnet cli 引入的一个最激动人心的特性 —— 将 .NET 程序编译为本地(native)机器码。对应于我们的示例站点,就是将 ASP.NET Core 应用程序编译为本地机器码。
如何编译呢?非常简单,只需运行下面的命令:
编译输出如下:
然后看一下 bin/Debug/netstandardapp1.3/ 文件夹中的内容:
ubuntu.14.04-x64 文件夹中的内容就是 native build 的输出,AboutUs 是可执行文件。
接下来,激动人心的时刻就要到了 —— 我们将以 AboutUs 这个编译为本地机器码的可执行文件运行 ASP.NET Core 站点。
在运行之前,需要做2个小小的准备工作:
1)为了与示例站点源代码所在的项目文件夹划清界线,我们新建了一个 about.cnblogs.com 文件夹,并将 ubuntu.14.04-x64 文件夹中的所有文件复制到这个文件夹。
2)将 config.json 文件复制到 about.cnblogs.com 文件夹中,示例站点有数据库操作(数据库用的是SQL Server),config.json 中存放着数据库连接字符串。
做好准备工作,演出就开始了!我们在 about.cnblogs.com 文件夹中运行下面的命令:
控制台输出如下:
太帅了!站点成功运行起来了!
浏览器访问站点,一切正常。你现在看到的 about.cnblogs.com 就是在 Linux Ubuntu 服务器上以 native 方式运行的。
以前只能在做梦时才敢想想的事情,现在正在逐渐成为现实。
注:我们在用 dotnet build --native 命令编译时,有时 ubuntu.14.04-x64 文件夹中无输出,可以改用
dotnet build --native --no-incremental 命令解决这个问题。
【更新】
后来出现502错误与.NET Core没有关系,是因为没有以后台服务的方式运行命令,ssh会话一断开,进程就结束了。现已改为用下面的命令运行:
如何编译呢?非常简单,只需运行下面的命令:
dotnet build --native
编译输出如下:
Project AboutUs (.NETStandardApp,Version=v1.3) will be compiled because some of its inputs were newer than its oldest output. Compiling AboutUs for .NETStandardApp,Version=v1.3 Compilation succeeded. 0 Warning(s) 0 Error(s) Time elapsed 00:00:02.7095915 Input Assembly: /data/AboutUs/bin/Debug/netstandardapp1.3/AboutUs.dll
然后看一下 bin/Debug/netstandardapp1.3/ 文件夹中的内容:
ubuntu.14.04-x64 文件夹中的内容就是 native build 的输出,AboutUs 是可执行文件。
接下来,激动人心的时刻就要到了 —— 我们将以 AboutUs 这个编译为本地机器码的可执行文件运行 ASP.NET Core 站点。
在运行之前,需要做2个小小的准备工作:
1)为了与示例站点源代码所在的项目文件夹划清界线,我们新建了一个 about.cnblogs.com 文件夹,并将 ubuntu.14.04-x64 文件夹中的所有文件复制到这个文件夹。
2)将 config.json 文件复制到 about.cnblogs.com 文件夹中,示例站点有数据库操作(数据库用的是SQL Server),config.json 中存放着数据库连接字符串。
做好准备工作,演出就开始了!我们在 about.cnblogs.com 文件夹中运行下面的命令:
./AboutUs
控制台输出如下:
dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[3] Hosting starting dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[4] Hosting started Hosting environment: Production Application base path: /data/websites/about.cnblogs.com Now listening on: http://*:8001 Application started. Press Ctrl+C to shut down.
太帅了!站点成功运行起来了!
浏览器访问站点,一切正常。你现在看到的 about.cnblogs.com 就是在 Linux Ubuntu 服务器上以 native 方式运行的。
以前只能在做梦时才敢想想的事情,现在正在逐渐成为现实。
注:我们在用 dotnet build --native 命令编译时,有时 ubuntu.14.04-x64 文件夹中无输出,可以改用
dotnet build --native --no-incremental 命令解决这个问题。
【更新】
后来出现502错误与.NET Core没有关系,是因为没有以后台服务的方式运行命令,ssh会话一断开,进程就结束了。现已改为用下面的命令运行:
screen -d -m -s "AboutUs" /data/websites/about.cnblogs.com/AboutUs
相关文章推荐
- 跟踪分析Linux内核的启动过程
- Linux 设备驱动开发 —— platform 设备驱动
- Linux常用命令
- Linux时间函数之 gettimeofday() 函数之使用方法
- Centos搭建Samba - 叶子-吴佰清 - 博客园
- 解决Linux下inode频繁掉线问题
- 阿里云centos搭建python
- Java开发必会的Linux命令
- 构造一个简单的Linux系统MenuOS
- centos install shutter (How to enable Nux Dextop repository on CentOS or RHEL)
- 嵌入式linux:Linux下添加新硬盘,分区及挂载
- CentOS安装proftpd
- linux stat函数(获取文件详细信息)
- week3-构造一个简单的linux系统
- 为archlinux安装mplayer
- Linux 下SVN 命令行的使用
- Linux中grep,egrep正则表达式基本用法
- linux内核线程死锁或死循环(soft lockup)之后如何让系统宕机重启
- CentOS下安装JDK1.8
- 再思linux内核在中断路径内不能睡眠/调度的原因(2010)