- 产品文档链接:https://cloud.tencent.com/document/product/1463/57876#.E6.AD.A5.E9.AA.A44.EF.BC.9A.E4.BF.AE.E6.94.B9-php.ini-.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6
- gcc/g 编译器:大于 4.9 版本。
- PHP:大于 7.0 版本。
- Cmake 编译器:安装大于 3.20.0 版本的 cmake
- 感谢腾讯的大佬新增子模块小包的源:wget https://apm-php-depend-src-1258344699.cos.ap-guangzhou.myzijiebao.com/grpc.submodule.tar.gz
- SkyAPM-php-sdk:wget https://apm-php-depend-src-1258344699.cos.ap-guangzhou.myzijiebao.com/SkyAPM-php-sdk.tar.gz
在这个文档中,很关键的地方,需要密切注意php的路径和每个东西的路径。
由于当前大陆环境并不是很顺畅,所以本次跑通用的是香港主机,
SA2 2H4G 5M 安全组选择放通全部端口,方便演示。
step1:安装php7.3,已经安装的可以忽略这一步
安装依赖
代码语言:javascript复制yum install -y gcc gcc-c make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
代码语言:javascript复制wget http://cn2.php.net/get/php-7.3.0.tar.gz/from/this/mirror -O php-7.3.0
注意这个是大写的 -O ,下载完成以后进行解压
代码语言:javascript复制tar -zxvf php-7.3.0
进入目录
代码语言:javascript复制cd php-7.3.0
进行下一步的./configure的配置
代码语言:javascript复制./configure
--prefix=/usr/local/php
--exec-prefix=/usr/local/php
--bindir=/usr/local/php/bin
--sbindir=/usr/local/php/sbin
--includedir=/usr/local/php/include
--libdir=/usr/local/php/lib/php
--mandir=/usr/local/php/php/man
--with-config-file-path=/usr/local/php/etc
--with-openssl --enable-mbstring
--enable-fpm
编译安装
代码语言:javascript复制make && make install
找到 php.ini-production
,复制到/usr/local/php/etc
下,并改名为php.ini
cp php.ini-production /usr/local/php/etc/php.ini
找到sapi/fpm/init.d.php-fpm
文件拷贝到系统配置 /etc/init.d
目录下并重命名为 php-fpm
[root@VM-32-5-centos php-7.3.0]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@VM-32-5-centos php-7.3.0]# chmod x /etc/init.d/php-fpm
添加 php-fpm 配置文件
将php安装目录下的 /usr/local/php/etc/php-fpm.conf.default
文件拷贝同目录下并重命名为 php-fpm.conf
[root@VM-32-5-centos php-7.3.0]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
添加 www.conf 配置文件
将php安装目录下的 /usr/local/php/etc/php-fpm.d/www.conf.default
文件拷贝同目录下并重命名为 www.conf
[root@VM-32-5-centos php-7.3.0]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
添加php安装目录到系统环境变量
创建并打开文件php.sh
代码语言:javascript复制[root@VM-32-5-centos php-7.3.0]# vim /etc/profile.d/php.sh
打开后按 I 键插入,添加内容:
代码语言:javascript复制export PATH=$PATH:/usr/local/php/bin/:/usr/local/php/sbin/
ESC后,输入:wq!保存退出
代码语言:javascript复制:wq!
使用source立即生效刚刚添加的php环境变量
代码语言:javascript复制[root@VM-32-5-centos php-7.3.0]# source /etc/profile.d/php.sh
启动php-fpm
代码语言:javascript复制[root@VM-32-5-centos php-7.3.0]# service php-fpm start
校验是否成功
代码语言:javascript复制[root@VM-32-5-centos php-7.3.0]# netstat -tnl
设置php开机启动
修改系统配置目录下的 php-fpm 文件可执行权限
代码语言:javascript复制[root@VM-32-5-centos php-7.3.0]# chmod x /etc/init.d/php-fpm
将系统配置目录下的 `php-fpm` 添加到 `系统服务`
代码语言:javascript复制[root@VM-32-5-centos php-7.3.0]# chkconfig --add php-fpm
设置 `php-fpm` `系统服务` 为开机启动
代码语言:javascript复制[root@VM-32-5-centos php-7.3.0]# chkconfig php-fpm on
重启后查看是否成功
setp2:升级GCC版本
1.安装 centos-release-scl 遇到ydn直接选y
代码语言:javascript复制sudo yum install centos-release-scl
2、安装devtoolset,遇到ydn直接选y 注意,如果想安装7.*版本的,就改成devtoolset-7-gcc*,以此类推
代码语言:javascript复制sudo yum install devtoolset-8-gcc*
3、激活对应的devtoolset,所以你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本
代码语言:javascript复制scl enable devtoolset-8 bash
ok,校验下版本
代码语言:javascript复制gcc -v
会显示gcc version 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)
注意,退出会话后,这个临时版本就会回归到旧的版本,如果需要长期使用
代码语言:javascript复制echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
setp3 安装cmake
代码语言:javascript复制wget https://cmake.org/files/v3.20/cmake-3.20.0.tar.gz
解压
代码语言:javascript复制tar -zxvf cmake-3.20.0.tar.gz
切换到cmake目录
代码语言:javascript复制cd cmake-3.20.0
构建环境
代码语言:javascript复制[root@VM-32-5-centos cmake-3.20.0]# ./bootstrap
编译
代码语言:javascript复制[root@VM-32-5-centos cmake-3.20.0]# make
编译安装
代码语言:javascript复制make install
安装完后,在控制台的步骤1:获取接入点和 Token
进入 应用性能观测控制台 应用监控 > 应用列表页面,单击接入应用,在接入应用时选择 PHP 语言与 SkyWalking 的数据采集方式。在选择接入方式步骤获取您的接入点和 Token,如下图所示:
setp4 安装GRPC
从git上拉下来,不行的可以换上面提到的COS源 包含了 grpc.git和submodule
代码语言:javascript复制[root@VM-32-5-centos /]# git clone -b v1.34.x https://github.com/grpc/grpc.git
如果提示git 没有的,bash: git: command not found
[root@VM-32-5-centos cmake-3.20.0]# yum -y install git
接着走上面的Git clone
cd grpc/
拉取子模块 子模块拉不下来的看上面提供的子模块地址
代码语言:javascript复制[root@VM-32-5-centos grpc]# git submodule update --init --recursive
递归创建目录
代码语言:javascript复制mkdir -p cmake/build
进入目录
代码语言:javascript复制cd cmake/build
生成Makefile
代码语言:javascript复制cmake ../..
取最大线程并行编译
代码语言:javascript复制make -j$(nproc)
配置动态链库为共享
代码语言:javascript复制ldconfig
让动态链接库为系统所共享
这里需要注意
就是不需要
如果一定编译,可能遇见报错 autoreconf: command not found
yum -y install autoconf automake libtool
之后会生成./configure脚本直接执行,再进行后续的编译
setp5 安装 skywalking.so 扩展
提前安装依赖库
代码语言:javascript复制[root@VM-32-5-centos protobuf]# yum install boost-devel
还有一个
代码语言:javascript复制[root@VM-32-5-centos protobuf]# yum install autoconf
如果之前遇到过报错的,这步可以忽略
配置环境变量:
代码语言:javascript复制[root@VM-32-5-centos protobuf]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64
[root@VM-32-5-centos protobuf]# export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/lib:/usr/local/lib64
编译skywalking.so扩展 这个地方下载不了的也可以看上面
代码语言:javascript复制git clone -b master https://github.com/SkyAPM/SkyAPM-php-sdk.git
切换目录
代码语言:javascript复制cd SkyAPM-php-sdk/
指定php,
代码语言:javascript复制/usr/local/services/php7/bin/phpize
phpize是php的bin文件,这个地方如果找不到,可以用 find / -name phpize 进行定位
执行
代码语言:javascript复制[root@VM-32-5-centos SkyAPM-php-sdk]# /usr/local/php/bin/phpize
可得到
代码语言:javascript复制Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
接着往下走,
注:https://github.com/SkyAPM/SkyAPM-php-sdk/blob/master/docs/BUILDING.md 上说明使用静态库编译php扩展时,带上参数并指定--with-grpc-src,而不是--with-grpc
代码语言:javascript复制./configure --with-grpc="/usr/local/services/grpc" --with-php-config="/usr/local/services/php7/bin/php-config"
同理,上面的参数也需要替换
代码语言:javascript复制./configure --with-grpc-src="/usr/local/services/grpc" --with-php-config="/usr/local/services/php7/bin/php-config"
同理,你会发现参数仍然是错误的,会报错找不到,一样的方法 find / -name grpc
定位,find / -name php-config
这一部分不重复演示了。
./configure --with-grpc-src="/grpc" --with-php-config="/usr/local/php/bin/php-config"
编译
代码语言:javascript复制make
编译安装
代码语言:javascript复制make install
编译成功
这时候在扩展目录下有扩展文件
Installing shared extensions: /usr/local/phpb/php/extensions/no-debug-non-zts-20180731/
后续步骤请按照官网的文档走,后续可能更新第二篇。
https://cloud.tencent.com/document/product/1463/57876#.E6.AD.A5.E9.AA.A44.EF.BC.9A.E4.BF.AE.E6.94.B9-php.ini-.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6