第一步 安装.Net Core环境

安装 dotnet 环境参见官方网站 https://www.microsoft.com/net/core

选择对应的系统版本进行安装。安装完成过后 输入命令查看版本,目前最新版为 2.x:

dotnet --version

此时已经可以发布Asp.Net Core应用程序到Linux上运行了

将Asp.Net Core程序发布到Linux服务器上,通过 dotnet 命令来运行,如:

dotnet /应用程序全路径/应用程序名.dll 

成功运行后会显示 :

Hosting environment: Production
Content root path: /应用程序全路径/
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

(Asp.Net Core应用程序默认使用5000端口,可以在项目 Program.cs 中进行自定义端口,但不建议在Program.cs中进行自定义端口)

但是这个时候,只要关闭当前的 ssh 会话 那么 Asp.Net Core应用程序就会结束运行。

那么该怎么办呢?使用 Jexus ! (需要使用5.8.2 版本或更高版本的)https://news.cnblogs.com/n/569277/

Jexus 官网地址: https://www.jexus.org/

Jexus 官网论坛: https://www.linuxdot.net

第二步 安装Jexus

安装 Jexus 直接使用一下命令即可(需要在root身份下执行):

curl https://jexus.org/release/x64/install.sh|sh

安装成功后会提示:OK, Jexus has been installed in /usr/jexus.

第三步 发布程序并复制到到Linux服务器

1、发布

  可使用vs直接发布,也可以使用dotnet命令进行发布,或者可以使用我写的一个小工具,对项目进行发布  小工具链接

2、复制到服务器

  将发布的整个应用程序文件夹copy到Linux服务器的  /var/www/   路径下

  (如果 www 文件夹不存在,则使用    mkdir /var/www/    命令创建 www 文件夹)

  此时,应用程序所在的完整路径为    /var/www/应用程序文件夹/应用程序名称.dll

第四步 配置Jexus运行Asp.Net Core应用程序

使用以下命令:

1、切换到Jexus配置文件目录

cd /usr/jexus/siteconf

2、复制默认的配置文件为test

cp default test

3、编辑test配置文件

vi test

test文件默认内容为:

######################
# Web Site: Default
######################################## port=
root=/ /var/www/default
hosts=* #OR your.com,*.your.com # addr=0.0.0.0
# CheckQuery=false
NoLog=true
# AppHost={CmdLine=/usr/local/x/xx;AppRoot=/usr/local/x;Port=}
# NoFile=/index.aspx
# Keep_Alive=false
# UseGZIP=false # UseHttps=true
# ssl.certificate=/x/xxx.crt #or pem
# ssl.certificatekey=/x/xxx.key
# ssl.protocol=TLSv1. # TLSv1. or TLSv1....
# ssl.ciphers= # DenyFrom=192.168.0.233, 192.168..*, 192.168.2.0/
# AllowFrom=192.168.*.*
# DenyDirs=~/cgi, ~/upfiles
# indexes=myindex.aspx
# rewrite=^/.+?\.(asp|php|cgi|pl|sh)$ /index.aspx
# reproxy=/bbs/ http://192.168.1.112/bbs/
# host.Redirect=abc.com www.abc.com
# ResponseHandler.Add=myKey:myValue # Jexus php fastcgi address is '/var/run/jexus/phpsvr'
#######################################################
# fastcgi.add=php|socket:/var/run/jexus/phpsvr # php-fpm listen address is '127.0.0.1:9000'
############################################
# fastcgi.add=php|tcp:127.0.0.1:

编辑完成后 test 的内容为(注意AppHost中的每一项结尾应该有英文半角的分号):

