Linux下使用jexus,并部署.net core项目

1.下载.net core运行时

将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

安装运行时

sudo yum install aspnetcore-runtime-3.1

2.安装jexus

Jexus“独立版”指的是自带.net运行时(mono),不需要在客户服务器安装mono就能正常运行的Jexus版本,该版本只支持 64位Linux操作系统。

X86_64系统 安装jexus独立版的命令是:

curl https://jexus.org/release/x64/install.sh|sh

ARM64系统 安装jexus独立版的命令是:

curl https://jexus.org/release/arm64/install.sh|sh

强调:运行上述安装命令,需要操作者有root权限。

Jexus的操作命令

Jexus包括如下操作命令(首先 cd /usr/jexus):
启动:sudo ./jws start
停止:sudo ./jws stop
重启:sudo ./jws restart

3.配置jexus

jexus的主要配置在/usr/jexus/siteconf/目录下,该目录下的配置文件可以理解为一个配置文件对应iis中的一个站点。

jexus的默认配置是default,默认没有启用启用AppHost,内容如如下:

######################
# Web Site: Default
########################################

port=80 # 外部访问的端口
root=/ /var/www/default #程序工作目录
hosts=*    #OR your.com,*.your.com

# User=www-data

# AspNet.Workers=2  # Set the number of asp.net worker processes. Defauit is 1.

# addr=0.0.0.0
# CheckQuery=false
NoLog=true

# AppHost={cmd=dotnet /usr/local/x/app.dll; root=/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 TLSv1.2
# ssl.ciphers=ECDHE-RSA-AES256-GCM-SHA384:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE
# ResponseHandler.Add=Strict-Transport-Security:max-age=15768000  #for HSTS

# DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24
# AllowFrom=192.168.*.*
# DenyDirs=~/cgi, ~/upfiles
# indexes=myindex.aspx
# Deny asp ...
rewrite=^/.+?\.(asp|cgi|pl|sh|bash)(\?.*|)$      /.deny->$1
rewrite=.*/editor/.+                             /.deny->editor
# reproxy=/bbs/ http://192.168.1.112/bbs/
# host.Redirect=abc.com www.abc.com  301
# ResponseHandler.Add=myKey:myValue
ResponseHandler.Add=X-Frame-Options:SAMEORIGIN

# 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

可以看到这个默认站点的工作目录是/var/www/default,这个目录在我们服务器默认是没有的,我们可以创建一个mkdir /var/www/default -p,然后cd到此目录下,创建一个html文件

vi index.html
# 内容如下
<h1>hello jexus</h1>

启动jexus

cd /usr/jexus
./jws start

然后访问ip
请添加图片描述

我们主要修改port和AppHost这两个地方,复制一份默认配置文件为netcoreapp

cd /usr/jexus/siteconf
cp default netcoreapp

将其修改为:

需要将你发布后的项目放到/var/www下

port=8088 # 外部访问的端口
root=/ /var/www/aspnetcore #程序工作目录
hosts=*    #OR your.com,*.your.com

NoLog=true

AppHost={cmd=dotnet /var/www/aspnetcore/myapp.dll; root=/var/www/aspnetcore; port=5000}

rewrite=^/.+?\.(asp|cgi|pl|sh|bash)(\?.*|)$      /.deny->$1
rewrite=.*/editor/.+                             /.deny->editor
# reproxy=/bbs/ http://192.168.1.112/bbs/
# host.Redirect=abc.com www.abc.com  301
# ResponseHandler.Add=myKey:myValue
ResponseHandler.Add=X-Frame-Options:SAMEORIGIN

重启jexus,再通过ip+端口即可访问项目

启用AppHost的注意点:

port是执行dotnet命令运行项目后所暴露的内部端口,默认是5000,如果你的程序run起来后的端口是5001,那么就填5001。

我曾测试过这样做,将配置中cmd的路径故意写错,端口写5001,然后到项目下使用dotnet myapp.dll --urls=http://localhost:5001/运行项目,再另开一个ssh连接,重启jexus然后访问ip+端口一样可以成功。他会将在8088端口接收到的请求转发给内部的5001。(但不建议这样使用,因为这样运行的程序并不是在后台运行的,一旦退出终端就无法再次访问了)

cmd表示启动这个web应用程序的命令(含参数)

root:必选项。表示这个应用程序的工作目录,如:AppRoot=/var/www/aspnetcore

port:可选项。表示这个应用程序的侦听端口,多个端口用英文逗号分隔

4.docker部署jexus

该命令会在宿主机root目录下创建对应的文件夹,但里面没有文件,需要我们手动创建

docker run -d --name=c_jexus -p 9527:80 \
-v /root/jexus/app:/var/www/jexus_app \
-v /root/jexus/siteconf:/usr/jexus/siteconf \
jexus/mono:latest

创建默认站点配置

cd /root/jexus/siteconf
vi default

粘贴以下代码

port=80 # 外部访问的端口
root=/ /var/www/jexus_app/default #程序工作目录
hosts=*    #OR your.com,*.your.com

NoLog=true

AppHost={cmd=dotnet /var/www/aspnetcore/myapp.dll; root=/var/www/aspnetcore; port=5000}

rewrite=^/.+?\.(asp|cgi|pl|sh|bash)(\?.*|)$      /.deny->$1
rewrite=.*/editor/.+                             /.deny->editor
ResponseHandler.Add=X-Frame-Options:SAMEORIGIN

再进入/root/jexus/app创建default的项目文件

cd /root/jexus/app
mkdir default
vi default/index.html
#内容如下
<h1>hello defalut jexus</h1>

然后重启容器,即可通过端口+ip访问
请添加图片描述

注意:为什么在配置文件的root写的是/var/www/jexus_app/default而我们在宿主机创建的文件却能够成功运行并被访问到,这里是docker数据卷的知识了,可以理解为双向绑定哈。

需要部署.net core的项目的话,只需要将项目上传到服务器的/root/jexus/app目录下即可,然后修改站点配置重新运行容器,如果需要部署多个项目,就再新建一个站点的配置以及项目文件,只不过启动容器时记得绑定多个端口。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想只会CRUD的猿某人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值