.NetCore项目在Liunx中使用Jexus托管详解

本文实例环境及版本 Centos7 、NetCore 3.1、Supervisor 4.2.1版本、Jexus/6.3.2021.0210

前置条件需在Centos中安装好NetCore环境、把生成发布好的项目文件配置到指定服务器目录下

Jexus简介

官方地址:Jexus技术文档

Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关服务器,以支持asp.net、asp.netcore、php为特点,同时具有反向代理、入侵检测等重要功能。能够这样说,Jexus是.NET、.NET CORE跨平台的最优秀的宿主服务器,若是咱们认为它是Linux平台的IIS,这并不为过,由于,Jexus不但快,并且拥有IIS和其它Web服务器所不具有的高度的安全性。同时,Jexus Web Server 是彻底由中国人自主开发的的国产软件,真正作到了“安全、可靠、可控”。既可以托管.NetCore项目也可以守护项目进程,有了Jexus,就不需要安装和配置Supervisor。

Jexus的下载安装

1、是使用官方自动安装脚本(独立专业版即自带.net运行时不需要在客户服务器安装mono就能正常运行的Jexus版本)

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

安装完成默认目录地址为/usr/jexus

2、手动下载

wget https://linuxdot.net/down/jexus-6.2.x-x64.tar.gz
tar zxvf jexus-6.2.x-x64.tar.gz  #解压缩下载文件
#将Jexus文件夹复制移动到usr目录下,到此安装完成
sudo mv jexus /usr
#将刚才下载的jexus文件删除
#sudo rm –rf /tmp/jexus*

#查看jexus的版本信息  截止2021年2月最新版为6.3
/usr/jexus/jws -V

Jexus的配置说明

1、关于Jexus的配置为 /usr/jexus目录下的jws.conf文件该文件,指明了网站配置文件的存放位置、日志、证书等相关配置字段说明如下(一般不用管,默认就可以了)

SiteLogDir=log    #网站日志以及Jexus系统日志的存放位置,必填项。可以使用基于jws.exe文件的相对路径
SiteConfigDir=siteconf     #网站配置文件存放的位置,是必填项。可以使用绝对路径,也可以使用基于jws.conf文件的相对路径
Runtime=v4.0.30319    #设定Jexus工作进程运行于哪个.NET版本
httpd.processes=1     #工作进程的数量,建议每6-8核CPU用一个进程,最多可设4个进程
httpd.user=www-data     #工作进程以什么用户身份和对应权限工作,默认为root
php-fcgi.set=/usr/bin/php-cgi,6    #如果需要Jexus同时充当PHP FastCGI服务器,这一句就是fast-cgi设置,分两个部分,逗号前为php-cgi这个文件的路径,逗号后是php进程数
CertificateFile=/xxxx/xx.crt    #SSL证书路径(如果需要使用https协议才填)
CertificateKeyFile=/xxxx/xx.key    #SSL密钥文件路径(如果需要使用https协议才填)
<br></br>#注:jws.conf 中,SiteConfigDir 和 SiteLogDir 两项是必填项。

2、关于要守护的网站(应用程序)的配置

官方文档地址:https://www.linuxdot.net/bbsfile-3084

文件默认在/usr/jexus/siteconf文件夹下 默认会有一个default的文件,没有后缀名

首先要注意如下三个规则:

a、必须把所有网站配置文件放到jws.conf指定的网站配置文件夹内,这个文件夹除了网站配置文件,不能有其它任何文件,因为jexus会认为这儿的任何一个文件都代表着一个不同的网站。
b、每个网站有且只有一个配置文件,配置文件的文件名就是这个网站的名称,比如 www.mysite.cn这个网站,配置文件名可以写成“mysite”,当然也可以写成其它文件名,以便管理员容易记忆和识别,但要特别注意:文件名不能有空格!
c、一个网站可以拥有任意多的域名,不同网站不能有相同的域名,没有域名的网站只能有一个,这个没有域名的网站叫做“默认网站”,而一台服务器最多只能有一个默认网站。

可以把default文件改为我们的项目名称如mzpro 如果有多个项目新建多个配置文件即可。

相关配置字段说明如下