######################
# Web Site: test
######################################## port=
root=/ /var/www/应用程序文件夹/
hosts=* #OR your.com,*.your.com AppHost={
cmd=dotnet 应用程序名称.dll;
root=/var/www/应用程序文件夹/;
port=0;

}
# addr=0.0.0.0
# CheckQuery=false
NoLog=true
# AppHost={CmdLine=/usr/local/x/xx;AppRoot=/usr/local/x;Port=}
# NoFile=/index.aspx
# Keep_Alive=false
# UseGZIP=false # UseHttps=true
# ssl.certificate=/x/xxx.crt #or pem
# ssl.certificatekey=/x/xxx.key
# ssl.protocol=TLSv1. # TLSv1. or TLSv1....
# ssl.ciphers= # DenyFrom=192.168.0.233, 192.168..*, 192.168.2.0/
# AllowFrom=192.168.*.*
# DenyDirs=~/cgi, ~/upfiles
# indexes=myindex.aspx
# rewrite=^/.+?\.(asp|php|cgi|pl|sh)$ /index.aspx
# reproxy=/bbs/ http://192.168.1.112/bbs/
# host.Redirect=abc.com www.abc.com
# ResponseHandler.Add=myKey:myValue # Jexus php fastcgi address is '/var/run/jexus/phpsvr'
#######################################################
# fastcgi.add=php|socket:/var/run/jexus/phpsvr # php-fpm listen address is '127.0.0.1:9000'
############################################
# fastcgi.add=php|tcp:127.0.0.1:

编辑完成后,在英文半角输入法下   按 Esc 键 输入  :wq  完成保存文件修改并退出  (以上修改会在下面进行详细说明)

4、启动/重启 Jexus

当配置文件编辑完成后使用以下命令对Jexus进行 启动/重启

# 如果已启动 Jexus:
sh /usr/jexus/jws restart # 如果未启动 Jexus:
sh /usr/jexus/jws start

启动/重启成功后,在浏览器中输入  ip地址/域名:端口号 例如(192.168.1.1:8888 或 www.aspnetcore.com:8888 )  即可访问Asp.Net Core应用程序

以上即是Jexus托管Asp.Net Core应用程序的配置全过程

通过微软官方的介绍,Asp.Net Core应用程序是运行在 Kestrel 服务器上的,

那么Jexus和Kestrel之间的关系什么呢?正如 Apache与Tomcat之间的关系.

Jexus作为Web服务器,Kestrel是应用服务器,Jexus会将浏览器发送的请求转交给Kestrel,Kestrel 根据请求 交给Asp.Net Core应用程序 处理后将处理结果返回到到Jexus,再由Jexus响应到浏览器,如图所示:

通过上面的图片我们可以看到一次完整的请求响应的过程。

那么Jexus是怎么将请求转发到 Kestrel 服务器中的Asp.Net Core应用程序上的呢?

这里不得不感叹Jexus的强力与使用的便捷,只需要简单的编辑配置文件即可。

在上面 第四步 配置Jexus运行Asp.Net Core应用程序 时,test文件编辑后的内容含义

port=8888                      # 外部访问的端口号,可以改成你想要的端口号,外部访问通过 ip/域名:端口号 即可访问
root=/ /var/www/应用程序文件夹/ # 应用程序的工作根目录(全路径)
hosts=* #OR your.com,*.your.com # 如果为服务器设置了DNS解析,则可以填写解析到服务器的域名,如:www.myweb.com AppHost={ # 最最最重要的配置
cmd=dotnet 应用程序名称.dll; # 命令,启动Asp.Net Core应用要执行的命令
root=/var/www/应用程序文件夹/; # Asp.Net Core应用程序所在的全路径
port=0; # Asp.Net Core应用程序所使用的端口号,如果在程序中使用了UsrUrls自定义端口则使用UsrUrls中填写的端口(不建议使用UsrUrls自定义端口),
# 在没有使用UsrUrls自定义端口的情况下端口号设置为 0,Jexus会在运行时与Asp.Net Core进行"协商"具体使用的端口号,避免多个应用分配 # 端口的麻烦和冲突的风险。
}

配置的重点就在于AppHost中,需要注意的是在AppHost中的port(端口号)不代表Jexus对外服务的port(端口号),而是指要转发的 Asp.Net Core应用程序的端口号,简单来说就是会将外部的请求转发到这个端口,由这个端口对应的Asp.Net Core应用程序对请求进行处理。

强烈推荐“协商端口”,而不是在Asp.Net Core中使用UsrUrls设置端口,避免多个应用分配端口的麻烦和冲突的风险

推荐博客:

宇内流云的博客

张善友的技术博客

惊鸿哥的博客

衣明志的技术博客

另推荐博文:

Jexus开机启动

另感谢 宇内流云 的耐心指导。

