项目部署整理
2022-11-30 14:16:17 10 举报
AI智能生成
项目部署整理
作者其他创作
大纲/内容
安装 Java:sudo apt install openjdk-11-jdk
测试 java -version
导入 Jenkins 软件源的 GPG keys:wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
添加软件源到系统中:sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
开始安装 sudo apt updatesudo apt install jenkins
打印服务状态来验证它:systemctl status jenkins(注意使用命令:q 退出编辑模式)
获取初始密码: sudo cat /var/lib/jenkins/secrets/initialAdminPassword
安装 pipeline:jenkins
安装运行:docker run -d --hostname rabbitmq --name rabbitmq -p5672:5672 -p15672:15672 -v /www/rabbitmq:/var/lib/rabbitmq rabbitmq:management
检查容器运行状态:docker ps | grep rabbit
初始化,可以直接用默认的guest/guest
docker update --restart=always <CONTAINER ID>
消息队列服务器:rabbitmq
新建网络 docker network create my-network
将rabbitmq容器加入网络:docker network connect my-network rabbitmq
检查:docker network inspect my-network
构建容器建通信网略
在jenkins新建任务过程中会经常出现无权限的问题,所以还是要统一新建组并赋予权限
cat /etc/group新建组:groupadd my_group
给组加user:usermod -g my_group jenkins
修改文件所在组并加权限:chmod -R a+rwx /var/lib/backend
此处没有细致研究,大概明白linux是根据目录归属用户或者组控制权限
linux 用户权限
服务器结构
安装k8s,服务治理,负载均衡
Kompose-使用Docker Compose生成k8s资源
docker run -d --restart=unless-stopped -p 80:80 rancher/rancher:stable
rancher
k8s
前端自动化部署
阿里购买ubuntu 服务器
重置实例密码
用PuTTY远程
服务器构建
可以设置实例对应的 role并授权 kms访问权限
阿里云
更新 apt 包索引 sudo apt-get update
使用官方安装脚本自动安装 curl -fsSL https://get.docker.com | bash -s docker
添加 Docker 的官方 GPG 密钥 curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
安装 Docker Engine-Community: sudo apt-get install docker-ce docker-ce-cli containerd.io
测试 Docker 是否安装成功 sudo docker run hello-world
基层docker部署
服务器环境
最后在解决方案中启用docker-compose
项目新建时请使用容器
vs生成项目解决方案my-starter
domain包含领域内结构infrastructure+domain+starter
基础结构是auth+bff+foundation+domain 文件夹
源代码部署在github仓库中
项目结构
github新增deploy key,并在github中新建用户
切记,,,服务器安装git: apt install git
github 新增触发接口 webhook
先用github运行项目获取最新代码
安装组合发布:apt install docker-compose
启动容器:cd /var/lib/jenkins/workspace/my-starter-backenddocker-compose builddocker-compose up -d
注意 docker-compose的端口隐射,网络设置
gpasswd -a ${USER} dockereg: gpasswd -a jenkins docker
或者 chmod 777 /var/run/docker.sock
jenkins运行docker权限问题
开始新建项目发布项目my-starter
查看容器内部:docker exec -it my /bin/bash
docker compose目录映射
wget https://packages.microsoft.com/config/ubuntu/21.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update; \\ sudo apt-get install -y apt-transport-https && \\ sudo apt-get update && \\ sudo apt-get install -y dotnet-sdk-5.0
docker compose 的volumn的隐射,一边是发布目录,一边是workdir目录
dotnet publish 目录,docker 重启容器
服务器安装 dotnet5.0
按需发布
自动化发布
权限控制
account项目
seedwork,公用底层类
构造对象,发出事件
聚合
包含数据
事件
domain
数据库访问repository
第三方
infrastructure
纯查询,用于展现
viewmodel
生成 aggregate,用repository保存数据
service/meditor
将事件发到eventbus执行
eventbus
starter
子主题(必须目标名词,假设某一类商品)
业务领域设计
安装hangfire,启用dashboard
单独数据库,定时消息驱动,初始化数据库sql或者有建表权限
添加日志生成Serilog.AspNetCore
启用日志浏览,提示:context.HostingEnvironment.ContentRootPath + \"/wwwroot/log/log-.txt
安装rabbitmq,启用dashboard
提供统一的api调用入口,接收调用并入消息队列,后期可以扩展至其他入口(比如数据库变更)
自己按照消息模板订阅消息,再有api转发调用
优势:消息队列的统一管理,跨领域调用统一化
目前的问题:模板一趟bus,可能拥挤,后期可以按照业务扩展多路公交
注意定位:调度中心,或者说消息中转中心
eventbus项目设计
目标是,提供凭据,负责校验是API网关
其中密码使用的是对称不可解密的,带salt的加密方式
auth项目
记录的是用户的行为轨迹,不同的角色展现的可能是不同的
表格设计:who 在 when 在 where how to 做 what, 是否成功,得到的response
log项目
已媒介形式将信息告知对方
notification项目
通用领域设计
后端自动化部署
检查:docker network inspect kong-network
统一网络:docker network create kong-network(要使用统一网段)
统一数据库:docker run -d --name kong-database --network=kong-network -p 5432:5432 -e \"POSTGRES_USER=kong\" -e \"POSTGRES_DB=kong\" -e \"POSTGRES_PASSWORD=kong\" postgres:9.6
数据库初始化:docker run --rm --network=kong-network -e \"KONG_DATABASE=postgres\" -e \"KONG_PG_HOST=kong-database\" -e \"KONG_PG_USER=kong\" -e \"KONG_PG_PASSWORD=kong\" -e \"KONG_CASSANDRA_CONTACT_POINTS=kong-database\" kong:latest kong migrations bootstrap
运行:docker run -d --name kong --network=kong-network -e \"KONG_DATABASE=postgres\" -e \"KONG_PG_HOST=kong-database\" -e \"KONG_PG_USER=kong\" -e \"KONG_PG_PASSWORD=kong\" -e \"KONG_CASSANDRA_CONTACT_POINTS=kong-database\" -e \"KONG_PROXY_ACCESS_LOG=/dev/stdout\" -e \"KONG_ADMIN_ACCESS_LOG=/dev/stdout\" -e \"KONG_PROXY_ERROR_LOG=/dev/stderr\" -e \"KONG_ADMIN_ERROR_LOG=/dev/stderr\" -e \
开始安装kong
数据库初始化:docker run --rm --network=kong-network pantsel/konga:latest -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga
运行:docker run -d -p 1337:1337 --network kong-network --name konga -e \"NODE_ENV=production\" -e \"DB_ADAPTER=postgres\" -e \"DB_URI=postgresql://kong:kong@kong-database:5432/konga\" pantsel/konga
安装ui:konga
项目定位转发+认证(选型kong)
route转向到service
service的host可以是upstream
upstream设置多个target实现负载均衡
kong的使用
首先新建customer,这里可以设置secret
全局或者 针对具体服务 添加plugins(创建jwt credentials),可以只设置 header name为 Authorization,得到key
特别说明,如果需要服务内部的控制,由服务自行管理。
配置jwt auth
docker run -d -p 80:80 --name nginx --network=my-network -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf nginx
API网关
自由主题
容器化结构
0 条评论
回复 删除
下一页