这几天倒腾了腾讯的开源RPC框架Tars,踩了不少坑,好不容易搭建好了,赶紧趁热记录下来!

一开始我图方便就想着用Docker来部署Tars,官方文档也建议这么做,可是最终死活运行不起来,后来便采用源码部署的方案了。

虽然也有些坑,但还好搞定了。

这里主要也是记录源码部署的过程!

1 Tars依赖安装

按照官方文档,源码编译过程需要安装一系列依赖包:gcc,glibc,bison,flex,cmake,ncurses-devel和zlib-devel。

Ubuntu系统的安装命令如下。

~$ sudo apt-get install build-essential bison flex cmake psmisc libncurses5-dev zlib1g-dev

接着安装MySQL数据库管理系统。

刚开始直接用Docker那一套方案的MySQL环境没有出现问题,可是后来搭建主从节点的时候才发现MySQL在Docker中的IP是本地虚拟网络,其他机子没办法连接,所以就在主节点本地安装了MySQL 5.7。

这里直接参考官方文档的MySQL APT安装指引就可以了,网页链接放在文末(其实直接搜索就行了:D)。

装好MySQL之后,为了让其他机子远程登录使用,还需要再做些配置工作。

(当然,如果只是在一台机子上搭建Tars的话,这一步可以跳过,只要本机能访问就行了。)

先打开MySQL的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,找到其中的bind-address,并把它注释掉。

如果不注释掉的话,MySQL只能监听本机,这样其他节点就没办法在此读写数据库了。

MySQL 8.0的配置文件貌似没有这一项,因此可以省略这一步!

紧接着登录MySQL,修改数据库用户的权限配置。

其中,[username]是需要授权的用户名,[password]是用户密码。

~$ mysql -u root -p
mysql> USE mysql;
mysql> GRANT ALL ON *.* TO '[username]'@'%'-> IDENTIFIED BY '[password]';
mysql> FLUSH privileges;

FLUSH privileges是刷新配置让授权生效,设置完之后要再重启一下MySQL服务。

~$ sudo systemctl restart mysqld.service

这样就能在其他机子上通过指定host连接上这个MySQL服务器了。

其中,[mysql-ip]是MySQL数据库所在机子的IP地址,[username]就是刚授权的用户名。

~$ mysql -h [mysql-ip] -u [username] -p

只要被Welcome就证明已经搞定了!

2 Tars框架安装与部署

依赖都装好之后,就可以下载源码开始编译安装了。

官方文档是从Github仓库下载,可是速度实在让人捉急。还好腾讯也把代码放在Gitee上了,国内下载还是建议用码云吧,速度快的不只是一星半点:D

~$ git clone https://gitee.com/TarsCloud/TarsFramework.git

我们需要手动在/usr/local路径下新建tars和app两个目录,以便框架安装使用。

~$ cd /usr/local/
~$ sudo mkdir tars app

切换回TarsFramework路径,进入build目录开始编译安装,[git-clone-path]是存放Tars源码的路径。

~$ cd [git-clone-path]/TarsFramework
~$ git submodule update --remote --recursive
~$ cd build && cmake ..
~$ make -j4 && sudo make install

框架会默认安装在/usr/local/tars/cpp目录下,而且框架部署的脚本、框架工具、依赖的库和头文件也都放置在这个目录下。

接着还是通过Gitee下载TarsWeb的代码,并拷贝到/usr/local/tars/cpp/deploy目录下,这里要注意将目录名改为web。

​~$ git clone https://gitee.com/TarsCloud/TarsWeb.git
~$ sudo cp -rf TarsWeb /usr/local/tars/cpp/deploy/web

这样,框架部署前的工作就都准备好了。

刚开始试水时我只在自己的笔记本上部署单机主节点,成功后便尝试部署一主一从,把数据库和主节点都安装在实验室没用的主机上,自己的笔记本就部署从节点。

这样主节点就可以一直不关机了:D

接下来一键部署就很方便:

  • [MYSQL_HOST]是MySQL数据库的IP地址。
  • [MYSQL_USER]是MySQL的用户,也就是先前授权的用户,默认是root。
  • [MYSQL_PASSWORD]是授权用户的密码。
  • [MYSQL_PORT]是MySQL服务器端口,默认是3306。
  • [INET]是网卡的名称,可以通过ifconfig来查看,比如我的是enp1s0。
  • [REBULD]指是否重建数据库,通常为false,当然中途安装出错可以设为true重置。
  • [SLAVE]指是否为从节点,主节点为false。
