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 运行时环境,可以看到里面的文件夹包含 win7linxumac 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 /tmpwget linuxdot.net/down/jexus-5.8.1-x64.tar.gztar -zxvf jexus-5.8.1-x64.tar.gzsudo mv jexus /usrsudo rm -rf /tmp/jexus*

使用以下命令来启动 jexus

cd /usr/jexussudo ./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


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

购物车的功能——CSS源码

里面所用到的图片资源统一都在“我的资源”里面&#xff0c;相对应的图片是“ 购物车源码相关图片 ”http://download.csdn.net/detail/qq_34137397/9665878&#xff0c; 此CSS的对应的是“购物车的功能——界面源码”的内容 charset "gb2312"; /* CSS Document */…

Java NIO系列教程(十 五)Java NIO Path

转载自 Java NIO系列教程&#xff08;十 五&#xff09;Java NIO Path译文链接 译者&#xff1a;章筱虎 Java的Path接口是Java NIO2 的一部分&#xff0c;是对Java6 和Java7的 NIO的更新。Java的Path接口在Java7 中被添加到Java NIO&#xff0c;位于java.nio.file包中&#x…

discuz 版块导航function_forumlist.php,Discuz! X2“扩建”左侧版块导航 让社区层次一目了然...

一般情况下&#xff0c;当社区具有大量栏目和版块的时候&#xff0c;用户往往很容易迷失其中&#xff0c;不清楚自己所在的版块位置&#xff0c;同时也很难找到“目的”版块&#xff0c;容易造成不良的用户体验。Discuz!X2针对此问题在“用户体验”方面做了深度优化。Discuz!X2…

学习ASP.NET Core,你必须了解无处不在的“依赖注入”

ASP.NET Core的核心是通过一个Server和若干注册的Middleware构成的管道&#xff0c;不论是管道自身的构建&#xff0c;还是Server和Middleware自身的实现&#xff0c;以及构建在这个管道的应用&#xff0c;都需要相应的服务提供支持&#xff0c;ASP.NET Core自身提供了一个DI容…

Java 进程间文件锁FileLock详解

转载自 Java 进程间文件锁FileLock详解最近需要在两个进程中对同一个文件进行操作&#xff0c;正好Java 提供了文件锁FileLock类&#xff0c;利用这个类可以控制不同程序(JVM)对同一文件的并发访问&#xff0c;实现进程间文件同步操作。FileLock是java 1.4 版本后出现的一个类…

求瑞年的java程序,java 计算瑞年的方法

任何语言都有可能计算某一年是否为瑞年的方法&#xff0c;也就是说一年有 366 天&#xff0c;每隔4 年就出现一次。最基本的算法如下&#xff1a;if year is divisible by 400 thenis_leap_yearelse if year is divisible by 100 thennot_leap_yearelse if year is divisible b…

购物车的功能——JS源码

此CSS的对应的是“购物车的功能——界面源码”的内容和“购物车的功能——CSS源码”的内容&#xff0c;希望大家不要乱 $(function(){//点击复选框全选或全不选效果$("#allCheckBox").click(function(){var checked$(this).is(":checked");$(".cart_t…

.NET Core应用类型(Portable apps amp; Self-contained apps)

介绍 有许多种方式可以用来考虑构建应用的类型&#xff0c;通常类型用来描述一个特定的执行模型或者基于此的应用。举例说&#xff1a;控制台应用&#xff08;Console Application&#xff09;、Web应用&#xff08;Web Application&#xff09;等等。所有这些类型的应用都可以…

Java NIO系列教程(十二) Java NIO与IO

转载自 Java NIO系列教程&#xff08;十二&#xff09; Java NIO与IO 译文地址 作者&#xff1a;Jakob Jenkov 译者&#xff1a;郭蕾 校对&#xff1a;方腾飞 当学习了Java NIO和IO的API后&#xff0c;一个问题马上涌入脑海&#xff1a; 我应该何时使用IO&#xff0c;何…

