首页 > 编程语言 >第1篇:aspnetcore,webapi项目打包发布,以.net7为例

第1篇:aspnetcore,webapi项目打包发布,以.net7为例

时间:2024-08-18 13:15:18浏览次数:14  
标签:webapi 为例 aspnetcore sudo 端口 nginx proxy dotnet 服务器

1.打包项目,打开visual studio
项目是ChenShiBao.AspNetCore7.0,发布成功并上传服务,启动服务以这个ChenShiBao.AspNetCore7.0.dll为准

1.1 生成发布包

1.2 选择发布形式

2.在终端利用scp指令将本地已发布的应用传到linux服务上,【或通过第三方工具xshell上传发布包】
终端命令:scp -r 本地已发布的项目地址 目标服务器的项目地址
示例:scp -r e:\定时服务\chenshibao.aspnetcore7.0\publish 服务器用户@服务器名称或服务器ip地址:/root/project/release/webapi/aspnetcore7.0

3.linux服务器上安装net7.0的运行时环境【环境已有就不用再安装】:
示例:sudo yum install dotnet-runtime-7.0
示例:sudo yum install dotnet-sdk-7.0

4.启动webapi服务
dotnet 服务器上的项目路径/chenshibao.aspnetcore7.0.dll
示例:dotnet project/release/webapi/aspnetcore7.0/publish/ChenShiBao.AspNetCore7.0.dll

5.成功启动项目,终端开启
出现以下标志说明服务已经正常启动

6.关闭终端:
直接键盘ctrl + C;

7.要想服务在进程中运行,即使你退出终端或断开 SSH 连接,进程仍然会继续运行,可执行以下命令:
命令:nohup dotnet ChenShiBao.AspNetCore7.0.dll &

8.关闭服务,可以找到服务对应的进程id,通过进程id关闭:
查询dotnet相关的进程命令:ps -ef | grep dotnet 或 ps aux | grep dotnet
执行关闭命令:kill -9 2303540

9.CentOS上配置nginx代理
第一步:安装nginx:
sudo yum install nginx
第二步:启动和管理nginx:
sudo systemctl start nginx
设置开机自动启动:
sudo systemctl enable nginx

第三步:检查nginx状态
sudo systemctl status nginx

10.使用https【不是一定要配置,如果配置ssl安全证书,绑定到域名,需要先做DNS域名解析,使得域名和服务器公网的ip地址绑定,具体配置可以参考阿里云或腾讯云域名解析流程】
第一步:首先安装 Certbot:
sudo yum install certbot python3-certbot-nginx
第二步:然后使用 Certbot 获取 SSL 证书并配置 Nginx:
sudo certbot --nginx -d your_domain_or_ip

第三步:更新nginx配置
Certbot 会自动更新你的 Nginx 配置文件以使用生成的 SSL 证书。如果你手动配置,可以在 Nginx 配置文件中添加类似以下内容:

11.配置nginx作为反向代理
第一步:可以建一个配置文件来设置反向代理
sudo nano /etc/nginx/conf.d/ChenShiBao.AspNetCore7.0.conf

  在新建的配置文件ChenShiBao.AspNetCore7.0.conf配置以下内容:
    server {
      listen 5000;
      server_name your_domain_or_ip;
      #listen 443 ssl; #有安全ssl安全认证才设置
      #server_name xxx;  # 将此处替换为你的域名或服务器的 IP 地址
	  ##SSL 证书和密钥文件的位置
	  #ssl_certificate /etc/letsencrypt/live/csbneter.club/fullchain.pem; #有安全ssl安全认证才设置
	  #ssl_certificate_key /etc/letsencrypt/live/csbneter.club/privkey.pem; #有安全ssl安全认证才设置

      location / {
          proxy_pass http://localhost:5000;  # 转发到你的ASP.NET Core应用程序
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
      }
    }
  将 your_domain_or_ip 替换为你的域名或服务器的 IP 地址。

第二步:测试nginx配置
  sudo nginx -t
  如果配置文件没有错误,你会看到 syntax is ok 和 test is successful 的信息。

第三步:重新加载nginx:
  sudo systemctl reload nginx

第四步:编辑nginx配置文件
  打开 Nginx 主配置文件 /etc/nginx/nginx.conf 或你正在使用的虚拟主机配置文件:
  sudo vim /etc/nginx/nginx.conf

  在nginx.conf配置下面内容:
  http {
      # 增加这些指令
      client_max_body_size 10M;
      large_client_header_buffers 4 16k;
  }

保存完后,再次执行第二,三步;

第五步:服务器上设置安全组和防火墙,允许端口访问;


这里的端口设置,需要与nginx监听的端口一致才可以,只有这样才能从外部的请求访问,这个地址和端口,通过nginx代理转发到服务器本地的应用程序上;
服务器上的应用程序的端口与nginx的监听端口是不一致的;
例如:nginx监听端口是1000,那应用程序的端口就得设置为其他端口;

