docker中php环境安装grpc - Go语言中文社区

docker中php环境安装grpc


安装步骤:
一、安装protoc工具
二、php安装grpc扩展
三、php安装protobuf扩展
描述一下它们之间的关系:protobuf是一套接口描述语言(Interface Definition Language,IDL),相关处理工具主要是protoc,基于c++语言实现。
用户写好 .proto 描述文件,之后便可以使用 protoc 自动编译生成众多计算机语言(C++、Java、Python、C#、Golang 等)的接口代码。这些代码可以支持 gRPC,也可以不支持。
gRPC 是 Google 开源的 RPC 框架和库,已支持主流计算机语言。底层通信采用 HTTP2 协议,比较适合互联网场景。gRPC 在设计上考虑了跟 ProtoBuf 的配合使用。
两者分别解决不同问题,可以配合使用,也可以分开单独使用。
典型的配合使用场景是,写好 .proto 描述文件定义 RPC 的接口,然后用 protoc(带 gRPC 插件)基于 .proto 模板自动生成客户端和服务端的接口代码
一、安装protoc工具

切换至任意一个目录下就可以
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-x86_64.zip
unzip protoc-3.9.1-linux-x86_64.zip
ls  //该目录下会增加包和文件夹 bin包 include包 readme.txt
cp bin/protoc /usr/local/bin    //将bin包下的protoc复制到/usr/local/bin下
protoc --version   //查看版本

在这里插入图片描述
二、安装grpc扩展
1.下载 wget http://pecl.php.net/get/grpc-1.20.0.tgz
在这里插入图片描述
2.移动到/home/work/app/
3.解压 tar zxvf grpc-1.20.0.tgz
在这里插入图片描述
4.切换到目录下
在这里插入图片描述
5.linux源码安装的3步: 配置(./configure) 编译(make) 安装(make install)
./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,
并不是需要CC或GCC,它是个shell脚本。这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如./configure --prefix=/usr 安装在/usr下

./configure

发现错误:
在这里插入图片描述
查看下:确实没有./configure
在这里插入图片描述

/home/work/app/php/bin/phpize
ls  查看后出现
注意:phpsize用来干什么呢?为什么在phpize之后再configure?
官方解释:是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
phpize是一个shell脚本,用于生成pecl扩展的configure文件。编译php扩展的工具,主要是根据系统信息生成对应的configure文件
怎么使用?
比如需要安装grpc,切换到grpc目录下,那么在./configure之前执行下phpize就可以

在这里插入图片描述
make:大多数的源代码包都经过这一步进行编译,它从Makefile中读取指令,然后编译。
make install :是用来安装的,它也从Makefile中读取指令,安装到指定的位置.这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)

./configure 出现错误,找不到php的config文件路径
在这里插入图片描述
修改为:./configure --with-php-config=/home/work/app/php/bin/php-config
注意:phpize生成./configure后知道了是php安装扩展,那么./configure时候需要在后面添加php-config文件的路径
在这里插入图片描述
make:出现错误
在这里插入图片描述
经google是因为gcc版本不兼容
查看docker中的gcc版本:

cd /usr/bin/
gcc -v

在这里插入图片描述
下载gcc高级版本:http://ftp.gnu.org/gnu/gcc/ 官网下载地址

下载解压安装:一般安装在/usr/local/bin下

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
tar -jxvf gcc-4.8.2.tar.bz2
下载供编译需求的依赖项
cd gcc-4.8.2
./contrib/download_prerequisites
建文件夹
mkdir gcc-build-4.8.2
cd gcc-build-4.8.2
配置,生成makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
编译
make -j4
安装
sudo make intsall
切换版本
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc 40
注意:
update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。
参数:--install表示向update-alternatives注册服务名 还可以有--remove等
     第二个参数是注册最终地址,成功后将会把命令在这个固定的目的地址做真实命令的软链,以后管理就是管理这个软链;
     第三个参数:服务名,以后管理时以它为关联依据。
     第四个参数,被管理的命令绝对路径。
     第五个参数,优先级,数字越大优先级越高。

升级gcc后,重新make
但是在make的时候还是出现了上面的错误:
在这里插入图片描述
查看系统中的版本已更新,但还是报错
在这里插入图片描述
查看环境变量:
在这里插入图片描述
查看系统中的gcc
在这里插入图片描述
在看系统中使用的gcc
在这里插入图片描述
经查看是因为gcc升级安装在了/usr/local/bin下面,docker中的环境变量在usr/bin下面,所以在编译的时候获取的仍然是旧版本的gcc
解决方法:在MakeFile中指定gcc g++的路径 根据错误并在libtool后面添加–tag-CXX
在这里插入图片描述
在这里插入图片描述
哈哈哈一张成功的图
在这里插入图片描述
6.在php.ini中设置:vim /home/work/app/php/etc/php.ini
在这里插入图片描述
三、php安装protobuf扩展

cd /usr/local/bin
wget http://pecl.php.net/get/protobuf-3.9.1.tgz
tar zxvf protobuf-3.9.1.tgz
cd protobuf-3.9.1
/home/work/app/php/bin/phpize
./configure --with-php-config=/home/work/app/php/bin/php-config
make
make install
在php.ini中添加 extension = protobuf.so

在这里插入图片描述

总结: 按下面的方式安装过grpc
https://github.com/grpc/grpc/blob/master/src/php/README.md#quick-install
在安装过程中有使用pecl安装,因检测php版本低于5.5
在这里插入图片描述
在这里插入图片描述
还有使用git ,也不可以
在这里插入图片描述
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/sinat_38804294/article/details/99683657
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 21:27:58
  • 阅读 ( 2074 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