1. 依赖环境
软件 | 软件要求 |
---|---|
linux 内核版本: | 2.6.18 及以上版本(操作系统依赖) |
gcc 版本: | 4.8.2 及以上版本、glibc-devel(c++语言框架依赖) |
bison 工具版本: | 2.5 及以上版本(c++语言框架依赖) |
flex 工具版本: | 2.5 及以上版本(c++语言框架依赖) |
cmake 版本: | 3.2 及以上版本(c++语言框架依赖) |
mysql 版本: | 5.6 及以上版本(框架运行依赖) |
nvm 版本: | 0.35.1 及以上版本(web 管理系统依赖, 脚本安装过程中自动安装) |
node 版本: | 12.13.0 及以上版本(web 管理系统依赖, 脚本安装过程中自动安装) |
运行服务器要求:安装 linux 系统的机器 or mac 机器
1.1. 编译包依赖下载安装介绍
源码编译过程需要安装:gcc, glibc, bison, flex, cmake, ncurses-devel zlib-devel
例如,在 Centos7 下,执行:
yum install glibc-devel gcc gcc-c++ bison flex cmake which psmisc ncurses-devel zlib-devel
1.2. Mysql 安装
正式部署时, 如果你的 mysql 可以安装在其他机器上.
Tars 框架安装需要在 mysql 中读写数据, 因此需要安装 mysql, 如果你已经存在 mysql, 可以忽略该步骤.
用 utf8 的安装方式 下载 mysql 源码(这里使用的是 mysql-5.6.26),用 utf8 的安装方式 mysql,解压后编译: 下面增加了 mysql-5.6.26 的安装方式
cd ${mysql安装目录}
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.26.tar.gz
tar -zxvf mysql-5.6.26.tar.gz
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.26 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make
make install
注意,对于用 Tars 的 c++进行开发编译的服务,mysql 建议采用静态库,源码编译,避免所有服务器都要安装 mysql 的动态库。
对于在服务器用 Tars 的 c++进行开发编译服务代码而言,经过上面步骤就可以进行编译安装 Tars 开发框架了。
若要是搭建 Tars 框架的运行环境,需要以下步骤,切换至 root 用户,对 mysql 进行配置。
以下脚本有删除动作(rm -rf /usr/local/mysql/data), 请注意!!
yum install perl
cd /usr/local/mysql
useradd mysql
rm -rf /usr/local/mysql/data
mkdir -p /data/mysql-data
ln -s /data/mysql-data /usr/local/mysql/data
chown -R mysql:mysql /data/mysql-data /usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysql
**如果/etc/目录下有my.cnf存在,需要把这个配置删除了**
rm -rf /etc/my.cnf
yum install -y perl-Module-Install.noarch
perl scripts/mysql_install_db --user=mysql
vim /usr/local/mysql/my.cnf
补充了上面删除 my.cnf 的命令 rm -rf /etc/my.cnf
给一个 my.cnf 配置实例:
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
# port = .....
# server_id = .....
socket = /tmp/mysql.sock
bind-address=${your machine ip}
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
注意将 bind-address 改为部署机器的 IP
启动 mysql
service mysql start
2. Tars C++开发环境(源码安装框架必备)
源码安装框架才需要做这一步, 如果只是用 c++写服务, 只需要下载 tarscpp 代码即可
下载 TarsFramework 源码,然后进入 build 源码目录
cd ${source_folder} git clone https://github.com/TarsCloud/TarsFramework.git --recursive
cd TarsFramework
git submodule update --remote --recursive
** 此处需要拉取TarsFramework\tarscpp、TarsFramework\tarscpp\servant\protocol 最新代码,默认为空文件cd build
cmake ..
make
默认情况下, 编译 Tars 会自动下载 mysql-client 源码, 并编译 libmyqlclient.a
如果需要重新编译
cd build
make clean
make
安装
mkdir -p /usr/local/tars
mkdir -p /usr/local/app
make install
默认的安装包路径:/usr/local/tars/cpp, 即编译完成的框架&安装脚本在这个目录 默认的安装完成后的路径为/usr/local/app, 即安装完成后的路径
install 以后, 依赖的库(mysql 静态库)和头文件也会安装到该目录下(/usr/local/tars/cpp/thirdparty), 如果开启了 ssl, nghttp2 同理.
开启了 ssl, nghttp2 请参见相关文章
如果你想调整安装目录(建议不要调整, 需要修改好几个的地方, 容易出错):
**需要修改tarscpp/cmake/Common.cmake文件中的安装路径。**
**需要修改tarscpp/servant/makefile/makefile.tars文件中的TARS_PATH的路径**
**需要修改tarscpp/servant/makefile/tars-tools.cmake文件中的TARS_PATH的路径**
**需要修改tarscpp/servant/script/*.sh文件中的DEMO_PATH的路径**
3 Tars 框架安装
3.1. 框架安装模式
框架安装注意事项:
- 安装过程中, 由于 tars-web 依赖 nodejs, 所以会自动下载 nodejs, npm, pm2 以及相关的依赖, 并设置好环境变量, 保证 nodejs 生效.
- nodejs 的版本目前默认下载的 v12.13.0
- 如果你本机装了低版本 nodejs, 最好提前卸载掉
注意:需要完成 TarsFramework 的编译和安装 注意:框架依赖 mysql, 如果你使用 mysql8, 注意需要关闭 ssl 以及启用 mysql_native_password
下载 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 下的文件:
ubuntu@VM-0-14-ubuntu:/usr/local/tars/cpp/deploy$ ls -l
total 1030h
-rw-r--r-- 1 root root 443392 Apr 3 17:22 busybox.exe
-rw-r--r-- 1 root root 1922 Apr 3 17:22 centos7_base.repo
-rw-r--r-- 1 root root 1395 Apr 3 17:22 Dockerfile
-rwxr-xr-x 1 root root 3260 Apr 4 11:31 docker-init.sh
-rwxr-xr-x 1 root root 319 Apr 3 22:13 docker.sh
drwxr-xr-x 7 root root 4096 Apr 3 17:57 framework
-rwxr-xr-x 1 root root 4537 Apr 4 11:31 linux-install.sh
-rwxr-xr-x 1 root root 9820288 Apr 3 22:16 mysql-tool
-rwxr-xr-x 1 root root 811 Apr 4 11:31 tar-server.sh
-rwxr-xr-x 1 root root 16449 Apr 3 17:22 tars-install.sh
-rwxr-xr-x 1 root root 320 Apr 4 11:31 tars-stop.sh
drwxr-xr-x 2 root root 4096 Apr 3 17:57 tools
drwxr-xr-x 12 root root 4096 Apr 3 21:07 web
-rwxr-xr-x 1 root root 3590 Apr 3 17:22 web-install.sh
-rwxr-xr-x 1 root root 1476 Apr 3 17:22 windows-install.sh
最后执行 ./tars-install.sh MYSQL_IP MYSQL_PASSWORD HOSTIP REBUILD(false[default]/true) SLAVE(false[default]/true) MYSQL_USER MYSQL_PORT INSTALL_PATH OVERWRITE(false[default]/true)
./tars-install.sh MYSQL_IP MYSQL_PASSWORD HOSTIP true false root 3306 /usr/local/app true
3.2. 框架部署说明
框架可以部署在单机或者多机上, 多机是一主多从模式, 通常一主一从足够了:
- 主节点只能有一台, 从节点可以多台
- 主节点默认会安装:tarsAdminRegistry, tarspatch, tarsweb, tarslog, tarsstat, tarsproperty, 这几个服务在从节点上不会安装
- tarslog 用于收集所有服务的远程日志, 建议单节点, 否则日志会分散在多机上
- 原则上 tarspatch, tarsweb 可以是多点, 如果部署成多点, 需要把/usr/local/app/patchs 目录做成多机间共享(可以通过 NFS), 否则无法正常发布服务
- 虽然 tarsAdminRegistry 上记录了正在发布服务的状态, 但是原则上也可以可以多节点, tarsweb 调用 tarsAdminRegistry 是 hash 调用
- 后续强烈建议把 tarslog 部署到大硬盘服务器上
- 实际使用中, 即使主从节点都挂了, 也不会影响框架上服务的正常运行, 只会影响发布
- 一键部署会自动安装好 web(自动下载 nodejs, npm, pm2 等相关依赖), 同时开启 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 管理平台