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旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...
随机推荐
- PHP全栈开发(八):CSS Ⅴ 超链接 style
CSS里面有专门针对超链接的选择器,也就是他们: a:link - 正常,未访问过的链接 a:visited - 用户已访问过的链接 a:hover - 当用户鼠标放在链接上时 a:active - ...
- 离线安装chrome浏览器的postman插件
最近开始研究webapi相关的东西,看到chrome浏览器的有个postman插件挺好用的,但是安装包下载下来以后会出现这种情况,这时候我们可以把crx后缀的改成zip格式的然后解压,然后选择开发者模 ...
- 【Java8新特性】- Stream流
Java8新特性 - Stream流的应用 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! ...
- C++ 栈和典型迷宫问题
C++ 栈和迷宫问题 1. 前言 栈是一种受限的数据结构,要求在存储数据时遵循先进后出(Last In First Out)的原则.可以把栈看成只有一个口子的桶子,进和出都是走的这个口子(也称为栈顶) ...
- SpringBoot(三) - Slf4j+logback 日志,异步请求,定时任务
1.Slf4j+logback 日志 SpringBoot框架的默认日志实现:slf4j + logback: 默认日志级别:info,对应了实际生产环境日志级别: 1.1 日志级别 # 常见的日志框 ...
- C语言小白刷题
1.有n个评委,他们给出score个分数,请用代码写出平均值,ave代表平均值 2022-10-15 13:17:10 int main() { int n, i =1, score, sum = 0 ...
- JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
阿西吧.自从学会使用框架.再看以前写的.我真的是要死了.项目用的还不是maven.整理项目能给我搞死.更要命的是这个项目还是用eclipse写的.数据库还是SQL server.阿西吧 这个系统代码不 ...
- C语言两个升序递增链表逆序合并为一个降序递减链表,并去除重复元素
#include"stdafx.h" #include<stdlib.h> #define LEN sizeof(struct student) struct stud ...
- Educational Codeforces Round 122 (Rated for Div. 2)/codeforces1633
CodeForces1633 Div. 7 解析: 题目大意 给定 \(t\) 组数据.每组数据给定一个数 \(n\)(\(10\le n\le 999\)). 每次操作可以修改 \(n\) 任意一位 ...
- 是什么让.NET7的Min和Max方法性能暴增了45倍?
简介 在之前的一篇文章.NET性能系列文章一:.NET7的性能改进中我们聊到Linq中的Min()和Max()方法.NET7比.NET6有高达45倍的性能提升,当时Benchmark代码和结果如下所示 ...