欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在Linux+Jexus中发布和部署Asp.Net Core

程序员文章站 2022-03-03 11:03:23
目录安装 linux dotnet 环境新建一个 webapp 项目,并发布使用 jexus 进行反向代理jexus 介绍安装 jexus配置 jexus注意事项安装 linux dotnet 环境安...

安装 linux dotnet 环境

安装 dotnet 环境参见官方网站 https://www.microsoft.com/net/core

新建一个 webapp 项目,并发布

在 asp.net core 项目中,我们使用 dotnet new -t webapp 命令和创建一个新的空的 web 应用程序,然后使用dotnet resotre还原 nuget。

在Linux+Jexus中发布和部署Asp.Net Core

主要是用以下几个命令:

mkdir hellowebapp 这个命令是创建一个名为 hellowebapp 的文件夹。

dotnet new -t web 这个命令是使用 web 模板来新建一个 webapp 的 mvc 应用程序。

新建了应用程序之后,使用dotnet restoredotnet run 命令来测试一下我们的应用程序。

我们打开浏览器输入 http://localhost:5000,来看一下效果。

在Linux+Jexus中发布和部署Asp.Net Core

可以看到已经成功运行了。

如果发布应用程序,我们需要使用 dotnet publish命令,通过使用 --help 参数可以看到一些可以使用的命令参数。

  -f|--framework <framework>          target framework to compile for
  
  -r|--runtime <runtime_identifier>   target runtime to publish for
  
  -b|--build-base-path <output_dir>   directory in which to place temporary outputs
  
  -o|--output <output_path>           path in which to publish the app
  
  --version-suffix <version_suffix>   defines what `*` should be replaced with in version field in project.json
  
  -c|--configuration <configuration>  configuration under which to build
  
  --native-subdirectory               temporary mechanism to include subdirectories from native assets of dependency packages in output
  
  --no-build                          do not build projects before publishing

我们运行dotnet publish -o ~/workspace/publish 发布到 publish 文件夹,当看到published 1/1 projects successfully的时候,说明已经发布成功了。

ps: 如果提示没有安装 npm 工具,运行sudo install apt-get npm -g,先安装 npm。

如果提示没有 bower 管理工具,使用 sudo npm install bower -g安装 bower。

如果提示没有 gulp 构建工具,使用 sudo npm install gulp -g安装 gulp。

如安装过程中无响应,请*后再安装。

发布之后 publish 文件夹里面的子文件夹有必要说明一下。

appsettiong.json  应用程序的配置文件
refs 应用程序引用的.net fx系统程序集
runtimes 运行时环境,可以看到里面的文件夹包含 win7、linxu,mac os 等,说明我们这个应用程序是跨平台的。
views 这个文件夹存放的就是我们的 mvc 的视图文件。
wwwroot 文件夹,存放的是前端使用的 js 库,css 样式表,和图片等。

然后使用dotnet hellowebapp.dll测试发布过后的程序是否运行正常。

在Linux+Jexus中发布和部署Asp.Net Core

使用 jexus 进行反向代理

  • jexus 介绍
  • 安装 jexus
  • 配置 jexus
  • 注意事项

jexus 介绍

jexus 是一款国产的,运行在 linux 上的 web 服务器。 具体介绍我就直接放链接了。

官网: http://www.jexus.org/

安装 jexus

在命令行窗口中,使用以下命令来安装一个绿色版的 jexus(无需另行安装 mono)。

cd /tmp

wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz

tar -zxvf jexus-5.8.1-x64.tar.gz

sudo mv jexus /usr

sudo rm -rf /tmp/jexus*

使用以下命令来启动 jexus

cd /usr/jexus

sudo ./jws start

打开浏览器输入http://localhost 如果看到下面这个异常界面,代表运行成功了。

在Linux+Jexus中发布和部署Asp.Net Core

配置 jexus

有两种方式可以在 jexus *问我们的 web 应用程序。 即端口转发和反向代理的方式,下面是两种方式的配置方法。

  • 1、** 端口转发 **

端口转发,即把 jexus 配置的端口直接转发到我们的 asp.net 程序中,即转发到 kestrel 去处理。

  • 2、** 反向代理 **

反向代理,即把我们应用程序的一部分路径交给 jexus 去处理,比如静态文件,图片等。另外一部分动态的交给kertrel 来处理。这样可以降低我们的后端 kertrel 的压力。

还有一个很重要的优势就是 web 中的缓存,会在代理服务器这一步来处理。

至于怎么样添加代理服务器可以识别到的缓存,可以关注我后面发表的博客文章。

按照上述方式安装完 jexus 之后,配置文件路径在 /usr/jexus/siteconf/default 文件中。

切换工作目录到/usr/jexus/siteconf/,使用sudo gedit default命令打开 default 文件。

修改内容为如下:

port=80

# jexus 默认访问的工作目录
root=/ /home/yxd/workspace/publish 

# 下面这种方式是反向代理。我设置的路径是"/"即根目录,大家可以根据
# 需要设置为非静态的路径
reproxy=/ http://localhost:5000/

# 下面这种方式是使用端口转发
apphost.port=5000

# 注意: 以上两种方式配置一种即可。

保存并退出。 然后使用sudo ./jws restart命令来重启一下。

然后我们打开浏览器 输入http://localhost,发现此时已经通过 jexus 来访问我们的站点了。

在Linux+Jexus中发布和部署Asp.Net Core

注意事项

  • 1、在使用 jexus 代理访问站点的时候, 保持命令dotnet run hellowebapp.dll的命令行窗口必须开启。
  • 2、可以使用下面的命令来让一个命令行运行在后台进程中。
nohup dotnet hellowebapp.dll &

这个时候你就可以把命令行窗口关掉了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。