本文中安装TARS框架的方法大部分都是来自于官方的GUIDE,官方GUIDE中配置TARS的方法很多,本文中只选择了适合本机的方法。本人系统是UBUNTU16,如果你也是ubuntu系统,希望能帮到你。安装步骤虽然多,仿佛比当初自己配caffe环境时还要麻烦,不过TARS用起来是真的方便,写逻辑业务就完事了。以前自己写HTTP还得要写一大堆的header解析就令人头疼。
sudo apt-get install build-essential bison flex cmake psmisc libncurses5-dev zlib1g-dev
(1) 我直接用的是apt-get的安装方式,cmd命令如下:
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
安装完成后可以在新终端的命令行中输入
service mysql start //启动mysql
这种安装方式,mysql的datadir和basedir等路径可以看其配置文件,cmd命令如下
vim /etc/mysql/mysql.conf.d/mysqld.cnf
如果要将mysql设置为可以远程访问,可以注销(需要root权限)配置文件中的
bind-address = 127.0.0.1
(2) 创建mysql的账户
mysql安装完成后,会有个root的默认账户,该账户的密码在安装时会提示你设置,从终端进入mysql数据库。
mysql -u root -p
开始创建用于tars框架的新账户,在mysql中输入一下命令
CREATE USER 'tars'@'localhost' IDENTIFIED BY '123456';
其中,tars为mysql数据库的账户,123456为mysql的密码,localhost指的是本机的mysql数据库。创建完成后,该账户是没有权限的,我们要对其进行mysql的权限分配。
GRANT ALL PRIVILEGES ON *.* TO 'tars'@'localhost';
flush privileges;
权限分配完成,输入quit退出mysql,然后执行以下cmd命令重启mysql
service mysql restart
现在可以试试输入 mysql -u tars -p能否进入mysql数据库了。
下载TARS框架源码,随便cd进入一个目录,我的是/home/chenzl/RPC/,在命令行输入
git clone https://github.com/TarsCloud/TarsFramework.git --recursive
下载完成后进入TarsFramework的目录,输入以下下命令把框架build起来
cd TarsFramework
git submodule update --remote --recursive
cd build
cmake ..
make -j4
该代码最终会安装到/usr/local目录下,我们需要做点前提工作,创建两个文件夹,这需要root权限
sudo /usr/local/app
sudo /usr/local/tars
最后路径回到TarsFramework的目录下的build文件夹中,输入
make install
TarsWeb是用于管理服务部署发布的平台,相当好用。
进入目录/home/chenzl/RPC,将TarsWeb的代码下载,并将其重命名为web后,拷贝到/usr/local/tars/cpp/deploy下
cd /home/chenzl/RPC
git clone https://github.com/TarsCloud/TarsWeb.git
mv TarsWeb web
sudo cp -rf web /usr/local/tars/cpp/deploy
官方GUIDE中为UBUNTU设计了一键部署的命令,命令如下
cd /usr/local/tars/cpp/deploy
sudo chmod a+x linux-install.sh
sudo linux-install.sh MYSQL_HOST MYSQL_ROOT_PASSWORD INET REBUILD(false[default]/true) SLAVE(false[default]/true) MYSQL_USER MYSQL_PORT
下面这段摘抄至官方GUIDE
MYSQL_HOST: mysql数据库的ip地址
MYSQL_ROOT_PASSWORD: mysql数据库的root密码(注意root不要有太特殊的字符, 例如!, 否则shell脚本识别有问题, 因为是特殊字符)
INET: 网卡的名称(ifconfig可以看到, 比如eth0), 表示框架绑定的本机IP, 注意不能是127.0.0.1
REBUILD: 是否重建数据库,通常为false, 如果中间装出错, 希望重置数据库, 可以设置为true
SLAVE: 是否是从节点
MYSQL_USER: mysql用户, 默认是root
MYSQL_PORT: mysql端口
//===============================================//
以我本机为例子,因为只在自己电脑上部署,所以是主节点了:
sudo ./linux-install.sh 0.0.0.0 123456 eth0 false false tars 3306
但是我遇到的问题没那么简单,安装过程报错了
具体错误如下:
仔细看上面的信息, 发现在tars-install过程中的参数对不上。其中USER是false,PORT是tars,试了挺多次都有这个错误,有可能是我自己的参数填的有问题(但是是根据guide中的命令来对参数进行修改了)。
于是我进入了目录/usr/local/tars/cpp/deploy,查看了linux-install.sh的脚本,发现了我们是执行到如下阶段报错的
报错的地方正是执行tars-install.sh这个脚本的开始阶段,既然前面的部分没有报错,那么我们就干脆直接自己在命令行执行tars-install.sh这个脚本。 从上图我们可以看到已经给出了参数的顺序,我们只需要按照顺序填就好了 , 但是填参数的时候你会发现,这个INSTALL_PATH应填什么呢,这个参数在linux-install.sh中已经给出了值:INSTALL_PATH=/usr/local/app
我的机器中命令如下,相应的参数你们自己对应着改就好了:
cd /usr/local/tars/cpp/deploy
sudo ./tars-install.sh 0.0.0.0 123456 192.168.31.99(这里HOSTIP地址ifconfig可以看到) true false tars 3306 /usr/local/app
安装完成。
sudo -s source /etc/profile
//授予用户权限
sudo chown (你自己的用户名):(你自己的用户名) /home/(你自己的用户名)/.pm2/rpc.sock /home/(你自己的用户名)/.pm2/pub.sock
sudo chown -R (你自己的用户名):(你自己的用户名) /usr/local/tars /usr/local/app
后面输入pm2 list,就会看到如下,同时登录http://(你填的HOSTIP):3000可进入Tarsweb
注意, 这里官方GUIDE中也提到过, 机器重启后可能会发现命令行输入pm2 list出不来上图了,此时需要输入以下代码
sudo su
source /etc/profile
/usr/local/app/tars/tars-start.sh //启动tars服务
pm2 list
这里的方式仿照TARS快速入门(c++),因为这里已经有实例的demo了,我就不写了。这里只写新版的TarsWeb怎么使用,TarsWeb网站以及和老版本不一致了,所以我另写了一个。
1. 进入http://(你的HOSTIP):3000后的tarsweb页面
上图的左边栏目的,TestApp和AddTwoNumApp是我自己写的小程序,核心服务是左上的tars列表。
应用: TestApp //对应[APP]
服务名称:HelloServer //对应[Server]
OBJ:HelloObj //对应[Servant]
地址:HOSTIP
3. 上传发布包
点击发布管理------>发布选中节点------>上传发布包,并发布, 完成!
网上看到关于UBUNTU安装TARS的教程不是很多,而且感觉别人写的有点乱,于是就自己写一个了,自己安装的过程也踩了很多坑。如果有疑问欢迎留言,如果能帮到您,小手收藏点赞哈。