前言
本文中安裝TARS框架的方法大部分都是來自於官方的GUIDE,官方GUIDE中配置TARS的方法很多,本文中只選擇了適合本機的方法。本人系統是UBUNTU16,如果你也是ubuntu系統,希望能幫到你。安裝步驟雖然多,彷彿比當初自己配caffe環境時還要麻煩,不過TARS用起來是真的方便,寫邏輯業務就完事了。以前自己寫HTTP還得要寫一大堆的header解析就令人頭疼。
一. 安裝依賴庫
sudo apt-get install build-essential bison flex cmake psmisc libncurses5-dev zlib1g-dev
二. MYSQL安裝
(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的C++環境安裝
下載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安裝
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
六. demo實例
這裏的方式仿照TARS快速入門(c++),因爲這裏已經有實例的demo了,我就不寫了。這裏只寫新版的TarsWeb怎麼使用,TarsWeb網站以及和老版本不一致了,所以我另寫了一個。
1. 進入http://(你的HOSTIP):3000後的tarsweb頁面
上圖的左邊欄目的,TestApp和AddTwoNumApp是我自己寫的小程序,核心服務是左上的tars列表。
2. 發佈服務
點擊上方的運維管理,進入運維管理頁面
應用: TestApp //對應[APP]
服務名稱:HelloServer //對應[Server]
OBJ:HelloObj //對應[Servant]
地址:HOSTIP
點擊確定,在主頁面中對該服務點擊重啓
3. 上傳發布包
點擊發布管理------>發佈選中節點------>上傳發布包,併發布, 完成!
接下來我們在命令行運行官方實例,就會有如下
網上看到關於UBUNTU安裝TARS的教程不是很多,而且感覺別人寫的有點亂,於是就自己寫一個了,自己安裝的過程也踩了很多坑。如果有疑問歡迎留言,如果能幫到您,小手收藏點贊哈。