ASPNET Core 部署 Linux — 使用 Jexus Web Server的更多相关文章

  1. ubuntu16.04-x64系统中Jexus web server部署.NetCore和端口分析引发的猜想!

    您有这样的牢骚么? 有一周没更新博客了,简单说下在干什么吧:主要是公司安排对接某旅游大公司的接口,接口数量倒也就10个左右,对接完后还需要加入到业务系统中和App端,因此还是需要花点时间的:时间上来说 ...

  2. Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]

    1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...

  3. Jexus web server V5.1 安装配置要点

    一.Jexus简介:Jexus web server for linux 是一款基于.NET兼容环境,运行于Linux/unix操作系统之上,以支持ASP.NET为核心功能的高性能WEB服务器.Jex ...

  4. Jexus-5.6.3使用详解、Jexus Web Server配置

    一.Jexus Web Server配置   在 jexus 的工作文件夹中(一般是“/usr/jexus”)有一个基本的配置文件,文件名是“jws.conf”. jws.conf 中至少有 Site ...

  5. Jexus web server V5.4.5 已经发布

    Jexus 是运行于 Linux/FreeBSD 平台的一款以支持 ASP.NET 为主要特色的,同时非常重视安全性和稳定性的高性能 WEB 服务器.最新版 5.4.5 已经发布,官方网站是:www. ...

  6. Jexus web server V5.6.1正式公布

    Jexus v5.6.1已经正式公布,下载和技术支持站点是 www.linuxdot.net. 该版开发时间历时11个月,后期直接在大流量生产环境中进行调试和优化,其正确性.稳定性.大并发承载能力.A ...

  7. .Net Core部署Linux系统(CentOS7.6)

    .net core版本:2.2 Linux:CentOS 7.6 所需工具: Xshell 6 + Xftp 6 第一步:在Startup类中加入这两行代码 然后本地发布项目: 第二步,安装.Net ...

  8. 三、ASP.NET Core 部署Linux

    预备工作 1.删除dotnet core sdk sudo yum erase libunwind libicu 2.删除链接 sudo rm -rf /usr/local/bin 3.sudo yu ...

  9. ASP .NET CORE 部署linux 系统上的所需要的sdk 使用链接

    https://www.microsoft.com/net/learn/get-started/linuxopensuse

随机推荐

  1. R in action读书笔记(20)第十五章 处理缺失数据的高级方法

    处理缺失数据的高级方法 15.1 处理缺失值的步骤 一个完整的处理方法通常包含以下几个步骤: (1) 识别缺失数据: (2) 检查导致数据缺失的原因: (3) 删除包含缺失值的实例或用合理的数值代替( ...

  2. node.js入门之一

    简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端Ja ...

  3. 最新WIN10系统32位和64位纯净版自动激活版1010074 V2015年

    系统来自:系统妈 本系统定位于个人在家庭.网吧.办公环境使用,采用久经考验的精简方法和体积压缩技术,在小巧体积中提供了几乎100%的原版Win10兼容性.经过在多个版本的更新和升级过程后,已经被证明能 ...

  4. Swift3命名空间的实现

    最近在看一些Swift开源库的时候,发现了一些优秀的开源库都使用了命名空间,例如Kingfisher这个开源库中,就针对UIImage,UIImageView,UIButton做了命名空间的扩展.通过 ...

  5. 单文件组件.vue---父子组件通信

    每一个.vue 文件就是一个 组件,组件和组件相互组合,就成了一个应用,这就涉及到的组件和组件之间的通信,最常用的就是父子之间的通信.在vue 中, 在一个组件中通过 import 引入另一个组件,这 ...

  6. 06XML JavaScript

    1. XML JavaScript XMLHttpRequest 对象 XML DOM (XML Document Object Model) 定义了访问和操作 XML 文档的标准方法.

  7. Delphi最简化异步选择TCP服务器

    网上Delphi的Socket服务器优良代码,实在少见,索性写个简化的异步Socket服务器,虽然代码较少,但却该有的都有了,使用的是异步选择WSAAsyncSelect,减少了编写线程的繁琐.可能会 ...

  8. 【thinking in java】反射

    前言 反射是框架设计的灵魂,使用的前提条件:必须先得到字节码的Class,Class类用于表示字节码,字节码即是.class文件 概述 JAVA反射机制:在程序运行的过程中,对于任意一个类,都可以知道 ...

  9. RNNCell使用

    目录 Recap input dim, hidden dim SimpleRNNCell Single layer RNN Cell Multi-Layers RNN RNN Layer Recap ...

  10. LeetCode (45) Jump Game II

    题目 Given an array of non-negative integers, you are initially positioned at the first index of the a ...