go的grpc环境安装

参考grpc-go官方文档:https://grpc.io/docs/languages/go/quickstart/

视频教程:https://www.bilibili.com/video/BV1zi4y1L7Sf

环境

golang的docker image

$ docker run -it golang:alpine

简单准备

# go env -w GO111MODULE=on
//重要:添加代理,参考:https://goproxy.cn/
# go env -w GOPROXY=https://goproxy.cn,direct
//必要的一些工具
# apk add git make gcc g++

prorobuf安装

下载protobuf-all-3.8.0.tar.gz

# wget https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-all-3.8.0.tar.gz
Connecting to github.com (52.74.223.119:443)
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (52.217.76.180:443)
saving to 'protobuf-all-3.8.0.tar.gz'
protobuf-all-3.8.0.t 13% |************ | 968k 0:05:10 ETA

解压并安装

# tar -xvf protobuf-all-3.8.0.tar.gz
# cd protobuf-3.8.0
protobuf-3.8.0# mkdir -p /usr/local/protobuf
protobuf-3.8.0# ./configure --prefix=/usr/local/protobuf
protobuf-3.8.0# make
protobuf-3.8.0# make install protobuf-3.8.0# echo "export PATH=$PATH:/usr/local/protobuf/bin">>/etc/profile
protobuf-3.8.0# source /etc/profile
protobuf-3.8.0# protoc --version
libprotoc 3.8.0

prorobuf安装完成。

protoc-gen-go安装

protoc-gen-go是proto文件生成go文件的插件

方法1:

//网络原因,安装比较困难,添加GOPROXY后解决。
go get -u github.com/golang/protobuf/protoc-gen-go

方法2:源码安装

mkdir -p $GOPATH/src/github.com/golang && cd $GOPATH/src/github.com/golang
//大小8M,可以直接clone
golang# git clone https://github.com/golang/protobuf.git
Cloning into 'protobuf'...
remote: Enumerating objects: 7251, done.
remote: Total 7251 (delta 0), reused 0 (delta 0), pack-reused 7251
Receiving objects: 100% (7251/7251), 8.43 MiB | 17.00 KiB/s, done.
Resolving deltas: 100% (4783/4783), done.

编译方法

golang# cd protobuf/protoc-gen-go
protoc-gen-go# go build -o protoc-gen-go main.go
go: downloading google.golang.org/protobuf v1.23.0
protoc-gen-go# ls
protoc-gen-go <<< 编译出可执行文件 protoc-gen-go# echo "export PATH=$PATH:$GOPATH/bin" >> /etc/profile
protoc-gen-go# source /etc/profile
//复制protoc-gen-go到bin目录
protoc-gen-go# cp protoc-gen-go /usr/local/go/bin
protoc-gen-go# ls /usr/local/go/bin/
go gofmt protoc-gen-go

验证protoc-gen-go插件

验证protoc-gen-go插件就是看是否能将proto文件生成pb.go文件。

helloworld# ls
helloworld.proto
helloworld# protoc --go_out=plugins=grpc:. helloworld.proto
helloworld# ls google.golang.org/grpc/examples/helloworld/helloworld/
helloworld.pb.go

证明protoc-gen-go插件成功!

安装grpc-go

# mkdir -p $GOPATH/src/google.golang.org
# cd $GOPATH/src/google.golang.org
//下载源码包
google.golang.org# wget https://github.com/grpc/grpc-go/archive/master.tar.gz
Connecting to github.com (13.229.188.59:443)
Connecting to codeload.github.com (54.251.140.56:443)
saving to 'master.tar.gz'
master.tar.gz 100% |****************************************************************************************| 1138k 0:00:00 ETA
'master.tar.gz' saved
//解压源码包
google.golang.org# tar -xvf master.tar.gz
google.golang.org# mv grpc-go-master grpc
//安装grpc-go
google.golang.org# cd grpc
grpc# go install google.golang.org/grpc
go: downloading github.com/golang/protobuf v1.4.2
go: downloading google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
go: downloading golang.org/x/net v0.0.0-20190311183353-d8887717615a
go: downloading golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
go: downloading golang.org/x/text v0.3.0

grpc-go安装完成。

验证

找到安装grpc-go时已经下载好的示例代码。

服务端启动

$ docker ps | grep golang
a450ff530be6 golang "/bin/sh -c sh" About an hour ago Up About an hour elastic_ptolemy
$ docker exec -it a450ff530be6 sh # cd /go/src/google.golang.org/grpc/examples/helloworld
helloworld # ls
greeter_client greeter_server helloworld helloworld# go run greeter_server/main.go
2021/01/17 00:53:56 Received: world

