后端准备

# 后端准备

# Server 端必备环境

# 获取工程项目

git clone https://github.com/luoyunchong/lin-cms-dotnetcore.git
1

# 数据库配置

文件位置src/LinCms.Web/appsettings.Development.json,当数据库中存储表情包是,Charset为utf8mb4

请务必根据自己的实际情况修改此配置项

"ConnectionStrings": {
"MySql": "Data Source=localhost;Port=3306;User ID=root;Password=123456;Initial Catalog=lincms;Charset=utf8mb4;SslMode=none;Max pool size=5;",
"CsRedis": "127.0.0.1:6379,password=,defaultDatabase=0"
},
1
2
3
4

identityserver4/LinCms.IdentityServer4/appsettings.Development.json 数据库配置

"ConnectionStrings": {
"MySql": "Data Source=localhost;Port=3306;User ID=root;Password=123456;Initial Catalog=LinCms;Charset=utf8mb4;SslMode=none;Max pool size=10;"
},
1
2
3

# 数据迁移

该项目使用FreeSql (opens new window),默认自动迁移数据表结构,需要自己创建数据库,名字为LinCms,无须用户操作,但无数据,而且只有访问到表时才会创建某个表,所以用户可将备份SQL (opens new window)放到Mysql中生成,还原表结构及数据。

# visual studio 2019运行项目

双击lin-cms-dotnetcore.sln,使用vs2019打开项目。右键解决方案,点击生成解决方案。

由于将identityserver4单独拆成了一个项目,所以需要同时启动二个项目,右键解决方案,属性。,选择多个启动项目,勾选二个项目同时启动。如下图所示。

这时候会打开二个网页 https://localhost:5001/swagger/index.html,即可看到swagger页面。

会打开浏览器,访问https://localhosst:5001/swagger/index.html (opens new window),会看到swagger的文档。 访问https://localhosst:5003/swagger/index.html (opens new window) 是ids4的接口文档,什么也看不到。

LinCms.Web运行效果:

# 部署

# 部署前准备

因为该项目基于IdentityServer4,实现的授权认证服务,

开发阶段使用AddDeveloperSigningCredential()方法即可完成签名认证,但是在生产环境,我们必须使用AddSigningCredential()方法并且使用OpenSSL生成自己的签名证书

Startup.cs

            services.AddIdentityServer()
#if  DEBUG
                .AddDeveloperSigningCredential()
#endif
#if !DEBUG
                .AddSigningCredential(new X509Certificate2(Path.Combine(AppContext.BaseDirectory,
                        Configuration["Certificates:Path"]),
                    Configuration["Certificates:Password"]))
#endif
                .AddInMemoryIdentityResources(InMemoryConfiguration.GetIdentityResources())
                .AddInMemoryApiResources(InMemoryConfiguration.GetApis())
                .AddInMemoryClients(InMemoryConfiguration.GetClients())
                .AddProfileService<LinCmsProfileService>()
                .AddResourceOwnerValidator<LinCmsResourceOwnerPasswordValidator>();
1
2
3
4
5
6
7
8
9
10
11
12
13
14

appsettings.Production.json

{
    "Certificates":
    {
        "Path":"ids4.pfx",
        "Password":"123qwe"
    }
}
1
2
3
4
5
6
7

# 使用OpenSSL生成证书

官网下载并安装OpenSSL OpenSSL官网 (opens new window)

下载 Win64 OpenSSL v1.1.1b 版本

在OpenSSL的bin文件夹,以管理员身份打开CMD执行以下命令:

openssl req -newkey rsa:2048 -nodes -keyout ids4.key -x509 -days 365 -out ids4.cer
1

下面将生成的证书和Key封装成一个文件,以便IdentityServer可以使用它们去正确地签名tokens

openssl pkcs12 -export -in ids4.cer -inkey ids4.key -out ids4.pfx 
1
# (注:在生成的过程中会让我们输入Export Password)

这个 密码与appsettings.Production.json配置项相同。

发布时,把ids4.pfx,放到项目根目录

# 参考