2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Linux下使用jexus 并部署.net core项目

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

时间:2019-05-31 10:21:00

相关推荐

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

1.下载.net core运行时

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

sudo rpm -Uvh /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 /release/x64/install.sh|sh

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

curl /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 ,*.# User=www-data# AspNet.Workers=2 # Set the number of worker processes. Defauit is 1.# addr=0.0.0.0# CheckQuery=falseNoLog=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->$1rewrite=.*/editor/.+ /.deny->editor# reproxy=/bbs/ http://192.168.1.112/bbs/# host.Redirect= 301# ResponseHandler.Add=myKey:myValueResponseHandler.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/siteconfcp default netcoreapp

将其修改为:

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

port=8088 # 外部访问的端口root=/ /var/www/aspnetcore #程序工作目录hosts=* #OR ,*.NoLog=trueAppHost={cmd=dotnet /var/www/aspnetcore/myapp.dll; root=/var/www/aspnetcore; port=5000}rewrite=^/.+?\.(asp|cgi|pl|sh|bash)(\?.*|)$/.deny->$1rewrite=.*/editor/.+ /.deny->editor# reproxy=/bbs/ http://192.168.1.112/bbs/# host.Redirect= 301# ResponseHandler.Add=myKey:myValueResponseHandler.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/siteconfvi default

粘贴以下代码

port=80 # 外部访问的端口root=/ /var/www/jexus_app/default #程序工作目录hosts=* #OR ,*.NoLog=trueAppHost={cmd=dotnet /var/www/aspnetcore/myapp.dll; root=/var/www/aspnetcore; port=5000}rewrite=^/.+?\.(asp|cgi|pl|sh|bash)(\?.*|)$/.deny->$1rewrite=.*/editor/.+ /.deny->editorResponseHandler.Add=X-Frame-Options:SAMEORIGIN

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

cd /root/jexus/appmkdir defaultvi default/index.html#内容如下<h1>hello defalut jexus</h1>

然后重启容器,即可通过端口+ip访问

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

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

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