Asp.Net Core 发布和部署(Linux + Jexus )
前言
在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在 asp.net core 中对我们的已经完成的程序进行发布和部署。
有关如何使用 Nginx 进行部署,请参见本人的另一篇文章:
http://www.cnblogs.com/savorboard/p/dotnet-core-publish-nginx.html
目录
- 安装 Liunx DotNet 环境
- 新建一个 Web 项目,并发布
- 使用 Jexus 进行反向代理
安装 Linux DotNet 环境
安装 dotnet 环境参见官方网站 https://www.microsoft.com/net/core#ubuntu。
新建一个 WebApp 项目,并发布
在 Asp.Net Core 项目中,我们使用 dotnet new -t WebApp 命令和创建一个新的空的 Web 应用程序,然后使用dotnet resotre还原 Nuget。

主要是用以下几个命令:
mkdir HelloWebApp 这个命令是创建一个名为 HelloWebApp 的文件夹。
dotnet new -t Web 这个命令是使用 Web 模板来新建一个 WebApp 的 Mvc 应用程序。
新建了应用程序之后,使用dotnet restore 和 dotnet run 命令来测试一下我们的应用程序。
我们打开浏览器输入 http://localhost:5000,来看一下效果。

可以看到已经成功运行了。
如果发布应用程序,我们需要使用 dotnet publish命令,通过使用 --help 参数可以看到一些可以使用的命令参数。
-f|--framework <FRAMEWORK> Target framework to compile for
-r|--runtime <RUNTIME_IDENTIFIER> Target runtime to publish for
-b|--build-base-path <OUTPUT_DIR> Directory in which to place temporary outputs
-o|--output <OUTPUT_PATH> Path in which to publish the app
--version-suffix <VERSION_SUFFIX> Defines what `*` should be replaced with in version field in project.json
-c|--configuration <CONFIGURATION> Configuration under which to build
--native-subdirectory Temporary mechanism to include subdirectories from native assets of dependency packages in output
--no-build Do not build projects before publishing
我们运行dotnet publish -o ~/WorkSpace/publish 发布到 publish 文件夹,当看到Published 1/1 projects successfully的时候,说明已经发布成功了。
PS: 如果提示没有安装 NPM 工具,运行
sudo install apt-get npm -g,先安装 NPM。
如果提示没有 bower 管理工具,使用sudo npm install bower -g安装 bower。
如果提示没有 gulp 构建工具,使用sudo npm install gulp -g安装 gulp。
如安装过程中无响应,请科学上网后再安装。
发布之后 publish 文件夹里面的子文件夹有必要说明一下。
appsettiong.json 应用程序的配置文件
refs 应用程序引用的.net fx系统程序集
runtimes 运行时环境,可以看到里面的文件夹包含 win7、linxu,mac os 等,说明我们这个应用程序是跨平台的。
views 这个文件夹存放的就是我们的 mvc 的视图文件。
wwwroot 文件夹,存放的是前端使用的 js 库,css 样式表,和图片等。
然后使用dotnet HelloWebApp.dll测试发布过后的程序是否运行正常。

使用 Jexus 进行反向代理
- Jexus 介绍
- 安装 Jexus
- 配置 Jexus
- 注意事项
Jexus 介绍
Jexus 是一款国产的,运行在 Linux 上的 Web 服务器。 具体介绍我就直接放链接了。
官网: http://www.jexus.org/
张善友的介绍:http://www.cnblogs.com/shanyou/archive/2011/01/23/Jexus.html
安装 Jexus
在命令行窗口中,使用以下命令来安装一个绿色版的 jexus(无需另行安装 Mono)。
cd /tmp
wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz
tar -zxvf jexus-5.8.1-x64.tar.gz
sudo mv jexus /usr
sudo rm -rf /tmp/jexus*
使用以下命令来启动 jexus
cd /usr/jexus
sudo ./jws start
打开浏览器输入http://localhost 如果看到下面这个异常界面,代表运行成功了。

配置 Jexus
有两种方式可以在 Jexus 上访问我们的 Web 应用程序。 即端口转发和反向代理的方式,下面是两种方式的配置方法。
1、** 端口转发 **
端口转发,即把 Jexus 配置的端口直接转发到我们的 asp.net 程序中,即转发到 Kestrel 去处理。
2、** 反向代理 **
反向代理,即把我们应用程序的一部分路径交给 Jexus 去处理,比如静态文件,图片等。另外一部分动态的交给Kertrel 来处理。这样可以降低我们的后端 Kertrel 的压力。
还有一个很重要的优势就是 Web 中的缓存,会在代理服务器这一步来处理。大家看下面这个图:

至于怎么样添加代理服务器可以识别到的缓存,可以关注我后面发表的博客文章。
按照上述方式安装完 Jexus 之后,配置文件路径在 /usr/jexus/siteconf/default 文件中。
切换工作目录到/usr/jexus/siteconf/,使用sudo gedit default命令打开 default 文件。
修改内容为如下:
port=80
# Jexus 默认访问的工作目录
root=/ /home/yxd/Workspace/publish
# 下面这种方式是反向代理。我设置的路径是"/"即根目录,大家可以根据
# 需要设置为非静态的路径
reproxy=/ http://localhost:5000/
# 下面这种方式是使用端口转发
AppHost.Port=5000
# 注意: 以上两种方式配置一种即可。
保存并退出。 然后使用sudo ./jws restart命令来重启一下。
然后我们打开浏览器 输入http://localhost,发现此时已经通过 jexus 来访问我们的站点了。

注意事项
1、在使用 jexus 代理访问站点的时候, 保持命令dotnet run HelloWebApp.dll的命令行窗口必须开启。
2、可以使用下面的命令来让一个命令行运行在后台进程中。
nohup dotnet HelloWebApp.dll &
这个时候你就可以把命令行窗口关掉了。
下一篇将讲解如何在 Linux 中使用 Docker 进行部署,以及如何脱离命令行宿主给我们的dotnet程序创建一个守护进程,及宕机失败自动重启等等。。。 请持续关注。
如果你觉得本文对你有帮助,不妨点个【推荐】。
本文地址:http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html
作者博客:Savorboard
欢迎转载,请保留出处
Asp.Net Core 发布和部署(Linux + Jexus )的更多相关文章
- Asp.Net Core 发布和部署 Linux + Nginx
安装.NET Core SDK 官方介绍:https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current ...
- ASP.NET Core托管和部署Linux实操演练手册
一.课程介绍 ASP.NET Core 是一种全新的跨平台开源 .NET 框架,能够在 IIS.Nginx.Apache.Docker 上进行托管或在自己的进程中进行自托管. 作为一个.NET Web ...
- Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署. 有关如何在 Jexus 中进行部署,请 ...
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core ...
- ASP.NET Core 2.0 MVC 发布部署--------- ASP.NET Core 发布的具体操作
ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...
- 使用 Visual Studio 部署 .NET Core 应用 ——ASP.NET Core 发布的具体操作
ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...
- asp.net core 2.1 部署 centos7
asp.net core 2.1 部署 centos7 Kestrel 非常适合从 ASP.NET Core 提供动态内容. 但是,Web 服务功能不像服务器(如 IIS.Apache 或 Nginx ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- [争什么! 掺在一起做撒尿牛丸啊! 笨蛋]ASP.NET Core 2.0 + EF6 + Linux +MySql混搭
好消息!特好消息!同时使用ASP.NET Core 2.0和.NET Framework类库还能运行在linux上的方法来啦! 是的,你没有看错!ASP.NET Core 2.0,.NET Frame ...
随机推荐
- GRUB、MBR名词解释
GRUB:是一个来自GUN项目的多操作系统启动程序,是多启动规范的实现,他允许用户在计算机内同时拥有多个操作系统,并在计算机启动时选择希望的操作系统.GRUB可用于选择系统分区上的不同内核,也可用于向 ...
- ElasticSearch性能优化官方建议
ES 手册 如何提高ES的性能 不要返回较大的结果集 ES是设计成一个搜索引擎的,只擅长返回匹配查询较少文档,如果需要返回非常多的文档需要使用Scroll. 避免稀疏 因为ES是基于Lucene来索引 ...
- pk8和x509.pem转换成keystore
转自:http://www.cnblogs.com/platte/p/3511814.html 一 在github上下载工具 https://github.com/getfatday/keytool- ...
- Datazen地图Chart介绍
本篇主要介绍Datazen对于地图图表的支持,这里你可以看到Datazen目前所支持的地图图表类型,以及其自带的地图数据. Datazen下地图图表跟其它Dashboard的类型是一样的. 创建一个新 ...
- myeclipse一直卡在loading workbench解决方法
删除工作空间下.metadata中的org.eclipse.ui.workbench org.eclipse.ui.workbench.texteditor
- [Java] CPU 100% 原因查找解决
CPU 100%肯定是出现死锁,这个时候观察内存还是够用的,但是CPU一直100%,以下几步解决: 1. 找到进程消耗cpu最大的 $top top - :: up days, :, user, lo ...
- 转:IT公司的十大内耗,别说你公司没有!
这篇文章是以前看到的,觉得写得非常好,转载在自己BLOG作为记录.原文:http://www.pmtoo.com/news/2015/0108/7260.html. 当企业发展到一定时期时,会不可避免 ...
- 第三十二篇:在SOUI2.0中像android一样使用资源
SOUI2.0之前,在SOUI中使用资源通常是直接使用这个资源的name(一个字符串)来引用.使用字符串的好处在于字符串能够表达这个资源的意义,因此使用字符串也是现代UI引擎常用的方式. 尽管直接使用 ...
- Ubuntu——apt && dpkg参考
一.apt apt-cache search # ------(package 搜索包) apt-cache show #------(package 获取包的相关信息,如说明.大小.版本等) sud ...
- [原创]Centos7 从零编译配置Memcached
序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...