Linux使用Jexus托管Asp.Net Core应用程序

第一步 安装.Net Core环境

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

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

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.* 版本或更高版本的)

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服务器

将的Asp.Net Core 应用程序文件夹 发布到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=80root=/ /var/www/defaulthosts=*    #OR your.com,*.your.com# addr=0.0.0.0# CheckQuery=falseNoLog=true# AppHost={CmdLine=/usr/local/x/xx;AppRoot=/usr/local/x;Port=5000}
# 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.0    # TLSv1.1 or  TLSv1.2...
# ssl.ciphers= # DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24# 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  301# 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:9000

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

######################
# Web Site: test
########################################port=8888                    root=/ /var/www/应用程序文件夹/
hosts=*   #OR your.com,*.your.com AppHost={cmd=dotnet 应用程序名称.dll;   root=/var/www/应用程序文件夹/;  port=0;       }# addr=0.0.0.0# CheckQuery=falseNoLog=true# AppHost={CmdLine=/usr/local/x/xx;AppRoot=/usr/local/x;Port=5000}
# 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.0    # TLSv1.1 or  TLSv1.2...
# ssl.ciphers= # DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24# 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  301# 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:9000

编辑完成后,在英文半角输入法下   按 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.comAppHost={ # 最最最重要的配置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设置端口,避免多个应用分配端口的麻烦和冲突的风险


原文地址:http://www.cnblogs.com/staneee/p/6852559.html


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

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

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

相关文章

优秀学生专栏——董超

优秀学生--董超今天回访了下17级优秀学生董超同学,董超同学在校期间一直担任小组组长,平时学习刻苦认真,各个阶段的项目也做的非常优秀,今年5月份左右毕业,所在岗位是开发,目前的薪资在5000左右&#xff0c…

高级开发必须理解的Java中SPI机制

转载自 高级开发必须理解的Java中SPI机制 本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。 SPI是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实…

以深圳.NET俱乐部名义 的技术交流会圆满成功

2017年5月13日的深圳下着暴雨,一场以深圳.NET俱乐部名义的.NET技术交流会在微软Build 2017刚闭幕时在罗湖布吉路与翠山路交界处富基PARK国际6F举办,这次交流以微软Build 2017 大会发布的.NET Standard 2.0 Preview1/.NET Core 2.0 Preview 1为契机&#…

关于勒索病毒 Ransom:Win32.WannaCrypt 解决方案的最后一次说明

2017/5/12 晚,勒索软件 Ransom:Win32.WannaCrypt 大面积暴发。比病毒爆发更火的,则是各类关于此病毒的新闻、解决方法在朋友圈等社交媒体的爆发。 其中,有主观善意但客观一知半解的指导,更有夹带私货的安全软件商携各类工具的广告…

C#中的序列化和反序列化案例

序列化:是将对象的状态存储到特定存储介质的过程,也可以说是将对象状态转换为可保持或传输的格式的过程。上面的解释是官方定义,大白话解释就是,将对象以二进制的方式存储在文件中,如果简简单单的将一些数据或者内容存…

浅谈MySQL的B树索引与索引优化

转载自 浅谈MySQL的B树索引与索引优化 MySQL的MyISAM、InnoDB引擎默认均使用B树索引(查询时都显示为“BTREE”),本文讨论两个问题: 为什么MySQL等主流数据库选择B树的索引结构? 如何基于索引结构,理解常…

.NET特性:异步流

自从VB/C#开始支持async/await后,开发者一直在期待异步版本的IEnumerable。但直到C# 7和ValueTask发布前,从性能的角度来看这一要求几乎是不可能实现的。 在老版本C#中,开发者每次使用await时都需要进行内存分配。如果要枚举10,000个项&…

优秀学生专栏——孙珩发

继优秀学生董超同学之后的孙珩发同学的回访录,孙珩发同学于今年5月份毕业,是一个非常非常懂事的孩子,比如让他帮忙拿一下水杯,一般的同学都是直接给你拿杯子过来,而孙珩发同学可不是,他会将水杯里面接满水&…

Java并发编程包中atomic的实现原理

转载自 Java并发编程包中atomic的实现原理 这是一篇来自粉丝的投稿,作者【林湾村龙猫】最近在阅读Java源码,这一篇是他关于并发包中atomic类的源码阅读的总结。Hollis做了一点点修改。 引子 在多线程的场景中,我们需要保证数据安全&#…

优秀学生专栏——王浩

今天继续回访优秀学生王浩,王浩是班级里学习最好的同学,就业的时候也是最早入职的,目前所处岗位是开发,最近在北京出差。企业多次向学校表扬王浩同学,以下是王浩同学的简单回访:想对学弟学妹说些什么&#…

.NET Framework 4.7正式发布

以前.NET Framework 4.7是随Windows 10 Creators Edition一并提供的,现在它已经正式发布,这意味着使用旧版本Windows的用户现在也能安装它了。.NET Framework 4.7通过Windows 10 Anniversary Update发布,支持Windows 7 SP1及以上版本&#xf…

如何高效排查系统故障?一分钱引发的系统设计“踩坑”案例

转载自 如何高效排查系统故障?一分钱引发的系统设计“踩坑”案例 背景说明 某日,做产品X的开发接到客户公司电话,说是对账出了1分钱的差错,无法处理。本着“客户第一”的宗旨,开发立马上线查看情况。查完发现&#…

优秀学生专栏——李浩然

今天回访的同学是李浩然同学,李浩然同学不光长得帅(下面有照片哦),技术还过硬,今年5月份毕业的,目前从事教学工作,自从工作以来,企业曾多次向学校表扬李浩然同学,下面是对…

一步步学习EF Core(1.DBFirst)

前言 很久没写博客了,因为真的很忙,终于空下来,打算学习一下EF Core顺便写个系列, 今天我们就来看看第一篇DBFirst. 本文环境:VS2017 Win7 .NET Core1.1 EF Core1.1.2 正文 这里我们不讨论是用DBFirst好,还是CodeFirst高端..各有各自的用处和适用场景.. 我们单纯的只是…

ASP.NET Core改进了.NET Framework中的字符串处理

显然Microsoft开发人员和管理人员并没有表达清楚,事实上ASP.NET Core 2.0将会得到整个.NET Framework的支持。当前的更改只实现了在ASP.NET上提供.NET Core,这是为了便于开发而采取的一个临时步骤。对此,在ASP.NET Core预览发行声明中给出了如…

阿里P9谈程序员程序员的青春饭

转载自 阿里P9谈程序员程序员的"青春饭" 导读:你是否曾经认真思考过——毕业3-5年、10年,乃至更久后,我们希望成为什么样的人?作为一名技术人,我们要如何规划自己的职业发展生涯?网上热议的“…

优秀学生专栏——孙振涛

今天继续回访17级优秀毕业生,今天回访的同学是孙振涛同学,孙振涛在班内一直都是比较安稳守纪律,上学期间未违反过任何纪律,毕业之后自己创业合伙开了一个互联网公司,目前公司正在走上正轨,以下是对孙振涛同…

不可思议黑科技,Xamarin移动开发新时代

黑科技!新一代Xamarin竟然可以将.NET代码原生编译成:Jar包供Java原生调用、swift类库、obj-c类库、C类库 供目标平台传统代码直接调用 之前和很多朋友聊到Xamarin觉得确实不错,原生性能,研发效率提升2倍,研发成本降低5…