云服务器-ASP.NET Core+Mysql+Jexus+CDN上云实践

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 腾讯云-ASP.NET Core+Mysql+Jexus+CDN上云实践.md请先开通云服务器知识点:ASP.NET Core和 Entity Framework Core的使用Linux 下 安装和配置 Mysql 数据库通过实体生成数据库简单 Linux 命令和 Shell 工具的使用反向代理腾讯云CDN的使用、配置服务器 SSL 证书一,创建 CVM 服务器云服务器 CVM 简介云服务器(Cloud Virtual Machine,CVM)为您提供安全可靠的弹性计算服务。

腾讯云-ASP.NET Core+Mysql+Jexus+CDN上云实践.md

请先开通云服务器

知识点:

  • ASP.NET Core和 Entity Framework Core的使用
  • Linux 下 安装和配置 Mysql 数据库
  • 通过实体生成数据库
  • 简单 Linux 命令和 Shell 工具的使用
  • 反向代理
  • 腾讯云CDN的使用、配置服务器 SSL 证书

一,创建 CVM 服务器

云服务器 CVM 简介

云服务器(Cloud Virtual Machine,CVM)为您提供安全可靠的弹性计算服务。 只需几分钟,您就可以在云端获取和启用 CVM,来实现您的计算需求。随着业务需求的变化,您可以实时扩展或缩减计算资源。 CVM 支持按实际使用的资源计费,可以为您节约计算成本。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。

云数据库 MySQL 简介

腾讯云数据库 MySQL(TencentDB for MySQL)让用户可以轻松在云端部署、使用 MySQL 数据库。MySQL 是世界上最流行的开源关系数据库,通过云数据库 MySQL,您在几分钟内即可部署可扩展的 MySQL 数据库实例。不仅经济实惠,而且可以弹性调整硬件容量的大小而无需停机。云数据库 MySQL 提供备份回档、监控、快速扩容、数据传输等数据库运维全套解决方案,为您简化 IT 运维工作,让您能更加专注于业务发展。

在教程开始之前,你需要创建一台腾讯云CVM服务器,并到安全组开发全部端口(或者只增加开发3306端口)。

请选择 Ubuntu 18.04 或 Centos 7.5。

Ubuntu 比较适合初学者,建议服务器安装 Ubuntu。

Shell 工具:

免费正版的 XShell 软件下载地址:

https://www.netsarang.com/zh/free-for-home-school/

连接 Linux :

需要注意的是,Ubuntu 默认的账户名是 ubuntu

在 XShell 界面你可以直接使用 Shell 命令连接 Linux:

ssh ubuntu:7t@DfP3Ym3FwDoLM@129.204.104.20
AI 代码解读

格式 ssh [用户账号]:[密码]@[主机IP]

登录后,需要手动添加一个 root 用户:

sudo passwd root
AI 代码解读

然后按要求输入两次密码即可。

使用 su 命令可以切换用户,例如 su root

二,服务器安装 Mysql

由于云数据库只能在内网访问,如需公网访问需要购买弹性公网IP,同时为了学习在 Linux 下安装 Mysql ,这里先不使用云数据库,而是手动搭建一个 Mysql数据库。

1,安装、配置、使用Mysql数据库

下面操作需要使用 root 权限,请先切换 root 用户。

安装 Mysql

apt install mysql-server
或
apt-get install mysql-server
AI 代码解读

apt-get 与 apt 的区别是,apt-get 可以输出详细信息。

如果你的是 Centos 系统,则使用 yum install mysql-server

允许远程登录 Mysql

vim /etc/mysql/mysql.conf.d/mysqld.cnf
AI 代码解读

找到 bind-address 然后按下 i 键,即可修改内容。请修改成

bind-address            = 0.0.0.0
AI 代码解读

0.0.0.0 的意思是允许任何 IP 登录到此服务器的 Mysql。

修改完毕,按下 Esc 键,输入 :wq! 回车,即可保存并退出。

重启 Mysql 一次

service mysql restart
AI 代码解读

配置远程登录权限

mysql -u root -p
AI 代码解读

然后就会登录到 Mysql 中。

在 Mysql 数据库中创建一个 root 用户并设置密码为 123456:

RANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY "123456" WITH GRANT OPTION; 
AI 代码解读

创建数据库

create database testmvc;
AI 代码解读

然后退出 Mysql 管理

exit;
AI 代码解读

再重启一次

service mysql restart
AI 代码解读

管理 Mysql

Navicat for MySQL 是一个用于管理 Mysql 数据库的商业软件。

下载地址 https://navicatformysql.en.softonic.com

网上有很多在线管理 Mysql 的工具,请自行搜索。

