当前位置: 首页 > news >正文

Linux部署.Net Core Web项目

本文主要记录我在Linux(Ubuntu)上部署.net core 的操作记录,也便于以后部署。
如对您有所帮助,不胜荣幸~

文章目录

  • 前言
  • 一、准备工作
    • 1. 版本信息
    • 2. windows端web项目
  • 二、操作步骤
    • 1. Linux 配置 .net 运行环境
      • 1.1 查看最新 .net 运行环境的下载路径
      • 1.2 安装 dotnet SDK
      • 1.2.1 下载安装包
      • 1.2.2 解压安装包
      • 1.2.3 设置环境变量
      • 1.3 验证
    • 2. windows 端 web 项目发布选项设置
    • 3. 将web发布文件从windows上传到LInux
    • 4. Linux 运行 web 项目
    • 5. 设置 web 项目 开机自启
      • 5.1 安装supervisor
      • 5.2 在supervisor中为.net web 项目添加配置信息
        • 5.2.1 创建.net web项目的日志输出文件夹
        • 5.2.2 进入/etc/supervisor/conf.d
        • 5.2.3 新建config文件
        • 5.2.4 添加开机自启等配置项
        • 5.2.5 重启supervisor
        • 5.2.6 查看supervisor服务是否正常运行
        • 5.3.5 为supervisor开启可视化web站点管理界面(可选操作)
  • 总结


前言

本文主要介绍如何将windows上开发的 dotnet core web 应用程序部署到 Linux服务器上(Ubuntu 22.04)。

本人所使用的软件版本如下:

  • 操作系统版本:Ubuntu 22.04
  • web 项目版本:.net 6.0

本人在windows端部署的网站如下。端口:5001。本文目标就是将其部署到Ubuntu上去。
在这里插入图片描述


一、准备工作

1. 版本信息

  • 操作系统版本:Ubuntu 22.04
  • web 项目版本:.net 6.0

2. windows端web项目

二、操作步骤

1. Linux 配置 .net 运行环境

众所周知,所有 .net 项目的运行都需要 .net 运行环境。
.net 运行环境分两种:sdk 和 runtime(运行时) 。

  • sdk:sdk包含runtime,同时可以为.net 开发人员提供.net 项目的运行编译打包环境。
  • runtime:runtime 是sdk的一个子集,仅仅可以使得.net程序在操作系统上运行。

如果无需在Linux上做.net开发,可以只安装runtime,我这里主要演示sdk的安装。

微软官方参考文档:
在 Ubuntu 上安装 .NET SDK 或 .NET 运行时
使用安装脚本或通过提取二进制文件在 Linux 上安装 .NET

1.1 查看最新 .net 运行环境的下载路径

前往 .net 官方下载地址 ,页面内容打开如下图所示:
在这里插入图片描述
我们选择上图中的.NET 6.0,进入下图页面,选择合适自己操作系统架构的 SDK 地址。
在这里插入图片描述

ubuntu 查看系统架构的命令如下:

dpkg --print-architecture

在这里插入图片描述
我的是amd64,选择x64。
在这里插入图片描述

点击【copy】按钮复制得到下载地址:
https://download.visualstudio.microsoft.com/download/pr/868b2f38-62ca-4fd8-93ea-e640cf4d2c5b/1e615b6044c0cf99806b8f6e19c97e03/dotnet-sdk-6.0.407-linux-x64.tar.gz

1.2 安装 dotnet SDK

1.2.1 下载安装包

我们使用wget命令下载复制得到的runtime安装包

wget https://download.visualstudio.microsoft.com/download/pr/868b2f38-62ca-4fd8-93ea-e640cf4d2c5b/1e615b6044c0cf99806b8f6e19c97e03/dotnet-sdk-6.0.407-linux-x64.tar.gz

在这里插入图片描述

1.2.2 解压安装包

在当前主目录下创建.dotnet 文件夹

mkdir -p .dotnet

