一. Tars基礎組件的配置,TarsWeb平臺部署
關於Tars基礎組件以及TarsWeb的部署,我之前已經總結一次了,如果沒有進行該步驟可以先跳轉至之前這篇文章。
二. 配置Go環境
(1)下載go文件的tar免安裝包,我下載的是1.12,下載鏈接如下:go1.12.1.linux-amd64.tar.gz。如果鏈接失效可以從我的百度網盤下載:網盤鏈接,密碼:9reb。
(2)下載完成後,解壓文件
tar -zxvf go1.12.1.linux-amd64.tar.gz
解壓完成後,文件複製到/usr/local下(需要root權限)
sudo cp -rf go /usr/local
cd /usr/local
//授予權限
chown -R (你的子賬戶):(你的子賬戶) go
(3)這時候go的所有文件都已經就位了,接下來創建工作目錄
cd /home/你的賬戶
mkdir Workplace4Go
(4) 配置環境變量文件
go的環境配置需要配置兩個路徑,分別是GOROOT和GOPATH
GOROOT:go系統文件的安裝目錄
GOPATH:go程序的工作目錄,比如helloworld.go這種
終端輸入 vim ~/.bashrc進入環境變量配置,注意這裏操作時賬戶要是你的子賬戶,如果你當前賬戶是root,那麼可能無法讓你的操作生效,將下面的內容輸入到配置文件的最下方
#Added by GO
export GOROOT=/usr/local/go
export GOPATH=/home/你的賬戶/Workplace4Go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
輸入:wq保存,在終端激活環境變量
source ~/.bashrc
//接下來爲了驗證是否成功安裝,可以輸入如下
go version
//若顯示版本go version go1.12.1 linux/amd64則說明安裝成功
三. 配置TarsGo
安裝Tars,終端輸入
go get -u -v github.com/TarsCloud/TarsGo/tars
編譯tars2go協議
cd $GOPATH/src/github.com/TarsCloud/TarsGo/tars/tools/tars2go
go build
go install
安裝完成後,終端輸入tars2go,看看該命令是否存在
四. demo實例
(1) 終端輸入,生成demo文件
cd $GOPATH/src/github.com/TarsCloud/TarsGo/tars/tools
./create_tars_server.sh TestApp HelloGo SayHello
終端顯示
Great!Done! You can jump in $GOPATH/src/TestApp/HelloGo
這就是生成demo的位置。
(2)定義接口文件.tars,編譯的時候通過tars2go工具將.tars生成對應的go文件
module TestApp{
interface SayHello{
int echoHello(string name, out string greeting);
};
};
(3) 在imp.go中實現接口,生成的內容有點不同,所以改了
package main
// SayHelloImp servant implementation
type SayHelloImp struct {
}
// Init servant init
func (imp *SayHelloImp) Init() (error) {
//initialize servant here:
//...
return nil
}
// Destroy servant destory
func (imp *SayHelloImp) Destroy() {
//destroy servant here:
//...
}
func (imp *SayHelloImp) EchoHello(name string, greeting *string) (int32, error) {
*greeting = "hello " + name
return 0, nil
}
(4)編譯代碼
cd 進入Hello目錄中
make && make tar
(5) 如果沒有錯誤,則會生成一個HelloGo.tgz的打包文件
(6)編寫client.go
package main
import (
"fmt"
"github.com/TarsCloud/TarsGo/tars"
"TestApp"
)
func main() {
comm := tars.NewCommunicator()
obj := fmt.Sprintf("TestApp.HelloGo.SayHelloObj@tcp -h 127.0.0.1 -p 10015 -t 60000")
app := new(TestApp.SayHello)
comm.StringToProxy(obj, app)
reqStr := "tars"
var resp string
ret, err := app.EchoHello(reqStr, &resp)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("ret: ", ret, "resp: ", resp)
}
服務部署和測試
(1)執行HelloGo目錄下的start.sh,開啓服務
./start.sh
(2)開啓客戶端
cd client
go build client.go
./client
終端顯示
ret: 0 resp: hello tars
當然也可以直接在TarsWeb進行部署,具體的方式可以看我下面的文章後半部分
我的小問題待解決
2020-05-08 12:45:37.284|application.go:initConfig:73|ERROR|server config path empty
ret: 0 resp: hello tars
據我所知,配置文件是啓動服務端的時候調用的,而我開啓客戶端去訪問服務時,卻提示瞭如上的錯誤。並且客戶端正常執行了下去,說明addservant是成功的。如果有人遇到了,麻煩告訴我怎麼解決。使用TarsC++時沒遇到這個問題。