一. 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++时没遇到这个问题。