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

xiaoxiao2021-02-28  20

直接用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 #这里设置环境变量。如果在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  

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

 

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

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

 

经验总结:

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

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

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

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

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-2650216.html

最新回复(0)