~$ cd /usr/local/tars/cpp/deploy
~$ chmod a+x linux-install.sh
~$ sudo ./linux-install.sh [MYSQL_HOST]
> [MYSQL_PASSWORD] [INET] [REBULD]
> [SLAVE] [MYSQL_USER] [MYSQL_PORT]

一键部署会自动把TarsWeb安装好,如果看到下面图片中的显示,就证明框架部署成功了!

现在可以通过主节点IP加端口号http://[IP]:3000来访问Web管理平台。

首次访问需要修改admin的密码,然后通过管理员用户名admin和新密码就可以登录到Web管理后台了!

按官方文档的说明,主节点会默认安装tarsAdminRegistry、tarspatch、tarsweb、tarslog、tarsstat、tarsproperty,这个几个服务在从节点上不会安装。

所以我的笔记本从节点上只部署了tarsregistry、tarsqueryproperty、tarsquerystat、tarsconfig、tarsnode、tarsnotify这几个服务。

部署过程中,脚本会根据所设的参数登录数据库,创建TarsAdmin账号并授权Tars相关的数据库来给框架使用。

登录MySQL数据库,会发现部署时创建了7个Tars相关数据库。

3 Tars安装后说明

框架部署完成后,Web模块需要用pm2来管理。可是在Ubuntu下因为权限的问题,执行pm2会出错。

首先需要让node环境变量生效,然后按指示修改pm2的用户权限,[user]是系统用户名。

~$ sudo -s source /etc/profile
~$ sudo chown [user]:[user] /home/[user]/.pm2/rpc.sock
> /home/[user]/.pm2/pub.sock

然后再用pm2 list命令就可以查看模块的状态了!

如果机器重启的话,框架服务和Web组件就需要我们手动启动,可以用框架的自带脚本启动框架。

~$ cd /usr/local/app/tars
​~$ sudo ./tars-start.sh

Web组件可以通过pm2来启动监控,如果该模块有问题也可以查pm2的用法来对其操作。

~$ cd /usr/local/app/web
~$ npm run prd
~$ pm2 list

官方文档上写着通过npm run dev来启动,可是我怎么试都出错。最后在部署框架时的输出日志里发现命令改成了npm run prd...

不仔细看日志真的被坑的有点惨!!

登录Web管理平台,在访问服务监控和特性监控页面时可能会出现如下的报错。

从报错中可以看出是查询2020120400的数据时出错了,我是在12.05才搭好的框架,而Web默认查询数据库中关于12.04的数据,当然就报错了。

在TarsWeb GitHub仓库的Issues里有人提出将Web前端默认选中的当前日期改为根据服务器时间确定,而不是浏览器时间。

我们可以通过查询tars_stat数据库看到相应的状态。

还可以查看日志跟踪一下报错所在!

可是我根据报错日志,在web安装目录下定位了半天也不知道该在哪个地方修改默认的当天日期,菜的抠jio啊0.0

最后干脆偷了个懒,想着等到第二天它的默认日期就会同步到12.05了,最后果然不再报错!

看来Web组件还是讲武德的。

到这里,Tars算是部署完成了!回顾我的试水历程还是挺折腾的:

单机Docker数据库&Tars-->单机Docker数据库&源码Tars-->主从Dcoker数据库&源码Tars-->主从本地数据库&源码Tars ...

现在自己都可以不看文档直接敲命令配置了:D

安装完毕,可以开始HelloWorld了!

以上。

参考资料:

1. A Quick Guide to Using the MySQL APT Repository

2. Ubuntu 16.04.1 LTS 实现远程登录 MySQL

3. Tars框架部署方案

4. Tars GitHub仓库

5. TarsWeb Issues

6. pm2 - 用法大全