port=80   #jexus WEB服务器侦听端口(必填默认80)记住一台服务器只能有一个默认端口号80
root=/ /data/Appcode/mzpro   #网站URL根路径(虚拟目录)和对应的物理路径,两个路径字串之间必须用空格分开(必填。既使这个网站是一个纯粹的反向代理站,也得填)
#禁止某IP或IP段访问本网站
DenyFrom=192.168.0.233,192.168.1.*,192.168.2.0/24
#禁止访问某文件夹及其子文件夹中的内容
DenyDirs=网站文件夹路径的URL路径,如 “/abcfiles”或 “~/abcfiles”,多个路径,用英文逗号分开
#是否对请求的URL等进行安全检测
CheckQuery= false  #本选项默认是true,即需要检查。关掉本项可以提高服务器速度,但就安全而言,不建议关掉它
NoFile= /index.aspx  #这是Jexus特有的功能,指的是如果服务器不存在用户要访问的文件,服务器将使用什么文件应答,路由后,原RUL路径会存贮在Jexus特有一个服务器变量“X-Real-Uri”中。用这个功能,或者再加上URL Rewrite功能,你完全可以把URL路径与真实路径隔离开来,达到信息隐藏和简化URL的作用。
#长连接开关
Keep_Alive=false  #默认值是true,即默认使用长连接,可以不填
#启用gzip压缩功能
UseGZIP=false  #启用这个功能后,当用户访问“.htm”“.js”等文件时,Jexus会将这些文件进行GZIP压缩后发送给用户浏览器,这样,可以节约更多的网络带宽

使用Jexus+Supervisor作为反向代理

关于Supervisor就不说了,直接参考 NetCore项目在Linux中使用Supervisor托管详解 - 贾可斯 - 博客园 (cnblogs.com)

打开mzpro文件修改配置文件如下

port=80   #jexus WEB服务器侦听端口(必填默认80)记住一台服务器只能有一个默认端口号80
root=/ /data/Appcode/mzpro   #网站URL根路径(虚拟目录)和对应的物理路径,两个路径字串之间必须用空格分开(必填。既使这个网站是一个纯粹的反向代理站,也得填)
hosts=*    #OR your.com,*.your.com
#设置反向代理的两种方式 推荐第一种
#1、指定80端口对应转向的端口号
AppHost.Port=5011
#2、需要设置为非静态的路径,指明80端口对应转向的访问地址
#reproxy=/ http://localhost:5011/

刷新Jexus配置并启动

sudo /usr/jexus/jws restart

然后直接服务器IP地址就可访问(默认80端口)发现已经默认转向到了5011端口的项目上了。

但是Supervisor不能关闭如果关闭了则会报错

![]()

使用Jexus来守护项目进程,反向代理等。不再使用Supervisor

配置文件如下

port=80
root=/ /data/Appcode/mzpro
hosts=*    #OR your.com,*.your.com
#Jeuxs 5.8.2及以上版本针对Asp.Net Core应用程序,新增“AppHost”配置项。将HTTP自宿主应用程序(如Asp.net Core应用程序、Node.js应用程序等)<br></br>#统一纳入Jexus的工作进程序列进行管控(启动、停止、重启、崩溃后自动恢复等管理、监控功能),为Asp.Net Core应用程序进入企业化生产环境提供了强有力的平台保障。此配置不支持原先的NetFramework
AppHost={<br></br>   env=ASPNETCORE_ENVIRONMENT=Development;   #可选项 配置程序运行的环境变量
    cmd=dotnet /data/Appcode/mzpro/Mzpro.dll;     #必填项 进行dotnet 项目名.dll运行操作
    root=/data/Appcode/mzpro/;      #必填项 项目的工作目录
    port=5011;                      #可选项。表示这个应用程序的侦听端口,多个端口用英文逗号分隔<br></br>    ErrLog=/var/log/mzpro.err.log;  #可选项 表示这个应用程序的异常输出重定向到指定的文件<br></br>   OutLog=/var/log/mzpro.out.log;  #可选项 表示将这个应用程序的控制台输出重定向到指定的文件(需填写完整路径)<br></br>}
#记得注释掉这个
#AppHost.Port=5011

此时即使关闭掉Supervisor 也可以正常访问我们的项目了。通过IP地址(默认80端口)访问即可

设置Jexus开机启动

在/lib/systemd/system 目录下新建 jexus.service

打开添加如下配置

[Unit]
Description=jexus
After=network.target
[Service]
Type=forking
ExecStart=/usr/jexus/jws start
ExecReload=/usr/jexus/jws restart
ExecStop=/usr/jexus/jws stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

然后将Jexus加入Liunx服务中

systemctl enable jexus.service

启动Jexus服务

systemctl start jexus.service

查看Jexus服务状态

systemctl status jexus.service

重启服务器然后测试即可。至此关于Jexus的相关操作和配置就可以了。

Jexus的相关操作命令

#启动Jexus  
sudo /usr/jexus/jws start
#中止Jexus   
sudo /usr/jexus/jws stop
#重启Jexus   
sudo /usr/jexus/jws restart<br></br>#重启Jexus下的某个站点<br></br>sudo /usr/jexus/jws restart siteName(站点名称)

才疏学浅,相关文档等仅供自我总结及交流,不能与各位大神相提并论,不喜勿喷,如有相关问题可留言交流谢谢。

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。