tarsdocs
  • Readme.md
  • CLA
  • LICENSE
  • 基础介绍
    • 简介
    • 基础概念
    • 基础通信协议 Tars
    • 统一通信协议 Tup
    • 开发模式介绍
    • 模板配置
    • 服务市场
    • 服务扩展
    • 框架版本说明
  • 开源版框架介绍
    • 开源版本部署
      • 部署总体介绍
      • Docker环境安装
      • Mysql安装
      • 框架源码部署(Linux/Mac)
      • 框架源码部署(Windows)
      • 框架Docker部署
      • 框架节点部署
      • 业务服务容器化
      • 框架K8SDocker 部署
      • 框架K8STARS 部署
      • 框架K8SFramework 部署(强烈推荐)
      • 框架更新及扩容
      • 调用链升级注意事项
      • TarsWeb-v3.0.3升级说明
    • 开源版管理平台
      • TarsWeb说明
      • web用户体系
      • web管理平台 API
  • 企业版本介绍
    • 企业版说明
    • 框架集群化机制
    • 框架单节点机制
    • 使用二进制包部署
    • 使用容器部署
    • 业务服务一主多备机制
    • 命令行控制终端
    • IP-LIST级联缓存机制
    • 多数据中心管理
    • 多网络支持
    • 第三方服务管理
    • 数据产生和管理机制
    • 密码重置
    • TarsPython介绍
  • 框架关键特性
    • 业务配置
    • 服务监控
    • 无损发布/重启
    • 调用链
    • IDC分组
    • 鉴权功能
  • TarsCPP
    • 编译
    • 快速开发入门
    • 使用指南
    • 开发规范
    • 服务线程说明文档
    • protobuf 协议支持文档
    • 第三方协议支持
    • HTTP1 支持
    • HTTP2 支持
    • TLS 通信支持
    • Push 功能说明
    • PushCallback 功能说明
    • Cookie 支持
    • 队列模式
    • 手动绑定
    • 性能数据
    • 2.x 版本变化
    • 3.x 版本变化
    • 协程版本说明
    • 基础类库说明
    • [案例]
      • 框架快速入门
      • Http 服务示例
  • TarsJava
    • 快速开始
    • 快速开发入门
    • [使用指南]
      • Tars 服务开发与上线
      • HTTP 服务开发与上线
      • 生成接口调用文件
    • [性能测试]
      • tars java 压测代码
  • TarsGo
    • 基本介绍
    • 快速开始
    • 使用指南
    • cmake 管理代码
    • pb2tarsgo
    • 性能数据
    • 使用示例
  • TarsPHP
    • 搭建 php 环境
    • 快速开发入门
    • [快速起步]
      • 搭建 HttpServer
      • 搭建 TimerServer
      • 搭建 TcpServer
      • 搭建 WebSocketServer
      • 弹幕活动实战
    • [框架简介]
      • 简介
      • tars-server
      • tars-client
      • tars-config
      • tars-deploy
      • tars-extension
      • tars-log
      • tars-monitor
      • tars-registry
      • tars-report
      • tars-utils
      • tars2php
    • [高阶应用]
      • PHP 的 Swoole 框架如何接入 Tars
      • 与 thinkphp 结合使用
      • 与 Swoft 结合使用
      • 与 Laravel 结合使用
      • 与 Yii2 结合使用
      • 持续集成方案
    • [其他]
      • 常见问题
      • 如何 Debug
      • changelog
      • 其他外部文档
  • Tars.js
    • 基本介绍
    • 脚手架
    • 快速开发入门
    • @tars/stream
    • @tars/rpc
    • @tars/logs
    • @tars/config
    • @tars/monitor
    • @tars/notify
    • @tars/utils
    • @tars/dyeing
    • @tars/node-agent
    • @tars/winston-tars
    • tars2node
  • K8SFramework
    • [安装和使用说明]
      • 介绍
      • 特性
      • 安装
      • 升级
      • 云原生运维
      • 管理平台
      • 证书
    • [开发环境构建]
      • Dockerfile 说明
      • 服务发布流程说明
      • 制作基础编译镜像
      • 制作业务服务镜像
      • 制作 Helm 包
      • 发布业务镜像到 K8S 集群
      • 服务发布示例
      • 如何调试业务服务
  • 服务扩展
    • 云告警
    • 接口及压测工具
    • 网关服务
    • dcache缓存服务
    • 发送邮件服务
    • 一致性存储服务
    • 一致性存储web管理平台
    • 唯一计数服务
  • 常见问题
    • 安装常见问题
    • Issues
    • Issues-tarscpp
    • Issues-tarsjava
    • Issues-tarsgo
    • Issues-tarsphp
  • 开源合作
    • TarsFramework 项目 Git 合作规范
  • 直播视频
    • B 站 TARS 培训系列课程
  • 相关文章
    • TARS 技术文章
  • 其它资源分享
    • 下载
    • Tars 介绍.pptx
    • TarsPHP 解密.pdf
    • TarsJava 本地调试.pdf
    • 微服务在腾讯的业务实践.pptx