客户端启动

$ docker ps | grep golang
a450ff530be6 golang "/bin/sh -c sh" About an hour ago Up About an hour elastic_ptolemy
$ docker exec -it a450ff530be6 sh # cd /go/src/google.golang.org/grpc/examples/helloworld
helloworld # ls
greeter_client greeter_server helloworld helloworld # go run greeter_client/main.go
2021/01/17 00:53:56 Greeting: Hello world

grpc通信成功!

go的grpc环境源码编译安装的更多相关文章

  1. centos6.5环境源码编译安装mysql5.6.34

    centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...

  2. LAMP环境源码编译安装过程

    LAMP环境源码编译安装过程 一.Apache的安装 1.1.apache软件包及依赖包准备 httpd-2.4.29.tar.bz2       apr-1.6.3.tar.gz      apr- ...

  3. Linux环境源码编译安装SVN

    zhoulf 2015/2/28 原创 安装说明 安装环境:Red Hat Enterprise Linux 安装方式:源码安装 软件:apr-1.5.0.tar.gz.apr-iconv-1.2.1 ...

  4. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  5. 源码编译安装lnmp环境

    一.源码编译安装步骤 首先说明源码安装的好处   速度快,可自定义路径 主要有三步:1.配置 进入源码安装包  ./configure --prefix=/uer/local/nginx  可指定参数 ...

  6. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  7. CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境

    CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...

  8. centos7.6环境zabbix3.2源码编译安装版升级到zabbix4.0长期支持版

    zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整 ...

  9. Centos7源码编译安装PHP7.2(生产环境)

    安装PHP依赖包,否则在编译的过程中可能会出现各种报错 # Centos 安装epel-release源并将系统包更新到最新版本 $ yum install epel-release-y $ yum ...

  10. SSH/SSL 源码编译安装简易操作说明

    环境:CentOS 6.7 安全加固需求,由于某盟扫描系统主机有SSL系列漏洞,客户要求必须修复: 解决方案:将SSH/SSL升级到最新版本,删除SSL旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...

随机推荐

  1. ERP 系统最重要的是什么?

    ERP系统最重要的就是内部业务逻辑,这也是ERP复杂.专业性的体现!ERP系统可以算是当今最复杂的应用系统,也是最昂贵的,头部厂商一套系统动辄上千万,实施费用也常常达到千万级,实施周期动辄半年一年的, ...

  2. QML 信号与响应方法的总结

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16748191.html 如果面试过程中,面试官想了解你对 ...

  3. 在Tomcat中启用虚拟线程特性

    前提 趁着国庆前后阅读了虚拟线程相关的源码,写了一篇<虚拟线程 - VirtualThread源码透视>,里面介绍了虚拟线程的实现原理和使用示例.需要准备做一下前期准备: 安装OpenJD ...

  4. 从SpringBoot启动,阅读源码设计

    目录 一.背景说明 二.SpringBoot工程 三.应用上下文 四.资源加载 五.应用环境 六.Bean对象 七.Tomcat服务 八.事件模型 九.配置加载 十.数据库集成 十一.参考源码 服务启 ...

  5. Shading-JDBC、ShadingSphere、ShardingProxy 使用详解

    ShadingSphere ​ShardingSphere是一款起源于当当网内部的应用框架,2015年在当当网内部诞生,2016年由主要开发人员张亮带入京东数科,在国内经历了当当网.电信翼支付.京东数 ...

  6. 一篇了解全MVCC

    一.什么是MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制,是一种并发控制的方法,一般用在数据库管理系统中,实现对数据库的并发访问,比如在M ...

  7. 6.jmespath表达式

    jmespath是json的查询语言 可以从json文档中提取和转换元素,类似于jsonpath的另外一个库   字典取值 # 一层嵌套取值 {a:1,b:2,c:3} ""&qu ...

  8. Nginx实用配置-2

    Nginx配置-2 1.升级Openssl [root@rocky8 ~]# nginx -V #查看现在nginx的OpenSSL版本和编译情况 nginx version: nginx/1.22. ...

  9. 逆向使用 execjs时遇到 UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 28: illegal multibyte sequence

    问题: 如下图所示 今天在维护以前的爬虫代码 发现有个网站一直爬取失败,我原以为是网站逆向的部分改了,搞了好久才发现是GBK的问题 接下来告诉大家解决方案 解决方案 如下图 在下图这个subbsubp ...

  10. 自动化利器 Ansible - 从了解到应用

    本文说明 本系列使用 ansible 2.9.27 版本来说明和汇总相关信息. # cat /etc/system-release Red Hat Enterprise Linux Server re ...