内容纲要
前言
当前是容器化部署的时代,无论是否采用分布式/微服务架构,推荐使用 Docker
进行部署。Linux
+ Docker
是最佳组合,如果您使用 Windows
,可以考虑安装 Linux
虚拟机以提高兼容性和部署效率。ADNC
在服务器上的部署需要先安装 MySQL
、Redis
、RabbitMQ
、Loki
、Consul
和 Nginx
。
- 文档中
10.2.8.5
为作者服务器的内网 IP,请根据实际情况更换。 - 服务器操作系统:
Ubuntu 22.04
- 服务器需预先安装
Docker
和Docker Compose
1. 获取环境安装脚本
# 在本地 `adnc` 目录执行
git submodule init
# 拉取所有子模块
git submodule update --recursive
# 更新到最新版本
git submodule foreach --recursive git pull origin main
2. 环境安装
2.1 登录服务器并创建目录
sudo mkdir -p /adnc
cd /adnc
2.2 上传环境部署脚本
- 在本地
adnc
目录下进入doc
文件夹,将adnc/doc/devops
目录上传至服务器/adnc
目录。
上传后服务器目录结构如下:
adnc
└── devops
└── docker-compose
2.3 执行环境部署脚本
cd /adnc/devops/docker-compose
sudo docker-compose up -d
docker-compose.yml
文件将执行以下操作:
- 部署
Consul
集群并初始化配置信息 - 部署
MariaDB
并初始化数据库 - 部署
Redis
- 部署
RabbitMQ
- 部署
Loki
- 部署
Grafana
3. 修改 Consul 配置信息
3.1 访问 Consul UI:http://服务器IP:8590
3.2 将 10.2.8.5
替换为您的服务器 IP
服务名 | 描述 | 配置路径 |
---|---|---|
Adnc.Gateway.Ocelot |
Ocelot 网关 | /adnc/staging/gateway/appsettings |
Adnc.Demo.Admin.Api |
系统管理服务 | /adnc/staging/admin-api/appsettings |
Adnc.Demo.Maint.Api |
运维管理服务 | /adnc/staging/maint-api/appsettings |
Adnc.Demo.Cust.Api |
客户管理服务 | /adnc/staging/cust-api/appsettings |
- | 公共配置 | /adnc/staging/shared/appsettings |
ADNC
将从Consul
读取appsettings
配置并填充Configuration
对象。Consul
任意节点的Key/Value
配置都会自动同步至其他节点。 配置示例参考本地adnc/doc/consul/demo
目录中的JSON
文件。
4. 部署后端
4.1 安装 .NET 8 SDK
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0
4.2 创建 adnc
目录并设置权限
sudo mkdir -p /adnc/nginx/{conf.d,html,logs,ssl}
sudo mkdir -p /adnc/src
sudo chmod -R 777 /adnc
4.3 上传后端代码
上传前先执行
Delete-BIN-OBJ-Folders.bat
,该文件会清理bin
和obj
目录。
需要上传的文件:
Demo
目录Gateways
目录Directory.Build.props
deploy_demo.sh
deploy_ocelot.sh
上传后服务器目录结构如下:
adnc
├── src
│ ├── Demo
│ ├── Gateways
│ ├── deploy_demo.sh
│ ├── deploy_ocelot.sh
│ └── Directory.Build.props
└── nginx
4.4 执行部署脚本
cd /adnc/src
# 赋予执行权限
sudo chmod +x deploy_demo.sh deploy_ocelot.sh
# 执行部署
sudo bash deploy_demo.sh
sudo bash deploy_ocelot.sh
4.5 验证后端服务
- 访问 Consul UI 查看
Demo
服务是否成功注册。 - 访问
http://服务器IP:5000
检查网关是否正常工作。
5. 部署前端
5.1 创建 nginx.conf
文件
sudo touch /adnc/nginx/nginx.conf
sudo chmod 777 /adnc/nginx/nginx.conf
5.2 配置 nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain application/javascript text/css;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.2.8.5:5000/api/;
}
}
}
5.3 启动 Nginx
sudo docker run -it -d --restart always --network host \
--name adnc-nginx \
-v /adnc/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /adnc/nginx/html:/usr/share/nginx/html \
-v /adnc/nginx/logs:/var/log/nginx/ \
-v /adnc/nginx/ssl:/etc/nginx/ssl \
-e TZ=Asia/Shanghai \
nginx
5.4 打包并部署前端
pnpm run build
build
成功后,将dist
目录内的文件上传至/adnc/nginx/html
。- 访问
http://服务器IP
,如成功显示登录页面,则ADNC
部署成功。
6. 结语
🎉 恭喜您,ADNC
框架已成功部署!
如果本项目对您有帮助,欢迎 Star
& Fork
支持!
ADNC —— 一个可落地的 .NET 微服务/分布式开发框架。
好的,不错,学习了。
美团外卖员?
不错,正在学习
谢谢夸奖