2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 在centos 7.4上使用jexus 部署 asp.net core 项目

在centos 7.4上使用jexus 部署 asp.net core 项目

时间:2024-07-05 05:34:09

相关推荐

在centos 7.4上使用jexus 部署 asp.net core 项目

直接用dotnet xx.dll命令是可以部署 core项目的,包括https也可实现。但是用jexus有以下几个好处:

1.jexus可以守护dotnet进程

2.同一服务器,同一端口,可以配置多个网站

3.操作简单

4.通过反向代理实现负载均衡(不过jexus一般通过端口转发方式实现 core)

5.检测攻击(只是+mono方式,不适用 core)

用 .net core 2.0作为目标框架做了一个网站,想部署到centos 6.5上,安装.net core时因为缺少openssl-lib而失败,而安装Openssl-lib又要安装一大堆依赖,最后不得不直接在阿里云后台重新更换到centos 7.4

一.安装.net sdk

sudo rpm -Uvh /config/rhel/7/packages-microsoft-prod.rpm

sudo yum updatesudo yum install libunwind libicusudo yum install dotnet-sdk-2.1.200 //如果希望安装2.1的最新版,可把后面的.200小版本号去掉//如果是.net core 3.1版本,就是 sudo yum install dotnet-sdk-3.1

如果后来需要卸载:sudo yum removedotnet-sdk-2.1.200

安装后运行 dotnet --version 可以查看版本号,就说明成功了

( 2.1.3以后对应目标框架.net core 2.1, 2.1.200还是属于.net core 2.0 ) (截止目前,最新版本是2.1.504)

二.发布并运行.net core 项目

假设我的站点名称是mysite,创建一个 var/www/mysite 文件夹

在windows上的vs 中 publish .net core项目,生成publish文件夹,将文件夹下的文件传到var/www/mysite

进入该文件夹,运行 dotnet mysite.dll ,网站已经运行起来了

(注意 要进入网站目录后再运行dotnet,不要dotnet /var/www/..../mysite.dll, 否则会出问题,目前发现的是静态文件打不开,配置文件读不到)

执行 wget 127.0.0.1:5000 可以看到返回成功,说明网页已经可以本机打开了。

然而,这时候只能通过5000端口被访问,还不能通过外网访问,下面我们需要安装jexus来实现外网80端口访问

三.安装jexus

jexus 的原理就是把80端口的请求转发给5000端口,并且守护dotnet进程。

安装非常简单:

curl /release/x64/install.sh|sudo sh

会自动把jexus安装到 usr/jexus 下,目前最新版本是5.8.3.10,从该版本开始支持.net core 2.1,

usr/jexus/siteconf 文件夹下

cd /usr/jexus/siteconf

这里已经有一个默认的名为default文件,这个文件对应的是一个网站,如果有多个网站,就可以设置多个文件

用vim 命令 修改default 文件,

vi default(也可以用mv default mysite 命令修改该文件名,或者新创建一个文件 vi mysite, 一般如果只有一个网站且使用80端口就用默认就好了)

添加以下内容

port=80 root=//var/www/mysite/hosts=*AppHost={cmd=dotnet mysite.dll;root=/var/www/mysite/;port=0;}

执行 /usr/jexus/./jws start 启动jexus服务

以后每次修改配置文件都要 执行 /usr/jexus/./jws restart 重启

在阿里云的安全规则里把80端口放行

现在在你的电脑上输入阿里云的外网ip就能打开网页了

四. 将jexus设置为开机自启

cd /etc/init.d/

vi jws

按i编辑模式,粘贴下面内容

#!/bin/bash#chkconfig: 2345 80 05#description:jws#. /etc/rc.d/init.d/functionscase "$1" instart)export ASPNETCORE_ENVIRONMENT=Product export DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0## 在centos7/debian上可以设为0,但是在centos8上不可以,centos8上设置为0,发送https消息会报错找不#到某dll文件# 为0时,appsetting.json中general中的SslDifferent要为"true",否则,为"false"#为0时,httpClient才可以访问我们自己网站的https,否则会超时#这里设置环境变量。如果在etc/profile下面设置环境变量,加载会在程序启动之后 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;;esacexit $RETVAL

需要注意:这里在程序启动之前要设置环境变量。如果在etc/profile下面设置环境变量,加载会在程序启动之后

按ESC后,输入:wq保存文件

把这个脚本作为“服务”加入

chmod 766 jws

chmod +x jws //增加jws的执行权限,华为云技术说可以代替766,下次可试试

chkconfig --add jws

chkconfig jws on //华为云技术建议添加,用来启用服务,但是似乎不用也行

五. 设置环境变量

在/etc/profile 最后面加入一句(如果你的程序依赖这个环境变量的话)

export ASPNETCORE_ENVIRONMENT=Product

export DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0;# 在centos7/debian上可以设为0,但是在centos8上不可以,centos8上设置为0,发送https消息会报错找不#到某dll文件# 为0时,appsetting.json中general中的SslDifferent要为"true",否则,为"false"#为0时,httpClient才可以访问我们自己网站的https,否则会超时

如果没有这句,重新开机是没问题的,环境变量会从/etc/init.d/ 中读出,但是如果 中间执行 /usr/jexus/./jws restart,就读不到环境变量了,导致程序出错

注意:如果你增加一个mysite配置文件,设定端口为80,但是已经有一个default配置文件端口也是80,这会导致mysite起不来,要将default删除或者修改端口

至此,jexus已经在centos 7.4搭建成功。

六、centos下使用GDI

/soband_xiang/article/details/123905689​​​​​​

七、其他

1、httpWebRequest在centos下会报错(大致意思curl openssl版本不匹配),需要使用httpclient替代

经验总结:

1.centos 7以下系统库的版本太低,会导致安装失败。需要升级到centos 7.4

2. jexus一旦启动后,会自动启动dotnet,无需将dotnet加入开机启动。

3. jexus只是起到端口转发作用,核心功能还是由dotnet完成的。

关于如何配置https,开启gzip,请看另一篇 /soband_xiang/article/details/80757718

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。