Powered by GitBook
On this page
  • 目录
  • 1. 依赖环境
  • 1.1. 编译包依赖下载安装介绍
  • 1.2. Mysql 安装
  • 2. Tars C++开发环境(源码安装框架必备)
  • 3 Tars 框架安装
  • 3.1. 框架安装模式
  • 3.2. 框架部署说明
  • 3.3. 一键部署
  • 3.4. mysql 权限问题
  • 3.5. 核心模块
  • 4. Tars-web 说明
  • 4.1 模块说明

Was this helpful?

  1. 开源版框架介绍
  2. 开源版本部署

框架源码部署(Windows)

Previous框架源码部署(Linux/Mac)Next框架Docker部署

Last updated 3 years ago

Was this helpful?

目录

本安装文档描述在一台或多台服务器上安装搭建整个 Tars 框架的过程,目的是为了让用户对 Tars 框架的部署搭建、运行、测试等有个整体的认识。

如要用于线上环境,部署安装的原理是一样,不过需要更多考虑分布式系统下服务的部署需要有容错、容灾等的能力。

1. 依赖环境

软件
软件要求

windows 版本:

win7 以及以上

cmake 版本:

3.2 及以上版本(c++语言框架依赖)

mysql 版本:

5.6 及以上版本(框架运行依赖)

nvm 版本:

0.35.1 及以上版本

node 版本:

12.13.0 及以上版本

perl 版本:

5.x 及以上版本(编译 openssl 需要)

运行服务器要求:Windows 机器

1.1. 编译包依赖下载安装介绍

  • 安装 nodejs, nodejs 官网: https://nodejs.org/en/

  • 安装 vs(建议 vs2019), vs2019 自带 cmake, 比如我的机器 cmake 路径为: C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

  • 如果你的 vs 低于 vs2019, 请安装 cmake, cmake 官网: https://cmake.org/

  • 安装 git

请保证你的 nodejs 和 cmake 处于系统环境变量中, 即能命令行运行: cmake, node, git

1.2. Mysql 安装

正式部署时, 如果你的 mysql 可以安装在其他机器上.

Tars 框架安装需要在 mysql 中读写数据, 因此需要安装 mysql, 如果你已经存在 mysql, 可以忽略该步骤.

windows 上安装 mysql 请自行搜索教程

2. Tars C++开发环境(源码安装框架必备)

源码安装框架才需要做这一步, 如果只是用 c++写服务, 只需要下载 tarscpp 代码即可

注意我们的操作都在命令行下进行, 请保证 cmake git nodejs vs 等环境变量的生效

下载 TarsFramework 源码

cd ${source_folder}
git clone https://github.com/TarsCloud/TarsFramework.git --recursive

打开 windows console 控制台(可能需要以管理身份运行), 然后进入 build 源码目录

cd TarsFramework
git submodule update --remote --recursive
cd build
cmake ..
cmake --build . --config RelWithDebInfo
cmake --build . --config RelWithDebInfo  --target install

默认情况下, 编译 Tars 会自动下载 mysql client 源码, 并编译 libmyql.dll

安装编译完的包