在这里插入图片描述
创建成功:
文件夹选项,设置显示隐藏文件后可以见到.dotnet文件夹:
在这里插入图片描述
将安装包内的文件解压到.dotnet 文件夹中

tar -zxvf dotnet-sdk-6.0.407-linux-x64.tar.gz -C .dotnet

在这里插入图片描述
解压成功。
在这里插入图片描述

1.2.3 设置环境变量

要使环境变量对所有用户有效,需要修改profile文件:

sudo vim /etc/profile 

在这里插入图片描述
键入[i],插入以下语句:

export DOTNET_ROOT=$(pwd)/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

在这里插入图片描述
再键入[Esc],退出编辑模式。
键入[:wq]保存并退出Vim。
注销或者重启就可以生效。

1.3 验证

重启后,通过dotnet --info 命令查看dotnet信息。
在这里插入图片描述
设置完成。

SDK 安装成功。

2. windows 端 web 项目发布选项设置

Visual Studio 中 web 项目的发布选项需要将 TargetRuntime 改成 Linux版本,选择适合自己的Linux架构版本,前文中已经讲过如何查看自己Linux的架构了。本人的amd64,选择x64。
在这里插入图片描述
Deployment Mode(部署方式) :

  • Self-contained (独立应用) 自带dotnet运行时,可以部署至一台空白环境服务器,无需提前安装配置dotnet运行时。缺点是:部署包较大。
  • Framework-dependent(框架依赖型) 生成跨平台的部署包,用户需要在Linux上安装相应版本的运行时。

我之前已经安装好.net 6.0 SDK,包含了运行时,所以这里我选择Framework-dependent。

3. 将web发布文件从windows上传到LInux

设置成功后,选择发布,将web应用程序发布到文件夹。
发布成功后,使用ftp将web发布文件从windows上传到Linux上。
PS:本人在Linux上的web发布项目为:/home/qyh/workspace/WebPublishFolder/WowCrtAdvrts
在这里插入图片描述

上传成功:
在这里插入图片描述
上图中程序入口就是:Jcjy.Web(你的web项目名称)

4. Linux 运行 web 项目

控制台进入.net web项目路径:

cd ~/workspace/WebPublishFolder/WowCrtAdvrts

在这里插入图片描述
运行web项目:

dotnet Jcjy.Web.dll

浏览器输入ip+端口号,如下图所示。部署成功。
在这里插入图片描述
到目前为止Linux上部署.Net Core Web已经讲完了。接下来我主要讲下如何利用Nginx做反向代理。

5. 设置 web 项目 开机自启

supervisor是python开发的通用进程管理程序,可以将普通的命令行进程变成后台守护进程,监控进程状态,当进程异常退出时可自动重启。

5.1 安装supervisor

sudo apt-get install supervisor

在这里插入图片描述
如图所示,安装完成。

5.2 在supervisor中为.net web 项目添加配置信息

5.2.1 创建.net web项目的日志输出文件夹

我们先把web项目的日志输出文件夹创建好,这里我准备将日志放到这个目录下:/var/log/web/dotnet/

sudo mkdir -p /var/log/web/dotnet

5.2.2 进入/etc/supervisor/conf.d

supervisor安装好之后,在/etc/下会有一个supervisor文件夹,conf.d就是存放supervisor的配置文件的文件夹。

cd /etc/supervisor/conf.d

在这里插入图片描述

5.2.3 新建config文件

我们为.net web 项目创建配置文件:

sudo touch WowCrtAdvrts.conf

这里的【WowCrtAdvrts】是你的web 项目名称,

在这里插入图片描述

5.2.4 添加开机自启等配置项

编辑 WowCrtAdvrts.conf 文件

sudo vi WowCrtAdvrts.conf
i

在这里插入图片描述
输入一下配置项:

[program:WowCrtAdvrts]
command=dotnet Jcjy.Web.dll
directory=/home/qyh/workspace/WebPublishFolder/WowCrtAdvrts
environment=ASPNETCORE__ENVIRONMENT=Production 
user=www-data  
stopsignal=INT
autostart=true 
autorestart=true 
startsecs=1 
stderr_logfile=/var/log/web/dotnet/WowCrtAdvrts.err.log 
stdout_logfile=/var/log/web/dotnet/WowCrtAdvrts.out.log 

directory就是我们的.net core web项目所在目录;
stderr_logfile是错误日志所在路径,stdout_logfile是输出日志所在路径,我统一放在了/var/log/web/dotnet/下面;
在这里插入图片描述
然后输入ESC->:wq保存退出即可。
在这里插入图片描述
修改完成。

5.2.5 重启supervisor

sudo service supervisor stop 
sudo service supervisor start

在这里插入图片描述

5.2.6 查看supervisor服务是否正常运行

sudo supervisorctl

5.3.5 为supervisor开启可视化web站点管理界面(可选操作)

supervisor自带了可视化管理界面,需要我们做一下配置就能开启。
在/etc/supervisor 目录下,打开supervisor.conf 文件

cd /etc/supervisor
sudo vi supervisor.conf
i

在这里插入图片描述

添加如下配置项

[inet_http_server]    
port=127.0.0.1:8001     
username=admin
password=123456

在这里插入图片描述

保存修改并退出

ESC
:wq

重启supervisor

sudo service supervisor stop 
sudo service supervisor start

总结

以上就是今天要讲的内容,总的来说还是很简单的,但是我在具体操作时参考网上教程还是踩了一些坑。本文如对您有所帮助,不胜荣幸~

相关文章:

Linux部署.Net Core Web项目

本文主要记录我在Linux(Ubuntu)上部署.net core 的操作记录,也便于以后部署。 如对您有所帮助,不胜荣幸~ 文章目录前言一、准备工作1. 版本信息2. windows端web项目二、操作步骤1. Linux 配置 .net 运行环境1.1 查看最新 .net 运行环境的下载路径1.2 安装…...

【C++】STL之stack、queue的使用和模拟实现+优先级队列(附仿函数)+容器适配器详解