ubuntu 修改默认用户名_Tars框架在Ubuntu上的部署小结相关推荐

  1. ubuntu 修改默认用户名_Ubuntu默认的用户名和密码是什么?

    满意答案 llw0601 2013.03.10 采纳率:49%    等级:12 已帮助:10408人 用这个办法试试 以下方法并非我当时解决的方法,因为当时尝试了很多,也走了不少弯路,有点乱,没能完 ...

  2. ubuntu 修改默认用户名_Ubuntu更改用户名的方法

    首先这是个有危险的动作,刚刚试过修改用户名,发现网上搜索到的方法大部分是有错误的,所以觉得有必要分享出来. 下面讲的是不添加用户的情况下直接修改当前用户的用户名(大部分用户的ubuntu系统只有一个管 ...

  3. Click House设置远程登陆及修改默认用户名密码

    最近在研究Click House,部署.配置及使用都整理一下. 1.设置远程登陆 默认安装完,是只能本地进行访问,即:127.0.0.1,如果想让其他机器访问就需要修改配置文件了,步骤如下: 修改co ...

  4. AI算力调度EasyCVR视频融合平台如何修改默认用户名?

    EasyCVR视频融合云平台基于云边端一体化架构,兼容性高.拓展性强,可支持多类型设备.多协议方式接入,包括国标GB/T28181.RTMP.RTSP/Onvif协议,以及厂家的私有协议,如:海康Eh ...

  5. 树莓派4B系列2:修改默认用户名和密码+更换清华源+修改时区

    一.修改默认用户名和密码 树莓派默认用户名为pi,密码是raspberry.当需要修改默认用户名和密码时,可进行如下操作: 1.启用root账号:密码不显示在屏幕上,输入两次回车即可激活root账号. ...

  6. Ubuntu修改默认源为国内

    修改默认源,官方源由于网络原因太慢,修改为国内源 #以阿里为例 vim /etc/apt/sources.listdeb http://mirrors.aliyun.com/ubuntu/ focal ...

  7. ubuntu修改默认python为python3

    1 ubuntu默认python ubuntu 大多镜像版本都会携带python解释器: ubuntu16.04 python指令进入python2.7,默认python3.5 如果没有python我 ...

  8. Ubuntu修改默认sh为bash

    现在的Ubuntu版本默认sh都是使用的dash,用起来实在是别扭,所以找了一下,发现可以通过设置,修改为原来的bash. 首先查看系统的/bin/sh $ ls -al /bin/sh /bin/s ...

  9. linux 默认启动内核,ubuntu修改默认启动内核

    一.序言 新换的笔记本由于太新的主板芯片,驱动还没有完善.每次升级系统内核都要小心谨慎.经常发生部分硬件驱动失败的事情. 系统Ubuntu 20.04.2 LTS x86_64 ,我现在使用的两个版本 ...

最新文章

  1. 代码改动两三行,AI数据秒换隐身衣!隐私计算+AI?中科院博士实践分享一键切换...
  2. 最小二乘拟合,L1、L2正则化约束--转
  3. MYSQL 与 Oracle 之间的数据类型转换
  4. 原来这些行业的“潜规则”是这样的...
  5. oracle 11gdata guard,Oracle 11g Data Guard配置
  6. C语言的atoi和C++的to_string
  7. asp.net如何生成图片验证码
  8. 今天的凉爽的学习环境 录音软件
  9. 50个直击灵魂的问题_直击灵魂的问题:“妈妈,我还能要个哥哥不!”
  10. python拓展库random_一分钟让你学会Python Random库的使用
  11. python123测试_【测码学院】python自动化测试学习-自动化测试模型
  12. 数据科学 IPython 笔记本 7.3 Pandas 数据操作
  13. 20180514 ++i和i++
  14. atitit.报表最佳实践oae 与报表引擎选型
  15. arduino 有源 蜂鸣器_Arduino 入门到精通 蜂鸣器发声
  16. php code128扫码不能识别,求助excel中code128字体打印出的条码扫描枪读不出
  17. C#调用支付宝转账接口 已调通
  18. 【基础系列】赏析刘洪普《PyTorch深度学习实践》与《实战:基于CNN的MNIST手写数字识别》(Python版)
  19. hdu 2502月之数
  20. 码医自学法V2.2(附名老中医)

热门文章

  1. 用delphi模仿.net的string.split
  2. 使用某些 DOCTYPE 时会导致 document.body.scrollTop 失效
  3. 给出如下公式的python表达式7+9i+2xcos66_这100道练习,带你玩转Numpy
  4. 右键菜单_右键菜单太长会导致电脑卡顿?轻松删除右键菜单无用项
  5. java private list_Java基础知识回顾之四 ----- 集合List、Map和Set
  6. android contextmenu listview,Android ListView ContextMenu
  7. 基于 Windows 7 的计算机可用内存低于安装内存
  8. 机器视觉:偏振片应用
  9. Halcon PDF文档(hdevelop_users_guide)学习总结之三——关于变量窗口的小知识
  10. regionserver.HRegionServer: Failed construction RegionServer