我感觉我太难了,花了一天时间来安装, 不过总算解决了,坚持总有回报的
1. mysql(MariaDB)安装
见上一遍文章 MYSQL安装
2. Tars C++开发环境(源码安装框架必备) (这是官方说明)
源码安装框架才需要做这一步, 如果只是用c++写服务, 只需要下载tarscpp代码即可
下载TarsFramework源码
cd /data/
git clone https://github.com/TarsCloud/TarsFramework.git --recursive
然后进入build源码目录
cd /data/TarsFramework/build
chmod u+x build.sh
./build.sh prepare
./build.sh all
编译时默认使用的mysql开发库路径:include的路径为/usr/local/mysql/include,lib的路径为/usr/local/mysql/lib/
若mysql开发库的安装路径不在默认路径需要修改CMakeLists文件中mysql开发库的路径。CMakeLists在${source_folder}/TarsFramework/
和${source_folder}/TarsFramework/tarscpp/
目录下各有一个同名文件。
修改文件中上述路径为本机mysql开发库的路径
(参考路径:"/usr/include/mysql";"/usr/lib64/mysql")。
如果需要重新编译
./build.sh cleanall
./build.sh all
切换至root用户,创建安装目录
cd /usr/local
mkdir tars
chown ${普通用户}:${普通用户} ./tars/ #这个好像不是必要
3 Tars框架安装
3.1. 框架安装模式 (这是官方说明)
框架有两种模式:
- centos7一键部署(ubuntu类似), 安装过程中需要网络从外部下载资源
- 制作成docker镜像来完成安装, 制作docker过程需要网络下载资源, 但是启动docker镜像不需要外网
注意:需要完成TarsFramework的编译和安装
下载tarsweb并copy到/usr/local/tars/cpp/deploy目录下(注意目录名是web, 不要搞错!):
git clone https://github.com/TarsCloud/TarsWeb.git
mv TarsWeb web #这个步骤还是不要省
cp -rf web /usr/local/tars/cpp/deploy/
例如, 这是/usr/local/tars/cpp/deploy下的文件:
[root@cb7ea6560124 deploy]# ls -l
total 52
-rw-rw-r-- 1 tars tars 1923 Nov 2 17:31 centos7_base.repo
-rwxrwxr-x 1 tars tars 1515 Nov 5 18:21 Dockerfile
-rwxrwxr-x 1 tars tars 2844 Nov 5 18:21 docker-init.sh
-rwxrwxr-x 1 tars tars 215 Nov 5 18:21 docker.sh
-rw-rw-r-- 1 tars tars 664 Nov 2 17:31 epel-7.repo
drwxrwxr-x 4 tars tars 30 Nov 2 17:31 framework
-rwxrwxr-x 1 tars tars 4599 Nov 8 09:41 linux-install.sh
-rw-rw-r-- 1 tars tars 191 Nov 2 17:31 MariaDB.repo
-rwxrwxr-x 1 tars tars 565 Nov 8 09:23 README.md
-rwxrwxr-x 1 tars tars 539 Nov 8 09:23 README.zh.md
-rwxrwxr-x 1 tars tars 9713 Nov 7 09:42 tars-install.sh
drwxrwxr-x 2 tars tars 44 Nov 7 10:04 tools
drwxr-xr-x 11 tars tars 4096 Oct 31 11:01 web
3.2. 安装nodejs
这是tars-web最讨厌的地方, 执行又不报错, 让你找半天也不知道问题在哪 (新手、新开源项目文档少)。
安装nodejs 我是虚拟机(是多差的虚拟机啊,编译要半个小时), 就直接下载二进包,copy就能用。
- 下载解包
wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz
xz -d node-v12.13.0-linux-x64.tar.xz
tar -xf node-v12.13.0-linux-x64.tar
cp -rf node-v12.13.0-linux-x64 /usr/local/node-v12.13.0
- 设置软连接
ln -s /usr/local/node-v12.13.0/bin/node /usr/bin/node
ln -s /usr/local/node-v12.13.0/bin/npm /usr/bin/npm
ln -s /usr/local/node-v12.13.0/bin/npx /usr/bin/npx
- 设置环境变量 #指定 NODE_PATH 变量
不设置变量,你会哭的,node找不到module
cd ~
vi .bash_profile
加下如下 在 “PATH= P A T H : PATH: PATH:HOME/bin” 后面 添加一行,内容如下:
export NODE_PATH="/usr/local/node-v12.13.0/lib/node_modules/;/usr/local/lib/node_modules"
3.3 安装nodejs 模块
- 使用npm全局安装pm2
pm2 日志文件存放于/root/.pm2/logs中
npm i pm2 -g
- tars-web 模块安装
将/usr/local/tars/cpp/deploy/web/package.json 的模块安装
-g 是全局, i 是install
cd /usr/local/tars/cpp/deploy/web
npm i -g
3.4. 框架部署说明 (这是官方说明)
框架可以部署在单机或者多机上, 多机是一主多从模式, 通常一主一从足够了:
- 主节点只能有一台, 从节点可以多台
- 主节点默认会安装:tarsAdminRegistry, tarspatch, tarsweb, tarslog, 这几个服务在从节点上不会安装
- tarsAdminRegistry只能是单点(带有发布状态)
- tarslog也只能是单点, 否则日志会分散在多机上
- 原则上tarspatch, tarsweb可以是多点, 如果部署成多点, 需要把/usr/local/app/patchs目录做成多机间共享(可以通过NFS), 否则无法正常发布服务
- 可以后续把tarslog部署到大硬盘服务器上
- 实际使用中, 即使主从节点都挂了, 也不会影响框架上服务的正常运行, 只会影响发布
部署完成后会创建4个数据库,分别是db_tars、db_tars_web、 tars_stat、tars_property。
其中db_tars是框架运行依赖的核心数据库,里面包括了服务部署信息、服务模版信息、服务配置信息等等;
db_tars_web是web管理平台用到数据库
tars_stat是服务监控数据存储的数据库;
tars_property是服务属性监控数据存储的数据库;
3.5. 启动服务
MYSQL_HOST: mysql数据库的ip地址
MYSQL_ROOT_PASSWORD: mysql数据库的root密码
INET: 网卡的名称(ifconfig可以看到, 比如eth0), 表示框架绑定的本机IP, 注意不能是127.0.0.1
REBUILD: 是否重建数据库,通常为false, 如果中间装出错, 希望重置数据库, 可以设置为true
SLAVE: 是否是从节点
举例, 安装两台节点, 一台数据库(假设: 主[192.168.7.151], 从[192.168.7.152], mysql:[192.168.7.153])
进入/usr/local/tars/cpp/deploy, 执行:
主节点上执行(192.168.7.151)
#./tars-install.sh DB_HOST DB_port DB_user DB_pwd 本机IP 重新安装 节点
./tars-install.sh 192.168.7.151 3306 root root@appinside 192.168.7.151 false false
主节点执行完毕后, 从节点执行:
#./tars-install.sh DB_HOST DB_port DB_user DB_pwd 本机IP 重新安装 节点
./tars-install.sh 192.168.7.151 3306 root root@appinside 192.168.7.151 false true
执行过程中的错误参见屏幕输出, 如果出错可以重复执行(一般是下载资源出错)
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管理平台