go的grpc环境源码编译安装
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环境源码编译安装的更多相关文章
- centos6.5环境源码编译安装mysql5.6.34
centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...
- LAMP环境源码编译安装过程
LAMP环境源码编译安装过程 一.Apache的安装 1.1.apache软件包及依赖包准备 httpd-2.4.29.tar.bz2 apr-1.6.3.tar.gz apr- ...
- Linux环境源码编译安装SVN
zhoulf 2015/2/28 原创 安装说明 安装环境:Red Hat Enterprise Linux 安装方式:源码安装 软件:apr-1.5.0.tar.gz.apr-iconv-1.2.1 ...
- Linux环境PostgreSQL源码编译安装
Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...
- 源码编译安装lnmp环境
一.源码编译安装步骤 首先说明源码安装的好处 速度快,可自定义路径 主要有三步:1.配置 进入源码安装包 ./configure --prefix=/uer/local/nginx 可指定参数 ...
- 保姆级教程——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版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境
CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...
- centos7.6环境zabbix3.2源码编译安装版升级到zabbix4.0长期支持版
zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整 ...
- Centos7源码编译安装PHP7.2(生产环境)
安装PHP依赖包,否则在编译的过程中可能会出现各种报错 # Centos 安装epel-release源并将系统包更新到最新版本 $ yum install epel-release-y $ yum ...
- SSH/SSL 源码编译安装简易操作说明
环境:CentOS 6.7 安全加固需求,由于某盟扫描系统主机有SSL系列漏洞,客户要求必须修复: 解决方案:将SSH/SSL升级到最新版本,删除SSL旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...
随机推荐
- 分布式存储系统之Ceph基础
Ceph基础概述 Ceph是一个对象式存储系统,所谓对象式存储是指它把每一个待管理的数据流(比如一个文件)切分成一到多个固定大小的对象数据,并以其为原子单元完成数据的存取:对象数据的底层存储服务由多个 ...
- 洛谷P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles (DP入门)
考虑逆推就行了. 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int a[1010][1010]; 5 int ...
- Kafka之概述
Kafka之概述 一.消息队列内部实现原理 (1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消 ...
- 快速上手Mybatis项目
快速上手Mybatis项目 思路流程:搭建环境-->导入Mybatis--->编写代码--->测试 1.搭建实验数据库 CREATE DATABASE `mybatis`; USE ...
- java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 增样将jar包导入
2021-9-30-17:28 遇到的一个bug.以前遇到过,这次又遇到.就离谱,结果还忘记怎样解决了.这捣鼓一下,那捣鼓一下,又给搞好了.为了记录这次bug,又试图还原bug. 1.解决办法file ...
- 2流高手速成记(之四):SpringBoot整合redis及mongodb
最近很忙,好不容易才抽出了时间,咱们接上回 上次我们主要讲了如何通过SpringBoot快速集成mybatis/mybatis-plus,以实现业务交互中的数据持久化,而这一切都是基于关系型数据库(S ...
- 【.NET 6】RabbitMQ延迟消费指南
背景 最近遇到一个比较特殊需求,需要修改一个的RabbitMQ消费者,以实现在消费某种特定的类型消息时,延迟1小时再处理,几个需要注意的点: 延迟是以小时为单位 不是所有消息都延迟消费,只延迟特定类型 ...
- .Net Core中获取appsettings.json中的节点数据
获取ConnectionStrings节点数据 //appsettings.json { "ConnectionStrings": { //DEV "DbConn&quo ...
- 学习Rust第一天 Rust语言特点
学习Rust之前,我觉得应该首先了解Rust语言的设计目的是什么?为什么会诞生这门语言?这门语言和其他的语言有什么不同. Rust语言的设计特点 高性能:rust拥有和C++相近的性能表现,所以在嵌入 ...
- 微信小程序canvas 证件照制作
小程序制作证件照过程 利用canvas制作生活中常用的证件照,压缩图片,修改图片dpi.希望给大家带来方便. 证件照小程序制作要点 上传合适的图片,方便制作证件照 调用AI接口,将图像进行人像分割.这 ...