之前的一段时间,我们共同学习了STL中一些容器,如string、vector和list等等。本章我们将步入新阶段的学习——容器适配器。本章将详解stack、queue的使用和模拟实现优先级队列(附仿函数)容器适配器等。 目录 (一&…...

第⑦讲:Ceph集群RGW对象存储核心概念及部署使用

文章目录1.RadosGW对象存储核心概念1.1.什么是RadosGW对象存储1.2.RGW对象存储架构1.3.RGW对象存储的特点1.4.对象存储中Bucket的特性1.4.不同接口类型的对象存储访问对比2.在集群中部署RadosGW对象存储组件2.1.部署RGW组件2.2.集群中部署完RGW组件后观察集群的信息状态2.3.修改…...

从异步到promise

一,背景 1.1,js的单线程 这一切,要从js诞生之初说起,因为js是单线程的语言。 js单线程原因:作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程&…...

Linux系统中进行JDK环境的部署

一、为什么需要部署JDK。 JDK:Java Development Kit,是用于Java语言开发的环境。 部署JDK不需要懂得Java语言,只需要掌握Linux相关命令即可。 二、部署版本与环境。 系统:安装在VMware环境下的CentOS7.6; JDK版本&a…...

Leetcode.1033 移动石子直到连续

题目链接 Leetcode.1033 移动石子直到连续 Rating : 1421 题目描述 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,你可以从两端之一拿起一枚石子(位置最大或最小),并将其放入…...

【Java】在SpringBoot中使用事务注解(@Transactional)时需要注意的点

在SpringBoot中使用事务注解(Transactional)时需要注意的点Transactional是什么使用事务注解(Transactional)时需要注意的点Transactional是什么 Transactional是Spring框架提供的一个注解,用于声明事务边界和配置事务…...

找到序列最高位的1和最高位的0并输出位置

前言: 该题为睿思芯科笔试题,笔试时长20分钟。 题目描述 接口如下: module first_1_and_0#(parameter WIDTH 8 )(input [WIDTH-1:0] data_in ,input target ,output exist ,outpu…...

面试总结sdiugiho

一、进程与线程的区别 进程: 一个在内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程可以有多个线程; windows 任务管理器中 一个 exe 就是一个进程。 线程: 进程中的一个执行任务(控制…...

WIN10無法再使用 IE 瀏覽器打开网页解决办法

修改 Registry(只適用 Win10) 微軟已於 2023 年 2 月 14 日永久停用 Internet Explorer,會透過 Edge 的更新讓使用者開啟 IE 時自動導向 Edge,其餘如工作列上的圖示,使用的方法則是透過「品質更新」的 B 更新來達成&am…...

搭建SpringBoot和Mysql Demo

1. 引言 在上一篇文章中,介绍了如何搭建一个SpringBoot项目;本篇文章,在上一篇文章的基础上,接着介绍下怎样实现SpringBoot和MySQL的整合。在后端开发中,数据库开发是绕不开的话题,开发中很多的时间都是在…...

晶振03——晶振烧坏的原因

晶振03——晶振烧坏的原因 首先要清楚的一件事情是:晶振分为无源晶振与有源晶振两大类。基于这两类晶振的内部结构与工作原理的差异,晶振被烧坏的情况也要分为两大类: 针对无源晶振被烧坏的情况有以下两点: 1、手焊操作不当 假…...

项目管理的难点

一、项目团队建设 建设一支高效的项目团队,明确团队队员的职责是项目经理进行项目管理的首要条件,也是项目目标能否实现的关键。 1.1 学会放权 任何人都不能掌握所有的知识和技能,要敢于相信别人,让别人去做。 放权就要选择最…...

day22 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点

问题: ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点 首先,二叉搜索树是一种常见的数据结构,它具有以下特点: 每个节点最多有两个子节点,分别为左子节点和右子节…...

ChatGPT 这个风口,普通人怎么抓住?

最近在测试ChatGPT不同领域的变现玩法,有一些已经初见成效,接下来会慢慢分享出来。 今天先给大家分享一个,看完就能直接上手的暴力引流玩法。 所需工具: 1)ChatGPT(最好是plus版,需要保证快速…...

Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(2)

本篇将总结实际项目开发中Python代码规范检查、自动编排的一些工具,特点,使用方法,以及如何在Pycharm中集成这些工具,如autoflake、yapf、black、isort、autopep8代码规范和自动编排工具。上一篇总结的pylint、pyproject-flake8、…...

acme.sh从 letsencrypt 生成SSL免费证书并自动更新证书

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书 ACME 协议: Automatic Certificate Management Environment 自动化证书管理环境 文档: github: https://github.com/acmesh-official/acme.shgitee: https://gitee.com/neilpang/acme.sh中文文档: https://git…...

基于html+css的evenly布局

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...

【从零开始学习 UVM】10.5、UVM TLM —— UVM TLM Blocking Get Port

文章目录 UVM TLM Get Port Example1. 创建一个发送方类,其端口类型为 uvm_blocking_get_imp3. 创建接收器类,等待 get 方法。4. 在更高层次上连接端口及其实现Get端口阻塞行为任何组件都可以通过 TLM get 端口请求从另一个组件接收事务。发送组件应定义获取端口的实现。该实…...

English Learning - L2 第 10 次小组纠音 辅音 [m] [n] [ŋ] 半元音 [w] [j] 2023.3.29 周三

English Learning - L2 第 10 次小组纠音 辅音 [m] [n] [ŋ] [w] [j] 2023.3.29 周三共性问题more Autumn [ɔː] 舌位偏前gone evening 前后鼻音不分Hes proud of this name 双元音缺乏滑动感bank thing 中的后鼻音发成前鼻音week what yolk 元音 [iː] [ɒ] 舌位偏前 [əʊ] …...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...