以self-contained方式在Linux上部署ASP.NET Core站点
今天准备将一个在Windows上用VS2015开发的ASP.NET Core程序部署到阿里云Linux服务器上,部署时发现这台服务器是内网服务器,无法直接安装.NET Core SDK,于是想到尝试用self-contained的方式进行部署。
Self-contained部署方式就是每个应用程序自带.NET Core运行时环境与程序集依赖,部署的目标机器不需要安装.NET Core SDK,将应用程序文件夹拷贝过来就能运行。我们通常用的是Portable部署方式,应用程序共享.NET Core运行时环境与程序集依赖,部署的目标机器上需要事先安装.NET Core SDK,然后用dotnet命令运行程序,这也是.NET Core的默认部署方式。
一开始不知道从何处下手,在detnet publish命令中没找到对应的参数,dotnet publish的输出文件夹中也没找到对应的可执行文件。
后来找到了这篇参考文档 .NET Core Application Deployment,在project.json中将dependencies中的:
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
改为:
"Microsoft.NETCore.App": "1.0.0"
也就是去掉"type": "platform"。
并添加runtimes配置:
"runtimes": {
"ubuntu.14.04-x64": {},
"osx.10.11-x64": {},
"win8-x64": {}
}
然后运行下面的命令:
dotnet publish
就会在 bin/Debug/netcoreap.0/ubuntu.14.04-x64/publish 文件夹中生成self-contained部署方式所需的文件,其中有一个Linux可执行文件:
这个生成部署文件的操作是可以跨平台的,在Windows上通过 dotnet publish -r ubuntu.14.04-x64 命令生成Linux的部署文件,然后将整个部署文件夹上传到Linux服务器。
回到我们的部署场景,由于目标Linux服务器是内网服务器,无法直接将部署文件上传到目标服务器。于是我们借助一台安装有.NET SDK的跳板机,在这台机器上git签出项目代码,用 dotnet publish 命令生成self-containde方式的部署文件,然后通过scp命令上传到部署服务器,最后在部署服务器上运行其中的可执行文件:
# ./Cnblogs.YuanDun.WebApi
就将ASP.NET Core站点运行起来了。
Hosting environment: Production
Content root path: /data/YuanDunWebApi
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
而部署服务器并没有另外安装.NET Core的任何东东,只是将ASP.NET Core站点文件夹拷贝过来就能直接运行,这就是self-contained部署方式,帅吧!
以self-contained方式在Linux上部署ASP.NET Core站点的更多相关文章
- .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点
2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...
- .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点
今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...
- 在 CentOS 7(Linux)上部署ASP.NET Core 2.2 Web应用程序(Tengine、Asp.Net Core MVC、Centos 7、MySql)
一.前言 1.简单记录一下Linux CentOS 7中安装与配置Tengine的详细步骤. 2.简单比较一下Tengine 和Nginx 3.搭建Asp.net Core和部署 Web程序 4.总结 ...
- 尝试在Linux上部署Asp.net Core应用程序
快两个月没接触.net,倒是天天在用Linux,所以想尝试一下在Linux运行喜欢的.net 应用. 安装CentOS 安装.Net core for Linux 创建Asp.net Core应用程序 ...
- 使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序
本文于2019年04月10日将标题「CentOS7 部署 ASP.NET Core应用程序」修改为「使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序」. 环境准备 VMwa ...
- CentOS7上部署ASP.Net Core 2.2应用
前言 在CentOS7上部署ASP.Net Core应用是我的技术路线验证的一部分,下一个产品计划采用ASP.Net Boilerplate Framework开发.因此需要求提前进行一下技术验证,在 ...
- Web Server 在IIS上部署ASP.NET Core项目
在IIS上部署ASP.NET Core项目 一.配置应用程序池为无托管: 二.安装ASPNETCoreModule:(核心) 下载地址:https://go.microsoft.com/fwlink/ ...
- .NET开发框架(五)-IIS上部署ASP.NET Core项目教程
系列教程:从初学者到架构师的一步步蜕变 本篇经验将和大家介绍如何在IIS上部署ASP.NET Core项目,希望对初学.NET CORE的童靴入门有所帮助! 1.打开VS,创建项目,选择ASP.NET ...
- 使用 Nginx 在 Linux 上托管 ASP.NET Core
server { listen 80; server_name example.com *.example.com; location / { proxy_pass http://localhost: ...
随机推荐
- embed chrome 无法播放问题
火狐下<embed src='1.mp3' autostart='false' hidden='true' loop='false' ></embed>正常, chrome 不 ...
- linux中安装mysql数据库
遇到ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' ...
- Tomat简介
Tomcat目录结构bin: 存放各种平台下启动和关闭Tomcat的脚本文件.startup.bat是windows下启动tomcat的文件,shutdown.bat是关闭tomcat的文件.comm ...
- 基于dubbo构建分布式项目与服务模块
关于分布式服务架构的背景和需求可查阅http://dubbo.io/.不同于传统的单工程项目,本文主要学习如何通过maven和dubbo将构建分布项目以及服务模块,下面直接开始. 创建项目以及模块 ...
- git 开发merge rebase 记录
git status git lg git add src/ git commit -m "restful api and portal" //先commit到自己的本地branc ...
- 【UISegmentedControl】- 分段控件
一.初始化 二.常见的属性 1.segmentedControlStyle属性:设置基本的样式 2.momentary属性:设置在点击后是否恢复原样 . 3.numberOfSegments属性:只读 ...
- iOS 遇到的错误总结
1.[[[NSBundle mainBundle] loadNibNamed:@"UIFeedbackController" owner:nil options:nil] firs ...
- jquery 获取奇数索引的元素
$(".btn-xs:odd").click(function(){ var $buy_num=$(this).prev("#buy_num").val(); ...
- js闭包-在你身边却不知
今天组里小伙很纳闷的问了我js绑事件带出的一个小问题,随便聊聊闭包那点事,背景如下: 当点击Button的时候给li绑定事件,事件的大概内容是获取li位置的index再做点事,据他描述代码看上去也没错 ...
- 【WPF】WPF中的List<T>和ObservableCollection<T>
在WPF中 控件绑定数据源时,数据源建议采用 ObservableCollection<T>集合 ObservableCollection<T> 类:表示一个动态数据集合,在添 ...