在之前的我的博客项目中,我将.net Core发布到Cent OS 上,使用的Nginx代理以及Supervisor进程守护,看过我的博客的童鞋,也会发现,这种方式比较麻烦,光命令行就看的头大,总共部署了两次还是三次,可是每次一样都是要翻博客翻资料,想想还是IIS好用,点几下鼠标就完成了,没有这么多步骤。之前也一直想尝试下使用Jexus部署我的项目,也一直没有时间搞,今天趁着外面下雨,就仔细学习下这个东东。
Jexus百度百科:
Jexus 即 Jexus Web Server,简称JWS,是Linux平台上的一款ASP.NET WEB服务器,是 Linux、Unix、FreeBSD 等非Windows系统架设 ASP.NET WEB 服务器的核心程序,是企业级ASP.NET跨平台部署的一种可选方案。与其它WEB服务器相比,Jexus不但具有跨平台ASP.NET服务器这样的标志性特征,同时还拥有内核级的安全监控、入侵检测、URL重写、无文件路由等一系列重要功能和专有特性。
关于它的定义简单明了,就是一款Linux上的Asp.Net Web服务器,相当于我们的Windows上的IIS,Jexus5.8.2的正式发布为Asp.Net Core进入生产环境提供了平台支持。
2)应用程序启动、停止、重启与站点的启动、停止、重启等操作一致,无需手工管理asp.net core应用程序;
3)具有应用程序崩溃后自动重启功能,为企业级不间断运行保障;
4)具有比反向代理更高的性能优势;
5)提供与IIS相同的HTTP环境参数。
下面呢,我将先把我的项目停掉,将Supervisor和Nginx停止运行,首先将Supervisor停止运行,由于Supervisor设置了开机启动,我需要先把它禁用掉:
禁用开机启动命令:systemctl disable supervisord
查看是否为开机启动命令:systemctl is-enabled supervisord
如下图所示:表明开机启动已经关闭,可以重启尝试一下。
此时我重启完后,我的项目就无法访问了,为了下面的内容,我们再将Supervisor启动,命令如图中所示,下面我们再访问时,这时网站已经恢复了,表名我们的服务也已经启动了
执行 supervisorctl stop all 可以停止全部进程 ,执行完后会显示DayaliBlog.Web:Stoped。接着我们再将Nginx停止,命令为:systemctl stop nginx .停止这些服务是为了排除这些对Jexus的影响,虽然我也不知道会有什么影响。现在我的项目已经完全无法访问了,下面我们开始安装Jexus,以及部署我们的.net core项目。
安装jexus5.8.2独立版 mkdir temp cd temp wget linuxdot.net/down/jexus-5.8.2-x64.tar.gz tar zxvf jexus-5.8.2-x64.tar.gz cd jexus/ cd siteconf/
安装完毕后,我们去修改siteconf里的default文件里的参数,关于要配置的参数说明如下:
格式:AppHost={CmdLine=命行行; AppRoot=工作路径; Port=端口号} 说明:CmdLine:必选项。表示启动这个web应用程序的命令(含参数),如 CmdLine= dotnet /var/www/aspnetcore/AspNetCoreStarted.dll AppRoot:必选项。表示这个应用程序的工作目录,如:AppRoot=/var/www/aspnetcore Port:可选项。表示这个应用程序的侦听端口,多个端口用英文逗号分隔(注:如果没有填写这一项,就请在AppHost.port或reproxy中填写端口号,否则,请求数据无法转发给应用程序)。 Env:可选参数。表示这个应用程序工作时需要的环境变量,如 env=(PATH=/usr/local/bin:/var/www/aspnetcore:$PATH),多个设置用英文逗号分开。 ErrLog:可选项。表示将这个应用程序的异常输出重定向到指定的文件(需填写完整路径),如果不原意输出日志,可以不用OutLog项。这时, jexus会自动关掉控制台输出(实质是重定向到/dev/null中了); OutLog:可选项。表示将这个应用程序的控制台输出重定向到指定的文件(需填写完整路径); User: 可选项。以指定的用户身份运行该应用程序,默认为root身份。 注意: 1,AppHost像AppHost.Port一样,不支持虚拟路径; 2,AppHost功能是将指定的具有http服务能力的web应用程序纳入jexus工作进程进行管理,对Asp.Net Core或Node.js等自宿主web程序用于生产环境具有重要的意义。
按照以上的说明,修改我要配置的参数
###################### # Web Site: Default ######################################## port=80 root=/ /root/DayaliBlog.Web hosts=* #OR your.com,*.your.com # addr=0.0.0.0 # CheckQuery=false NoLog=true AppHost={CmdLine=dotnet /root/DayaliBlog.Web/DayaliBlog.Web.dll;AppRoot=/root/DayaliBlog.Web;Port=5000} # NoFile=/index.aspx Keep_Alive=false UseGZIP=false OutLog=/tmp/out.txt; ErrorLog=/tmp/err.txt; # 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 yi's
以上#为注释的行,默认的AppHost参数项是注释的,需要取消注释,设置好AppHost参数后,需要启动Jexus,执行命令如下,需要切换到jexus文件目录下
cd temp cd jexus ./jws start
执行成功后,再次访问我们的项目,即可访问成功。
下面我们需要将Jexus设为开机启动,命令如下:
cd /etc/init.d/ vi jws 按i编辑模式,粘贴下面内容 #!/bin/bash #chkconfig: 2345 80 05#description:jws # . /etc/rc.d/init.d/functionscase "$1" instart) echo "Jexus Start.." /usr/jexus/jws start ;; stop) echo "Jexus Stop.." /usr/jexus/jws stop ;; restart) echo "Jexus Restart" /usr/jexus/jws restart ;; status) /usr/jexus/jws status ;; *) exit 1 ;; esac exit $RETVAL 按ESC后,输入:wq保存文件 把这个脚本作为“服务”加入 chmod 766 jws chkconfig --add jws
到此为止,我们就成功的将我们的.net Core项目部署完成了,相对nginx+supervisor来说,jexus的步骤相对与简单些,而且jexus的性能跟IIS的性能相比不相上下。
参考博客:
http://www.cnblogs.com/linqingfeng/archive/2013/06/14/3135716.html