.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协议才填)
#注: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来守护项目进程,反向代理等
配置文件如下
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应用程序等)
#统一纳入Jexus的工作进程序列进行管控(启动、停止、重启、崩溃后自动恢复等管理、监控功能),为Asp.Net Core应用程序进入企业化生产环境提供了强有力的平台保障。此配置不支持原先的NetFramework AppHost={
env=ASPNETCORE_ENVIRONMENT=Development; #可选项 配置程序运行的环境变量 cmd=dotnet /data/Appcode/mzpro/Mzpro.dll; #必填项 进行dotnet 项目名.dll运行操作 root=/data/Appcode/mzpro/; #必填项 项目的工作目录 port=5011; #可选项 表示这个应用程序的侦听端口,多个端口用英文逗号分隔
ErrLog=/var/log/mzpro.err.log; #可选项 表示这个应用程序的异常输出重定向到指定的文件
OutLog=/var/log/mzpro.out.log; #可选项 表示将这个应用程序的控制台输出重定向到指定的文件(需填写完整路径)
} #记得注释掉这个 #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
#重启Jexus下的某个站点
sudo /usr/jexus/jws restart siteName(站点名称)
才疏学浅,相关文档等仅供自我总结,如有相关问题可留言交流谢谢。