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,一经查实,立即删除!

相关文章

C++字符串分割替换 ubuntu版本

#include <iostream> #include <string> #include <vector> using namespace std; vector<string> mySplit(const string& str,string sp_string) // split(),str 是要分割的string { vector<string> vecString; int sp_stringLen sp_st…

优秀学生专栏——董超

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

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

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

JS中的延时调用

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script type"text/javascript">var num 1;//开启一个定时器/*setInterval(function(){console.log(num);},3000);*//** 延时调用&#xff…

动态代理JDK于cglib

静态代理的缺点&#xff1a; 1、由于静态代理中的代理类是针对某一个类去做代理的&#xff0c;那么假设一个系统中有100个Service&#xff0c;则需要创建100个代理类 2、如果一个Service中有很多方法需要事务&#xff08;增强动作&#xff09;&#xff0c;发现代理对象的方法中…

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

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

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

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

JS中的JSON

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><!--如果需要兼容IE7及以下的JSON操作&#xff0c;则可以通过引入一个外部的js文件来处理--><script type"text/javascript" src"js…

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

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

maven的三种packaging方式

pom是maven依赖文件 jar是java普通项目打包 war是java web项目打包 pom&#xff1a;打出来可以作为其他项目的maven依赖&#xff0c;在工程A中添加工程B的pom&#xff0c;A就可以使用B中的类。用在父级工程或聚合工程中。用来做jar包的版本控制。 jar包&#xff1a;通常是开发…

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

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

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

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

.NET特性:异步流

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

MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established

Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45, 5.6.26 and 5.7.6 requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing appli…

优秀学生专栏——孙珩发

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

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

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

优秀学生专栏——王浩

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

.NET Framework 4.7正式发布

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