# Jexus的安装和配置 **Repository Path**: equi/doc-jexus ## Basic Information - **Project Name**: Jexus的安装和配置 - **Description**: Jexus是由宇内流云大神开发的一个强劲、坚固、免费、易用的Linux ASP.NET服务器。本仓库详细论述Jexus的安装和配置。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://jexus.org/ - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-10-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Jexus使用文档 ## 快速开始 ### 什么是Jexus Jexus是一个强劲、坚固、免费、易用的Linux ASP.NET服務器(Jexus官方网站)。 * 官方网站:[https://jexus.org/](https://jexus.org/) * 社区论坛:[https://linuxdot.net](https://linuxdot.net) ### 安装 Jexus“独立版”指的是自带.net运行时(mono),不需要在客户服务器安装mono就能正常运行的Jexus版本。该版本只支持CPU为AMD64架构的64位Linux操作系统。 安装jexus独立版的命令是: ```sh curl https://jexus.org/release/x64/install.sh|sudo sh ``` > 注:运行安装命令,需要操作者有root权限。该命令将Jexus安装到**/usr/jexus**目录。 > 如果需要在X86架构的32位Linux,或ARM架构的Linux下使用请阅读后文。 ### 启动Web应用 Jexus配置了一个默认网站位于 **/var/www/default** ,将您的Web应用拷贝到该目录后,向 **jexus** 传入 **start** 参数运行,将启动该Web应用。 ```sh sudo /usr/jexus/jws start ``` ### 设置开机启动 编辑 **/etc/rc.local** 文件,在 **exit 0** 行前加入以下命令将使Jexus开机自动启动Web应用。 ```sh /usr/jexus/jws start ``` > 不同的Linux发行版本设置开机脚本的方法不同。如果 **rc.local** 在您的系统中不存在,请自行搜索设置开机启动的方法。 ### Jexus的各个版本 Jeuxs同时支持X86或ARM架构的32位或64位系统。 64位系统优先使用专业版,自带mono运行时,可以节省安装mono时间。 * [Jexus V6.1 X86_64 Linux 专业版](https://linuxdot.net/down/jexus-6.1-x64.tar.gz) * [Jexus V6.1 ARM_64 Linux 专业版](https://linuxdot.net/down/jexus-6.1-arm64.tar.gz) 32位系统请使用标准版,需要先安装**mono-devel**,安装方法见[mono项目](https://www.mono-project.com/download/stable/)官方网站。 * [Jexus V6.1 For linux 标准版](https://linuxdot.net/down/jexus-6.1.tar.gz) * [Jexus V6.1 Linux ARM 标准版](https://linuxdot.net/down/jexus-6.1-arm.tar.gz) Jexus V6.x 同步mono更新升级,从论坛中可获得最新的技术支持,但移除了对Owin的支持。 Jexus V5.8.3 为版本5的最后版本,同时支持ASP.NET管道和Owin。如果您需要在ASP.NET应用中同时支持SignalR,请使用该版本,下载地址为: * [Jexus V5.8.3 X86_64 Linux 专业版](https://linuxdot.net/down/jexus-5.8.3-x64.tar.gz) * [Jexus V5.8.3 ARM_64 Linux 专业版](https://linuxdot.net/down/jexus-5.8.3-arm64.tar.gz) * [Jexus V5.8.3 For linux 标准版](https://linuxdot.net/down/jexus-5.8.3.tar.gz) * [Jexus V5.8.3 Linux ARM 标准版](https://linuxdot.net/down/jexus-5.8.3-arm.tar.gz) Jexus V6也可以和TinyFox组合使用,实现对Owin的支持,详见[论坛](https://linuxdot.net/)。 > Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,以支持ASP.NET、ASP.NET CORE、PHP为特色,同时具备反向代理、入侵检测等重要功能。可以这样说,Jexus是.NET、.NET CORE跨平台的最优秀的宿主服务器,如果我们认为它是Linux平台的IIS,这并不为过,因为,Jexus不但非常快,而且拥有IIS和其它Web服务器所不具备的高度的安全性,这是政府机构和重要企业对web服务器最必要也是最重要的品质需求。(Jexus官方网站) ### Jexus的命令 执行 **cd** 命令将工作目录切换到jexus安装目录(默认为 **/usr/jexus** ),可执行如下操作命令。 * 启动: ```sh sudo ./jws start ``` * 停止: ```sh sudo ./jws start ``` * 重启: ```sh sudo ./jws restart ``` * 查看状态: ```sh sudo ./jws status ``` * 查看版本: ```sh sudo ./jws -v ``` > 专业版将同时输出Jexus版本和mono版本,标准版仅输出jexus版本。 * 注册服务 ```sh sudo ./jws regsvr ``` > 如果使用标准版,升级mono之后需要调用。 ## 配置文件 原版配置请查看宇内大神编写的[安装配置要点](https://www.linuxdot.net/bbsfile-3084)。此处为要点提取,同时指出同时支持ASP.NET管道和Owin的方法。 ### 应用配置 Jexus支持多个Web应用,每个Web应用均有独立的配置文件。所有的配置文件均位于Jexus安装目录的 **siteconf** 子目录中。 #### 配置文件语法 Jexus的默认配置为 ```python ###################### # 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 ``` 配置文件语法简洁明了: * #号为注释符号。 * 同一个配置项有多个值用“,”号隔开。 * 支持IP访问控制,通过DenyFrom和AllowFrom配置。 * 支持HTTPS,通过UseHttps配置要ssl配置。 * 支持目录访问控制,通过DenyDirs配置。 * 支持URL重写,通过rewrite配置。 * 支持反向代理,通过reproxy配置。 * 支持DoNetCore,通过AppHost配置。 * 支持php,通过fastcgi配置。 #### 修改配置文件支持Owin的方法: Jexus V5版本可通过修改Jexus配置文件和在应用程序中编写Owin Adapter实际应用同时支持ASP.NET管道和Owin。即MVC走管道,而SignalR走Owin。 * 首先,在应用程序中编写Startup类和JexusAdapter: ```csharp [assembly: OwinStartup(typeof(NS.Startup))] namespace NS { public class Startup { public void Configuration(IAppBuilder app) { // add app configs app.MapSignalR(); } } public class JexusAdapter { static Func, Task> _owinApp; public JexusAdapter() { var builder = new AppBuilder(); var startup = new Startup(); startup.Configuration(builder); _owinApp = builder.Build(); } public Task OwinMain(IDictionary env) { if (env == null) return null; if (_owinApp == null) return null; var reqPath = env["owin.RequestPath"] as string; if (!reqPath.IsNullOrWhiteSpace() && !reqPath.ToLower().StartsWith("/signalr")) return null; return _owinApp(env); } } } ``` > JexusAdapter的OwinMain方法如果反回空,则通过ASP.NET管道处理请求,否则通过Owin处理。示例代码中使signalr通过Owin处理。 * 其次,修改Web.config文件,禁用Owin自动初始化。 ```xml ``` * 最后,修改Jexus网站配置,指定OwinMain入口,NS.dll为程序集,NS.JexusAdapter为类全名。 ```python OwinMain=NS.dll,NS.JexusAdapter ``` > Jexus V6已将Owin移除,如果要在Jexus V6中支持Owin,需要TinyFox,配置方法将复杂很多,真希望宇内大神再次将Owin集成进来Jexus V6。 ### 全局配置 全局配置对所有网站生效。 ```python SiteLogDir=log SiteConfigDir=siteconf httpd.processes=1 #: 1-24. (0 is auto) httpd.MaxTotalMemory=0 #: In megabytes. Set to 0 for auto. httpd.MaxCpuTime=3600 #: In seconds. Set to 0 for unlimited. httpd.MaxConnPerIp=0 #: 0 is unlimited # httpd.User=www-data # php-fcgi.set=/usr/bin/php-cgi,8 # CertificateFile = /xxxx/xx.crt # CertificateKeyFile = /xxxx/xx.key # SSL_TLS_Version = TLSv1.0 # SSLv3 TLSv1.0 TLSv1.1 TLSv1.2, default is SSLv23 # SSL_Ciphers = RC4-MD5 ``` * 支持通过SiteLogDir设置日志文件目录。 * 支持通过SiteConfigDir设置应用配置文件目录。 * 支持通过httpd配置资源,如使用处理器数量、最大占用内存、最大占用CPU时间、最大连接数。 > 超出资源占用时,Jexus将会回收应用程序池,导致应用关闭。如果应用为长时间占用CPU,考虑将最大占用CPU时长该为不限制。如果应用为资源服务型,考虑减小CPU时长,解除可能发生的死锁。 * 支持全局HTTPS设置。