常用命令:
查看哪些进程使用哪个端口:sudo lsof -i :5000
杀死某个进程:kill -9 进程id;
确认应用程序在哪个端口上运行:sudo netstat -tulnp | grep dotnet
查看nginx的error.log:sudo tail -f /var/log/nginx/error.log
开启nginx:sudo systemctl start nginx
停止nginx:sudo systemctl stop nginx
重新加载配置:sudo systemctl reload nginx或sudo service nginx reload

标签:webapi,为例,aspnetcore,sudo,端口,nginx,proxy,dotnet,服务器
From: https://www.cnblogs.com/chenshibao/p/18364368

相关文章

  • 在 Ubuntu 中查找库的位置:以 FFTW3 库为例
    目录一、为什么要查找库的位置?二、查找库位置的常用方法三、实践示例四、总结在Ubuntu或其他基于Linux的操作系统中,开发者常常需要查找已安装库的位置,以便进行编译、链接或配置环境变量。本文将详细介绍如何在Ubuntu中查找库的位置,并以常用的FFTW3库为例进行......
  • 【Unity/网络】Unity和内网穿透的网络测试 —— 以聊天室为例
    这两天在做那个CodeMonky的胡闹厨房的案例,一直困扰我的是关于Lobby和Relay的相关网络服务,需要挂加速器并且延迟不低,所以我一直在寻找一些其他替代方案,想起来之前做一个UEC++的网络枪战时做过一个内网穿透的方法,所以在Unity中也采用这个方案,但中间怎么改IP和端口都没法连接成......
  • 有符号浮点运算的基本步骤:以双线性插值为例
    参考:韩彬的图像处理书、无双软件学院方法。步骤一:无损定点化浮点数在硬件计算中首先需要做的便是定点化,一般是左移一定位宽,可以是2048或4096;这个过程要注意保障无损;步骤二:运算和位宽匹配;要确定所有参与计算的数小数位位宽是匹配的,否则无法进行任何层次的计算;需要特别注意很......
  • Linux--内核驱动框架(以字符设备驱动为例)
    下面将介绍一个简单的Linux内核驱动程序(部分),用于处理一个假设的字符设备(鼠标、键盘、串口、LED...),具体介绍如下:1头文件导入#include<linux/fs.h>//用于声明file_operations结构体和其他文件系统相关函数。#include<linux/module.h>//用于声明module_i......
  • 【微调大模型参数详解】以chatGLM为例
    微调chatGLM3-6b-base时涉及的一些重要参数的详细解释batch_size:批量大小,默认为4,每个GPU的训练批量大小。增加该值可以提高训练速度,但可能需要更多的显存。lora_r:LoraR维度,默认为64,指定Lora训练中用于调节的R维度大小。该参数影响Lora模块的复杂度和模型的表现。......
  • WebApi 简单使用 JObject,可以省掉自定义的class类
    post提交的json数据:{"name":"Jason","age":18,"color":"blue"}usingNewtonsoft.Json.Linq;[HttpPost("testpost")]publicstringTestPost([FromBody]Objectinput){......
  • 以定时器为例研究一手 Python asyncio 的协程事件循环调度
    在使用Python的asyncio库实现异步编程的过程中,协程与事件循环这两个概念可以说有着千丝万缕的联系,常常是形影不离的出现,如胶似漆般的存在,asyncio库到底是如何调度协程的?下面以Python3.8中的asyncio.sleep定时器为例研究一手asyncio的源码实现。几个主要的概念首先......
  • 环境配置:如何在IntelliJ IDEA中安装和修改JDK版本配置(以Windows为例)
    环境配置:如何在IntelliJIDEA中安装和修改JDK版本配置(以Windows为例)为了在Java开发中使用最新的功能和优化,升级和配置JDK版本是必不可少的。本文将详细介绍如何下载、安装、配置最新的JDK版本,并在IntelliJIDEA中正确设置项目的JDK版本,确保你的开发环境能够支持最新的Java......
  • 使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
    使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)使用OpenAI模型体验GraphRag——以《边城》为例在使用SiliconCloud之前,先使用OpenAI的模型看看GraphRag的效果。GraphRAG是一种基于AI的内容理解和搜索能力,利用LLMs,解析数据以创建知识图谱,并对用户......
  • 以DenseNet为例进行AI算法部署集成
    以DenseNet为例进行AI算法部署集成AI越用越广,但落地使用的时候各种bug多多,这里提供一些离线集成的导引方便大家学习,后面也会尝试更新一些webapi的集成方式,请期待后续的博客简单性能表格下列表格为一些简单的部署数据搜集,通过部署器进行离线集成,可以看到可以大大降低资源......