Table of Content
前言
Adnc
是一个完全可以落地的微服务/分布式框架,集成了一系列主流稳定的微服务配套组件。如果只是在本地调试,只需要安装必备软件,必备软件除开发工具外,建议大家都使用Docker
安装;同样也可以采取自己熟悉的任何方式安装或者使用已经安装好的。服务自动注册/发现/配置中心,因为在代码中做了环境变量判断,调试环境不会启用。
必备软件有哪些
1. Visual Studio 2022
Adnc
基于.Net6
开发,所以需要安装Visual Studio 2022
。
如果你不想安装下面这些必备软件,直接我用我线上的环境。请直接跳到文章结尾看
启动服务端ServerApi
2. Redis
- 安装
Redis
#新建/data/redis目录
mkdir -p /data/redis
#进入redis目录
cd /data/redis
#下载已经配置好的redis.conf到当前目录,如果不能下载成功,请手工处理,文件地址如下
# https://github.com/AlphaYu/Adnc/tree/master/doc/redis/redis.conf
wget https://raw.githubusercontent.com/AlphaYu/adnc/master/doc/redis/redis.conf
#`redis.conf` 部分节点说明
#--------------------------------------------------------
#`bind 127.0.0.1` 注释掉这部分,这是限制redis只能本地访问<br/>
#`protected-mode no` 默认yes,开启保护模式,限制为本地访问<br/>
#`daemonize no` 默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败,请设置成no.<br/>
#`dir ./` 输入本地redis数据库存放文件夹(可选)<br/>
#`appendonly yes` redis持久化(可选)<br/>
#`loadmodule /usr/lib/redis/modules/redisbloom.so` 挂载布隆过滤器模块
#--------------------------------------------------------
#拉取包含布隆过滤器的redis镜像文件
docker pull redislabs/rebloom:2.2.5
#启动redis容器,监听13379端口,并挂载redis.conf与data目录
docker run -p 13379:6379 --restart=always --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redislabs/rebloom:2.2.5 redis-server /etc/redis/redis.conf
- 修改以下3个服务
appsettings.development.json
文件的redis
节点信息 。
Adnc.Usr.WebApi
、Adnc.Cust.WebApi
、Adnc.Maint.WebApi
- 如果你是windows系统下安装的redis或者在linux系统下安装但没有挂载redisbloom.so模块,需要将
EnableBloomFilter
设置为false
。
"Redis": {
"EnableBloomFilter": true,
"Dbconfig": {
"ConnectionString": "服务器IP:13379,password=football,defaultDatabase=1,ssl=false,sslHost=null,connectTimeout=4000,allowAdmin=true"
}
},
3. RabbitMQ
- 安装
RabbitMQ
#拉取rabbitmq镜像
docker pull rabbitmq:3.8.9-management
#启动容器,监听18578,13572端口
#新手特别要注意RabitMq有两个端口,13572=数据端口,18578=web管理页端口。
docker run --restart=always --name=rabbitmq -p 18578:15672 -p 13572:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=football -d rabbitmq:3.8.9-management
#如果安装成功,我们访问`http://服务器IP:18578`,会出现登录页面
-
修改
Adnc.Shared.WebApi/appsettings.shared.Development
文件的RabbitMq
节点信息。"RabbitMq": { "HostName": "服务器Ip", "VirtualHost": "/", "Port": "13572", "UserName": "admin", "Password": "football" }
4. MongoDB
-
安装
MongoDB
#拉取mongo镜像
docker pull mongo:4.4.3
docker run --restart=always --name mongo -p 13017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=football -e TZ=Asia/Shanghai -v /data/mongo:/data/db -v /data/mongo/backup:/data/backup -d mongo:4.4.3 --auth
#进入mongo容器
docker exec -it mongo mongo admin
use admin
db.auth("admin","football")
# 新建logs_dev数据库
use logs_dev
# 创建一个空的test集合,logs_dev如果没有任何集合,Adnc的健康监测不能通过。
db.createCollection("test")
# 创建用户
db.createUser({user:'alpha',pwd:'football',roles:[{role:'readWrite',db:'logs_dev'}]})
- 修改
Adnc.Shared.WebApi/appsettings.shared.Development
文件的MongoDb
节点信息。"MongoDb": { "ConnectionString": "mongodb://用户名:密码@服务器Ip:13017/logs_dev?authSource=logs_dev", "CollectionNamingConvention": 2, "PluralizeCollectionNames": true }
5. Mariadb/Mysql
- 安装
Mariadb/Mysql
#拉取mariadb镜像
docker pull mariadb:10.5.8
#启动容器,监听13308端口,并挂载data与logs目录
docker run --restart=always --name mariadb -p 13308:3306 -e MYSQL_ROOT_PASSWORD=alpha.netcore -e TZ=Asia/Shanghai -v /data/mariadb/logs:/var/log/mysql -v /data/mariadb/data:/var/lib/mysql -d mariadb:10.5.8 --lower_case_table_names=1
# 创建数据库并导入数据
cd /data
#下载脚本
wget https://raw.githubusercontent.com/AlphaYu/adnc/master/doc/adnc_usr_dev.sql
wget https://raw.githubusercontent.com/AlphaYu/adnc/master/doc/adnc_maint_dev.sql
wget https://raw.githubusercontent.com/AlphaYu/adnc/master/doc/adnc_cust_dev.sql
#如果wget下载失败,请手动下载并上传到/root/data目录,文件地址如下
#https://github.com/AlphaYu/Adnc/tree/master/doc
# 拷贝脚本文件到mariadb容器
docker cp /data/adnc_usr_dev.sql mariadb:/usr/adnc_usr_dev.sql
docker cp /data/adnc_maint_dev.sql mariadb:/usr/adnc_maint_dev.sql
docker cp /data/adnc_cust_dev.sql mariadb:/usr/adnc_cust_dev.sql
# 进入容器
docker exec -it mariadb /bin/bash
# 启动mariadb client
mysql -uroot -palpha.netcore
#创建数据库 adnc_usr_dev
CREATE DATABASE IF NOT EXISTS adnc_usr_dev CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
#导入数据
use adnc_usr_dev;
source /usr/adnc_usr_dev.sql;
#创建数据库 adnc_maint_dev
CREATE DATABASE IF NOT EXISTS adnc_maint_dev CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
#导入数据
use adnc_maint_dev;
source /usr/adnc_maint_dev.sql;
#创建数据库 adnc_cust_dev
CREATE DATABASE IF NOT EXISTS adnc_cust_dev CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
use adnc_cust_dev;
source /usr/adnc_cust_dev.sql;
-
修改以下3个服务
appsettings.development.json
文件的Mysql
节点信息 。Adnc.Usr.WebApi
、Adnc.Cust.WebApi
、Adnc.Maint.WebApi
"Mysql": { "ConnectionString": "Server=服务器ip;Port=13308;database=库名;uid=账号;pwd=密码;" }
必备软件安装完成,下面介绍如何启动。
启动服务端ServerApi
- 右键解决方案,属性=>项目启动=>多个启动项目。需要启动以下4个项目
Adnc.Gateway.Ocelot
、Adnc.Usr.Demo.Api
、Adnc.Demo.Maint.Api
、Adnc.Demo.Cust.Api
。实际开发过程中并不需要这样,这样介绍主要是为了快速在本地跑起来。 - 回到
Visual Studio 2022
主界面,点击启动,这样3个服务与网关就启动了。 - 如果启动报错,首选查看控制台窗口信息分析原因,绝大部分是以下3种情况
1、Redis的布隆过滤器没有挂载成功,需要将Redis配置节点的EnableBloomFilters设置为false。
2、RabbitMq端口配错,RabbitMq会暴露了两个端口,一个web管理页端口,一个是数据端口,RabbitMq配置节点里的是数据端口。
3、RabbitMq虚拟机主机配错,如果你对RabbitMq不熟悉,请将VirtualHost配置成"/"。
工程名 | 描述 | URL地址 |
---|---|---|
Adnc.Gateway.Ocelot | 网关 | http://localhost:5002 |
Adnc.Demo.Usr.Api | 用户中心 | http://localhost:50010 |
Adnc.Demo.Maint.Api | 运维中心 | http://localhost:50020 |
Adnc.Demo.Cust.Api | 客户中心 | http://localhost:50030 |
启动前端ClientApp
- 使用
Visual Code
打开前端项目ClientApp
,前端使用Vue
开发,需要安装很多依赖包#安装依赖包 #先安装NodeJs 16.xx版本。 npm install --registry=https://registry.npm.taobao.org #启动前端,地址:localhost:5001,这里请耐心等待,成功后会自动打开浏览器 npm run dev
- 启动成功后,默认页面是登录页面
账号:alpha2008
密码:alpha2008
WELL DONE,记得star && fork。
全文完,ADNC一个可以落地的.NET微服务/分布式开发框架。
做的不错喔!
谢谢夸奖
首先感谢分享
请问部署MongoDB是必须的吗,后面有支持多租户打算么?
1、MongoDB 目前仅用来存放登录日志与操作日志,可以根据自己实际情况调整即可。
adnc 日志分为三种
登录日志=>mongodb
操作日志=>mongodb
Nlog日志=>loki
2、目前没有支持多租户的计划。
写的很好哇大佬,nodejs的版本不能用最新的18版本我觉得可以标识一下,作为只做后端的我简直是毁灭性打击,折腾了一天才发现node-sass版本对不上
建议不错,是要标注下NODEJS版本只支持16.xx版本。
顶一个
赞一个,感谢你为dotnet的发展添砖加瓦~!
学习了,很厉害~ 顶! 顶! 顶!
谢谢夸奖
运行的时候,报一下错误,请问是什么情况呢?
AuthenticationFailureException: ACCESS_REFUSED – Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
应该是rabbitmq没有配置好。