三,创建用于测试的ASP.NET Core应用

请在 Visual Studio 2017/2019 上创建一个 ASP.NET Core 应用,选择 MVC(模型视图控制器)。

1,添加 Nuget 包

依次搜索并安装以下 Nuget 包

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Tools

MySql.Data.EntityFrameworkCore

MySql.Data.EntityFrameworkCore.Design
AI 代码解读

在网站应用的 Models 目录中,新建一个 Users.cs 的类,这个类被成为 模型类,因为这个类用于通过 EF Core 生成数据库表、映射数据模型, 因此又被称为 实体类(Entity)。

Users 类的代码:

这将生成一个用户信息的表(你可以随意增加属性)

    public class Users
    {
        public int Id { get; set; }
        public string UserName { get; set; }
        public int YearsOld { get; set; }
        [Phone]
        public string PhoneNumber{get;set;}
        [EmailAddress]
        public string Email { get; set; }
    }
AI 代码解读

2,创建数据库访问上下文

Models 目录创建一个 DatabaseContext.cs

    public class DatabaseContext : DbContext
    {
        public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
        {

        }
        public DbSet<Users> Users { get; set; }
    }
AI 代码解读

数据库上下文用于访问数据库、依赖注入。

3,配置服务

在 Startup.cs 文件找到 ConfigureServices方法,在里面增加

            services.AddDbContext<DatabaseContext>(options => options.UseMySQL("server=129.204.104.20;user id=root;password=123456;database=test;charset=utf8;sslMode=None"));
AI 代码解读

请修改上面的连接字符串,改成自己的。

4,添加修改数据库表的控制器

使用自带的代码生成器,生成页面和数据库操作代码。

右键点击项目的 Controllers 文件夹

1565250372(1).png)

1565250455(1).png)

配置网站端口

由于用于测试,因此只使用 http 访问。

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
            .UseUrls("http://*:5001")
                .UseStartup<Startup>();
AI 代码解读

在 Startup.cs 文件删除 app.UseHttpsRedirection();

生成实体映射

Entity Framework Core 是一个 ORM 框架,通过 EF Core,我们可以直接通过代码即可操作数据库,而不必编写复杂的 SQL 语句。

打开 程序包管理控制台

生成映射:

Add-Migration Migrations
AI 代码解读

生成数据库表:

Update-Database
AI 代码解读

然后你会发现数据库多了一个 Users 表。

准备迁移到云服务器运行

修改 services.AddDbContext中的数据库ip,改成 127.0.0.1。因为一旦我们迁移到服务器,访问数据库就变成了本地访问,不需要填写公网 IP。

发布网站项目,把 publish 的内容打包,直接打包成 publish.zip。

四,服务器搭建环境

1,安装.NET Core SDK

全版本的 .NET Core SDK 下载地址

https://dotnet.microsoft.com/download

直接下载 ubuntu 版本的:

https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-current

根据页面提示复制命令到服务器执行即可。

2,安装lrzsz

为了方便上传文件,安装 lrzsz

apt install lrzsz
AI 代码解读

然后就可以直接拖文件上传到 Linux 了。

这里我们在临时目录存放网站。

mkdir /tmp/www
cd /tmp/www
AI 代码解读

然后把网站压缩包上传到此目录。

解压文件

unzip publish.zip
AI 代码解读
cd publish
AI 代码解读

3,安装 jexus

这里使用 jexus 作为Web服务器,托管应用、进行反向代理。

原因是 Jexus 轻量、简单。当然也可以用 Nginx 等。

安装:

curl https://jexus.org/release/x64/install.sh|sudo sh
AI 代码解读

配置 jexus

我们配置 jexus,使得网站能够被外界访问。

/usr/jexus/siteconf
AI 代码解读
touch testmvc
AI 代码解读
vim testmvc
AI 代码解读

复制 以下内容粘贴上去

######################
# Web Site: Default 
########################################

port=80
root=/ /tmp/www/publish
hosts=129.204.104.20    #OR your.com,*.your.com
reproxy= / http://127.0.0.1:5001
# User=www-data

# AspNet.Workers=2  # Set the number of asp.net worker processes. Defauit is 1.

# addr=0.0.0.0
# CheckQuery=false
NoLog=true

 AppHost={cmd=dotnet /tmp/www/publish/WebApplication2.dll; root=/tmp/www/publish; port=5001}




AI 代码解读

80 是外界访问网站的端口,

129.204.104.20 是公网 IP,

reproxy= / http://127.0.0.1:5001 是反向代理

AppHost={cmd=dotnet /tmp/www/publish/WebApplication2.dll; root=/tmp/www/publish; port=5001} ,cmd 指要运行的命令,root 是目录位置,port是 网站端口。