cmake --build . --config RelWithDebInfo  --target install

默认的安装包路径:c:/tars/cpp, 即编译完成的框架&安装脚本在这个目录 默认的安装完成后的路径为 c:/tars-install, 即安装完成后的路径

install 以后, 依赖的库(mysql 静态库)和头文件也会安装到该目录下(c:/tars/cpp/thirdparty), 如果开启了 ssl, nghttp2 同理.

如要修改安装路径:

**需要修改tarscpp/cmake/Common.cmake文件中的安装路径。**
**需要修改tarscpp/servant/makefile/makefile.tars文件中的TARS_PATH的路径**
**需要修改tarscpp/servant/makefile/tars-tools.cmake文件中的TARS_PATH的路径**
**需要修改tarscpp/servant/script/*.bat文件中的DEMO_PATH的路径**

3 Tars 框架安装

3.1. 框架安装模式

注意:需要完成 TarsFramework 的编译和安装

在 c:\tars\cpp\deploy 下载 tarsweb(注意目录名是 web, 不要搞错!):

cd c:\tars\cpp\deploy
git clone https://github.com/TarsCloud/TarsWeb.git web

例如, 这是 c:\tars\cpp\deploy 下的文件:

 C:\tars\cpp\deploy 的目录

2020/03/31  17:20    <DIR>          .
2020/03/31  17:20    <DIR>          ..
2020/03/24  11:38           443,392 busybox.exe
2020/03/24  11:38             1,981 centos7_base.repo
2020/03/28  15:43             3,273 docker-init.sh
2020/03/28  15:43               319 docker.sh
2020/03/28  15:43             2,365 Dockerfile
2020/03/28  14:33    <DIR>          framework
2020/03/30  12:45         4,099,584 libmysql.dll
2020/03/28  15:43             4,829 linux-install.sh
2020/03/30  12:51           110,592 mysql-tool.exe
2020/03/28  15:43             1,349 tar-server.sh
2020/03/30  12:52           635,904 tars-client.exe
2020/03/30  11:28            16,885 tars-install.sh
2020/03/24  11:38               322 tars-stop.sh
2020/03/30  14:23    <DIR>          tools
2020/03/30  14:14    <DIR>          web
2020/03/28  15:43             3,732 web-install.sh
2020/03/28  15:43             1,543 windows-install.sh
              14 个文件      5,326,070 字节
               5 个目录 196,844,564,480 可用字节

3.2. 框架部署说明

框架可以部署在单机或者多机上, 多机是一主多从模式, 通常一主一从足够了:

  • 主节点只能有一台, 从节点可以多台

  • 主节点默认会安装:tarsAdminRegistry, tarspatch, tarsweb, tarslog, tarsstat, tarsproperty, 这几个服务在从节点上不会安装

  • tarslog 用于收集所有服务的远程日志, 建议单节点, 否则日志会分散在多机上

  • 原则上 tarspatch, tarsweb 可以是多点, 如果部署成多点, 需要把 c:\tars-install\patchs 目录做成多机间共享, 否则无法正常发布服务

  • 虽然 tarsAdminRegistry 上记录了正在发布服务的状态, 但是原则上也可以可以多节点, tarsweb 调用 tarsAdminRegistry 是 hash 调用

  • 后续强烈建议把 tarslog 部署到大硬盘服务器上

  • 实际使用中, 即使主从节点都挂了, 也不会影响框架上服务的正常运行, 只会影响发布

  • 一键部署会自动安装好 web, 同时开启 web 权限

部署完成后会创建 5 个数据库,分别是 db_tars、db_tars_web、db_user_system、 tars_stat、tars_property。

其中 db_tars 是框架运行依赖的核心数据库,里面包括了服务部署信息、服务模版信息、服务配置信息等等;

db_tars_web 是 web 管理平台用到数据库

db_user_system 是 web 管理平台用到的权限管理数据库

tars_stat 是服务监控数据存储的数据库;

tars_property 是服务属性监控数据存储的数据库;

无论哪种安装方式, 如果成功安装, 都会看到类似如下输出:

 2019-10-31 11:06:13 INSTALL TARS SUCC: http://xxx.xxx.xxx.xxx:3000/ to open the tars web.
 2019-10-31 11:06:13 If in Docker, please check you host ip and port.
 2019-10-31 11:06:13 You can start tars web manual: cd /usr/local/app/web; npm run prd

打开你的浏览器输入: http://xxx.xxx.xxx.xxx:3000/ 如果顺利, 可以看到 web 管理平台

3.3. 一键部署

进入 c:\tars\cpp\deploy, 执行:

busybox.exe sh ./windows-install.sh MYSQL_HOST MYSQL_PASSWORD HOSTIP REBUILD(false[default]/true) SLAVE(false[default]/true) MYSQL_USER MYSQL_PORT

注意: busybox.exe 是一个通用工具, 继承了大量 linux 工具

MYSQL_HOST: mysql 数据库的 ip 地址

MYSQL_PASSWORD: mysql 数据库的 MYSQL_USER 的密码(注意密码不要有太特殊的字符, 例如!, 否则 shell 脚本识别有问题, 因为是特殊字符)

HOSTIP: 本机 IP, 注意不能是 127.0.0.1

REBUILD: 是否重建数据库,通常为 false, 如果中间装出错, 希望重置数据库, 可以设置为 true

SLAVE: 是否是从节点

MYSQL_USER: mysql 用户, 默认是 root

MYSQL_PORT: mysql 端口

举例, 安装两台节点, 一台数据库(假设: 主[192.168.7.151], 从[192.168.7.152], mysql:[192.168.7.153])

主节点上执行(192.168.7.151)

busybox.exe sh ./windows-install.sh 192.168.7.153 tars2015 192.168.7.151 false false root 3306

主节点执行完毕后, 从节点执行:

busybox.exe sh ./windows-install.sh 192.168.7.153 tars2015 192.168.7.152 false true root 3306

执行过程中的错误参见屏幕输出, 如果出错可以重复执行(一般是下载资源出错)

3.4. mysql 权限问题

上述安装 mysql 默认都是需要 root 权限, 但是在某些场景不具备 root 用户或者 root 用户必须交互式输入密码的情况下(比如腾讯云 cdb), 你可以这样安装:

  • 首先在 mysql 中创建用户(可能管理员分配给你的), 比如:admin

  • admin 用户具备以下权限(重点是创建用户的权限):

GRANT, SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
  • 执行安装脚本

busybox.exe sh ./windows-install.sh 192.168.7.153 tars2015 192.168.7.151 false true admin 3306
  • 脚本会自动根据传入的 MYSQL_USER 和 MYSQL_PASSWORD 来登录数据库,创建 TarsAdmin 账号和授权 Tars 相关数据库供框架使用

实际框架安装过程中, 会再创建一个用户, 并用这个用户来连接 db,可以参见 tars-install.sh 脚本

3.5. 核心模块

无论是那种安装方式, 最终 Tars Framework 都是由几个核心模块组成的, 例如:

C:\tars\cpp\deploy>busybox.exe ps | busybox.exe grep tars
14592 14400  0:00  5:05   tarsAdminRegist
 8892 14520  0:00  5:02   tarsregistry.ex
 8524  7916  0:00  5:01   tarsconfig.exe
 9400  9624  0:01  4:59   tarsnode.exe
10488  5348  0:00  4:57   tarsnotify.exe
10460  8356  0:01  4:56   tarsproperty.ex
 8536  4384  0:00  4:48   tarsqueryproper
 1268 13708  0:00  4:45   tarsquerystat.e
 7308 10560  0:00  4:37   tarsstat.exe
11760 14236  0:00  4:34   tarslog.exe
 4180 14428  0:00  4:32   tarspatch.exe
  • 对于主机节点 tarsnode tars-web 必须活着, 其他 tars 服务会被 tarsnode 自动拉起

  • 对于从机节点 tarsnode 必须活着, 其他 tars 服务会被 tarsnode 拉起

  • tars-web 是 nodejs 实现的服务, 由两个服务组成, 具体参见后面章节

  • 为了保证核心服务是启动的, 可以通过 c:\tars-install\tars\tarsnode\util\monitor.bat 来控制, 在 windows 计划任务中配置(3 秒执行一次)

4. Tars-web 说明

4.1 模块说明

Tars Framework 部署好以后, 在主机节点上会安装 tars-web(从机节点不会安装), tars-web 采用 nodejs 实现, 由两个服务组成.

查看 tars-web 的模块:

pm2 list

web < v2.4.7

输出如下:

[root@8a17fab70409 data]# pm2 list
┌────┬─────────────────────────┬─────────┬─────────┬──────────┬────────┬──────┬──────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name                    │ version │ mode    │ pid      │ uptime │ ↺    │ status   │ cpu      │ mem      │ user     │ watching │
├────┼─────────────────────────┼─────────┼─────────┼──────────┼────────┼──────┼──────────┼──────────┼──────────┼──────────┼──────────┤
│ 0  │ tars-node-web           │ 0.2.0   │ fork    │ 1602     │ 2m     │ 0    │ online   │ 0.1%     │ 65.1mb   │ root     │ disabled │
│ 1  │ tars-user-system        │ 0.1.0   │ fork    │ 1641     │ 2m     │ 0    │ online   │ 0.1%     │ 60.1mb   │ root     │ disabled │
└────┴─────────────────────────┴─────────┴─────────┴──────────┴────────┴──────┴──────────┴──────────┴──────────┴──────────┴──────────┘

如果找不到 pm2, 一般是环境变量没生效

tars-web 由两个模块组成

  • tars-node-web: tars-web 主页面服务, 默认绑定 3000 端口, 源码对应 web 目录

  • tars-user-system: 权限管理服务, 负责管理所有相关的权限, 默认绑定 3001 端口, 源码对应 web/demo 目录

tars-node-web 调用 tars-user-system 来完成相关的权限验证

web 采用 nodejs+vue 来实现, 最终的安装运行目录如下:

c:\tars-install\web

如果 pm2 list 中查看模块启动不了, 可以进入改目录定位问题:

cd c:\tars-install\web\demo; npm run start
cd c:\tars-install\web; npm run start

npm run start 启动服务, 可以观察控制台的输出, 如果有问题, 会有提示.

正式运行建议: pm2 start tars-node-web; pm2 start tars-user-system

web >= v2.4.7

输出如下:

[root@8a17fab70409 data]# pm2 list
┌────┬─────────────────────────┬─────────┬─────────┬──────────┬────────┬──────┬──────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name                    │ version │ mode    │ pid      │ uptime │ ↺    │ status   │ cpu      │ mem      │ user     │ watching │
├────┼─────────────────────────┼─────────┼─────────┼──────────┼────────┼──────┼──────────┼──────────┼──────────┼──────────┼──────────┤
│ 0  │ tars-node-web           │ 0.2.0   │ fork    │ 1602     │ 2m     │ 0    │ online   │ 0.1%     │ 65.1mb   │ root     │ disabled │
└────┴─────────────────────────┴─────────┴─────────┴──────────┴────────┴──────┴──────────┴──────────┴──────────┴──────────┴──────────┘

如果找不到 pm2, 一般是环境变量没生效

  • tars-node-web: tars-web 主页面服务, 默认绑定 3000 端口, 源码对应 web 目录

web 采用 nodejs+vue 来实现, 最终的安装运行目录如下:

c:\tars-install\web

如果 pm2 list 中查看模块启动不了, 可以进入改目录定位问题:

cd c:\tars-install\web; npm run start

npm run start 启动服务, 可以观察控制台的输出, 如果有问题, 会有提示.

正式运行建议: pm2 start tars-node-web

linux 上安装 mysql 请参考

请参考中的检查 web 问题章节, 如果没有问题, 请检查机器防火墙

如果安装完成后 web 页面打不开, 请参考, 检查问题章节, 定位问题

如果安装完成后 web 页面打不开, 请参考, 检查问题章节, 定位问题

mysql 安装
检查 web 的问题
web
web
依赖环境
Tars C++开发环境
Tars 框架安装
Tars-web 说明