700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Linux使用Jexus托管Asp.Net Core应用程序

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

时间:2020-07-30 12:45:46

相关推荐

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

第一步 安装.Net Core环境

安装 dotnet 环境参见官方网站/net/core。

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

dotnet --version

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

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

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

成功运行后会显示 :

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

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

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

那么该怎么办呢?使用Jexus!(需要使用5.8.* 版本或更高版本的)

Jexus 官网地址:/

Jexus 官网论坛:

第二步 安装Jexus

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

curl /release/x64/install.sh|sh

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

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

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

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

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

第四步 配置Jexus运行 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 ,*.# 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= 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=8888root=/ /var/www/应用程序文件夹/hosts=* #OR ,*. 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= 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 或 :8888 ) 即可访问 Core应用程序

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

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

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

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

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

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

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

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

port=8888 # 外部访问的端口号,可以改成你想要的端口号,外部访问通过 ip/域名:端口号

即可访问root=/ /var/www/应用程序文件夹/ # 应用程序的工作根目录(全路径)hosts=*#OR ,*. # 如果为服务器设置了DNS解析,

则可以填写解析到服务器的域名,如:AppHost={ # 最最最重要的配置cmd=dotnet 应用程序名称.dll; # 命令,启动 Core应用要执行的命令

root=/var/www/应用程序文件夹/; # Core应用程序所在的全路径

port=0; # Core应用程序所使用的端口号,如果在程序中使用了UsrUrls

自定义端口则使用UsrUrls中填写的端口(不建议使用UsrUrls自定义端口),

# 在没有使用UsrUrls自定义端口的情况下端口号设置为 0,

Jexus会在运行时与 Core进行"协商"具体使用的端口号,

避免多个应用分配

# 端口的麻烦和冲突的风险。

}

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

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

原文地址:/staneee/p/6852559.html

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。