配置说明:

通过 Jexus 来托管 ASP.NET Core ,使用 Web 服务器 启动应用。

配置反向代理,使得外界可以访问 ASP.NET Core 应用。

4,重启 Jexus、启动网站

cd /usr/jexus/
./jws restart
AI 代码解读

5,打开网站、体验数据库操作

1

如果你需要使用 Nginx 配置反向代理请参考笔者的另一篇文章

https://www.cnblogs.com/whuanle/p/10228893.html

五,腾讯云 CDN 和 网站 SSL 配置

这里就不进行实际代码操作,大概演示一下思路。

你可以在 https://console.cloud.tencent.com/ssl 为你的网站申请免费的 SSL 证书。

https://console.cloud.tencent.com/cdn 为你的网站配置加速功能。

1565268177(1).png)

将你的域名使用 CNAME 解析到腾讯云 CDN 加速域名上吗,即可配置加速、缓存功能。

1565268272(1).png)

配置网站SSL的思路和解决方案

配置网站 SSL,有个问题是强制跳转到 https。

用户访问 http 时,如何强制跳转到 https ?

肯定不能在网站或服务器上配置,一是配置免费、流量大容易影响性能,二是会降低访问速度。

我们可以在腾讯云 CDN 里面配置 强制 HTTPS 功能。

这样可以在域名解析后直接强制跳转 https,而不必对 Web 服务器或 网站做任何修改。

1565268546(1).png)

但是hi,这样也带来了问题。

因为使用 CDN 加速和缓存功能,需要使用 CNAME。

大多数域名,会把主域名设置企业邮箱,那么,无法在使用 CNAME 解析,但可以使用 A 记录。

因此,假如你有个 域名为 qq.com,并且配置了邮箱系统 xxx@.qq.com,那么你将无法使用 qq.com 去配置 CDN 记录。

通用解决方法:

qq.com 不用了,qq.com 用来配置邮箱。

www.qq.com 以及其它前缀作为网站的域名访问,访问www.qq.com,会强制跳转https。

但是不能浪费 qq.com,我们可以把任何访问qq.com的客户端,重定向到 www.qq.com。

也就是说, qq.com 不会作为网站域名被访问,访问 qq.com 会被跳转到 www.qq.com。

可以验证。

浏览器输入 qq.com,访问。发现跳转到 https://www.qq.com

再输入 www.qq.com,访问,发现跳转到 https://www.qq.com

使用命令进行测试:

root@VM-14-73-ubuntu:/tmp# curl qq.com
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.6.0</center>
</body>
</html>
root@VM-14-73-ubuntu:/tmp# curl www.qq.com
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

AI 代码解读

解释:

访问qq.com和www.qq.com都会进行302重定向。

问题

有个问题是,

你试试访问:https://qq.com

你会发现,访问不了。不信你试试。

腾讯的 qq.com 域名竟然不能使用 https:// 访问。。。

当然不清楚 qq.com 的解析是怎么设置的。

我这里只是举例。很多网站访问 xx.com,都会跳转到 www.xx.com。

目录
打赏
0
0
0
0
2
分享
相关文章
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
75 5
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
125 0
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
73 1
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
73 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
65 3
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
2025年阿里云GPU服务器租用价格、选型策略与应用场景详解
随着AI与高性能计算需求的增长,阿里云提供了多种GPU实例,如NVIDIA V100、A10、T4等,适配不同场景。2025年重点实例中,V100实例GN6v单月3830元起,适合大规模训练;A10实例GN7i单月3213.99元起,适用于混合负载。计费模式有按量付费和包年包月,后者成本更低。针对AI训练、图形渲染及轻量级推理等场景,推荐不同配置以优化成本和性能。阿里云还提供抢占式实例、ESSD云盘等资源优化策略,支持eRDMA网络加速和倚天ARM架构,助力企业在2025年实现智能计算的效率与成本最优平衡。 (该简介为原文内容的高度概括,符合要求的字符限制。)
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
阿里云出手了,DeepSeek服务器拒绝繁忙,免费部署DeepSeek模型671B满血版
阿里云推出免费部署DeepSeek模型671B满血版服务,通过百炼大模型平台,用户无需编码,最快5分钟、最低0元即可完成部署。平台提供100万免费Token,支持DeepSeek-R1和DeepSeek-V3等多款模型调用,有效解决服务器繁忙问题。新手零基础也能轻松上手,享受高效稳定的API调用和自动弹性扩展功能。教程涵盖开通服务、获取API-KEY及配置Chatbox客户端等步骤,详细指引助您快速实现DeepSeek自由。
136 18

推荐镜像

更多