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

.NetCore项目nginx发布

目录

环境:

服务器型号

项目创建:

添加自定义的API控制器

修改访问路径

示例代码

配置跨域

启动测试

项目发布

发布的项目

准备服务器【Alibaba Cloud Linux 3.2104 LTS 64位 快速启动版】

链接linux服务器

安装ASP.Net Core3.1环境

安装 SDK

.NET版本验证

直接启动

安装nginx

查看nginx.service状态命令:

启动nginx.service

nginx文件位置

公网访问


我之前写过docker的,这里写一下nginx的发布方法:

环境:

系统:win10专业版

开发工具:Visual Studio 2019

.NET环境:.NET Core 3.1

项目:ASP.NET Core Web API

运行系统:Alibaba Cloud Linux 3.2104 LTS 64位 快速启动版

服务器:nginx

服务器型号

 

项目创建:

这里选择.NET Core 3.1版本,因为只有它是长期支持的,如果是vs2022版本是.NET Core 6.0那个很麻烦找配套。 

创建完毕 

添加自定义的API控制器

这里我用Test作为控制器名称。 

修改访问路径

【*】代表所有IP都能访问

示例代码

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace APIDemo20221020.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class TestController : ControllerBase
    {
        public Object GetInfo() {
            Dictionary<String, Object> map = new Dictionary<string, object>();
            map.Add("state",true);
            map.Add("message","访问成功");
            List<string> list=new List<string>();
            for (int i = 0; i < 100; i++)
            {
                list.Add(((char)(30000 + i)).ToString());
            }
            map.Add("result", list);
            return map;
        }
    }
}

配置跨域

ASP.NET Core微服务(三)——【跨域配置】_红目香薰的博客-CSDN博客

直接在Startup.cs中添加代码即可。

启动测试

访问:http://localhost:5000/api/Test/GetInfo

访问成功

项目发布

 

 

发布的项目

我的项目名叫做【APIDemo20221020】所以,应用程序叫做【APIDemo20221020.dll】

准备服务器【Alibaba Cloud Linux 3.2104 LTS 64位 快速启动版】

链接linux服务器

安装ASP.Net Core3.1环境

Download .NET (Linux, macOS, and Windows)

选择.NET Core 3.1版本

选择图片中标注红色外框的选项。 

选择脚本安装

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

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

安装 SDK

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:这个版本支持.NET Core

sudo yum install aspnetcore-runtime-3.1 -y

不是很大,一会就安装完毕了。

 

.NET版本验证

dotnet --list-runtimes

上传linux-x64位版本的项目包

使用XFTP上传

直接启动

安装nginx

yum install nginx -y

由于nginx不是自动启动的,需要咱们启动一下。

查看nginx.service状态命令:

systemctl status nginx.service

启动nginx.service

systemctl start nginx.service
systemctl status nginx.service

nginx文件位置

nginx 日志文件 /var/log/nginx
nginx配置文件目录 /etc/nginx
nginx 可执行文件 /usr/sbin/nginx
nginx环境配置 /etc/sysconfig/nginx
nginx默认站点目录 /usr/share/nginx/html

公网访问

修改配置

vi /etc/nginx/nginx.conf

修改到项目路径,输入【i】进行insert模式,修改完毕后按【ESC】加【:wq】进行保存。

这里看到有【;】,不要忘记。保存并重新启动。

这里我给了我修改server的全部编码。当然,端口号是65535里找不常用的随便用都行。

    server {
        listen       8080;
       # listen       [::]:80;
        server_name  _;
#        root         /usr/share/nginx/html;
        location / {
        proxy_pass http://localhost:5000;
        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;
        }
        root /root/linux-x64;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

 

重新启动并运行【do】

systemctl restart nginx.service
dotnet APIDemo20221020.dll

访问成功

如果访问不了就行没开安全组: 

我这里是全部,肯定是能访问的。 

 

相关文章:

  • 主流开源OLAP对比分析
  • 二叉搜索树的基本操作 || TreeMap和TreeSet介绍
  • 超详细的数据结构---顺序表的有关教程
  • Exchange Server 2016 安装部署
  • 【C51单片机】中断系统之单一外中断应用
  • 2.2 Linux系统的目录结构与文件类型
  • jedis:使用事务开启watch监控
  • 【趣学算法】第一章 算法之美(上)
  • 以MapBox为核心构建Vue地图组件库教程
  • Web链接测试如何做?
  • 【不是问题的问题】为什么复位中断服务程序里面直接调用的main函数,难道所有程序都在复位中断里面执行的?
  • 【ViT 微调时关于position embedding如何插值(interpolate)的详解】
  • 动态内存管理(malloc free calloc realloc)
  • C语言/C++内存管理
  • 【FPGA】什么是串行通信?
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 《剑指offer》分解让复杂问题更简单
  • 【刷算法】求1+2+3+...+n
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • in typeof instanceof ===这些运算符有什么作用
  • isset在php5.6-和php7.0+的一些差异
  • js递归,无限分级树形折叠菜单
  • PAT A1017 优先队列
  • select2 取值 遍历 设置默认值
  • swift基础之_对象 实例方法 对象方法。
  • 码农张的Bug人生 - 见面之礼
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 通信类
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 【干货分享】dos命令大全
  • Java总结 - String - 这篇请使劲喷我
  • 仓管云——企业云erp功能有哪些?
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (java)关于Thread的挂起和恢复
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Python第六天)文件处理
  • (十)c52学习之旅-定时器实验
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net 验证控件和javaScript的冲突问题
  • .NET 中的轻量级线程安全
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [BZOJ4010]菜肴制作
  • [Codeforces] probabilities (R1600) Part.1
  • [dfs] 图案计数
  • [EFI]英特尔 冥王峡谷 NUC8i7HVK 电脑 Hackintosh 黑苹果efi引导文件
  • [Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率