php oracle 无查询结果,php - Oracle Insert查询不起作用,也不会抛出任何错误 - 堆栈内存溢出...

嗨&#xff0c;我是Oracle的新手。我试图在PHP中使用oracle将记录插入表中。 但它不起作用&#xff0c;也没有抛出任何错误。以下是我的代码。 请告诉我我做错了什么。$insertSQL "INSERT INTO GL_USR_MAIL_FOLDER(FK_GLUSR_USR_ID, GL_USR_MAIL_FOLDER_NAME) VALUES (:US…

.NET Core 1.0发布:微软开源跨平台大布局序幕

在6月27日的红帽DevNation峰会上&#xff0c;微软正式发布了.NET Core 1.0、ASP.NET 1.0和Entity Framework Core 1.0&#xff0c;这些产品将全部支持Windows、OS X和Linux三种操作系统。其中.NET Core最受瞩目&#xff0c;这是一款跨平台、开源且模块化的.NET平台&#xff0c;…

无缝滚动图片——源码

图片已上传&#xff0c;请到我的资源部去下载&#xff0c;不用积分&#xff0c;——无缝滚动图片http://download.csdn.net/detail/qq_34137397/9665933 </head> <body> <div class"control"><label id"chk_pause"><input type…

Java NIO系列教程(十一) Pipe

转载自 Java NIO系列教程&#xff08;十一&#xff09; Pipe 原文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a;黄忠 校对&#xff1a;丁一 Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道&#…

配置oracle网络连接命令,配置oracle网络环境

向数据库注册实例的方法有静态注册和动态注册两种。对于静态注册来说&#xff0c;我们可以将一列硬编码在listener.ora文件中。动态注册意味着实例在启动时要定位侦听器并注册到侦听器中。动态注册是向侦听器注册一个实例的首选方法&#xff0c;初始化参数LOCAL_LISTENER会告知…

ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

在上一节&#xff08;ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行&#xff09;中提到ASP.NET Core WebApp 必须含有Startup类,在本节中将重点讲解Startup类以及Middleware(中间件)在Startup类中的使用。 Startup Class Startup Class中含有两个重要方法&#xff1a;Con…

oracle中闪回和回滚,oracle闪回操作详解

Oracle的闪回oracle中为什么会有闪回呢&#xff01;它的作用是什么呢&#xff1f;我们来学习一下闪回吧&#xff01;闪回和回滚异曲同工之妙。一闪回的介绍(1)在Oracle的操作工程中&#xff0c;会不可避免地出现操作失误或者用户失误&#xff0c;例如不小心删除了一个表等&…

Java NIO系列教程(十) Java NIO DatagramChannel

转载自 Java NIO系列教程&#xff08;十&#xff09; Java NIO DatagramChannel 译文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a;郑玉婷 校对&#xff1a;丁一 Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议&#xff0c…

在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序

前言&#xff1a; 随着ASP.NET Core 1.0的发布&#xff0c;论坛里相关的文章也越来越多&#xff0c;正好有时间在测试环境上搭建 ASP.NET Core的发布环境&#xff0c;把过程中遇到的问题写给大家&#xff0c;以便有用到的朋友需要。 环境&#xff1a; Windows Server 2012 R2 S…

Github Pages + Jekyll 独立博客一小时快速搭建上线指南

只要一小时&#xff1f;&#xff01; 人生道路上布满了坑&#xff0c;于是有了人生导师。 美丽的地球上布满了坑&#xff0c;于是有了Google Earth。 使用Github Pages搭建独立博客的过程中布满了坑&#xff0c;所以有了这篇指南。 我在自己查找资料搭建的过程中发现了许多大…

Java NIO系列教程(九) ServerSocketChannel

转载自 Java NIO系列教程&#xff08;九&#xff09; ServerSocketChannel 译文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a;郑玉婷 校对&#xff1a;丁一 Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的Server…