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

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

1.jexus可以守护dotnet进程

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

3.操作简单

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

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

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

一.安装.net sdk

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1.200  //如果希望安装2.1的最新版,可把后面的.200小版本号去掉

//如果是.net core 3.1版本,就是  sudo yum install dotnet-sdk-3.1

如果后来需要卸载:sudo yum remove dotnet-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 2017中  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 https://jexus.org/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/functions

case "$1" in

start)  
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  
  ;;  
esac  
exit $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
     https://blog.csdn.net/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,请看另一篇  https://blog.csdn.net/soband_xiang/article/details/80757718  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值