打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux 使用Jexus 托管 ASP.NET Core 应用程序


来源:玩双截棍的熊猫

cnblogs.com/staneee/p/6852559.html


第一步 安装.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.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服务器


将的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=80

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=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=false

NoLog=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.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设置端口,避免多个应用分配端口的麻烦和冲突的风险


看完本文有收获?请转发分享给更多人

关注「DotNet」,提升.Net技能 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ASP.NET Core '完整发布,自带运行时' 到jexus
Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi(跨平台)
使用cmd命令行(.NET Core CLI)来启动ASP.NET Core 应用程序的多个实例
部署 Asp.Net Core 应用到 Docker
ML.NET 示例:对象检测-ASP.NET Core Web和WPF桌面示例
在CentOS8中部署Asp.net Core 5.0 WebApi
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服