测试跑通应用性能观测通过 Skywalking 协议上报

2021-12-13 22:04:20 浏览数 (1)

  • 产品文档链接: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

代码语言:javascript复制
 cp php.ini-production /usr/local/php/etc/php.ini

找到sapi/fpm/init.d.php-fpm 文件拷贝到系统配置 /etc/init.d 目录下并重命名为 php-fpm

代码语言:javascript复制
[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

代码语言:javascript复制
[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

代码语言:javascript复制
[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

查看是否有9000端口查看是否有9000端口

设置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,如下图所示:

控制台获取token控制台获取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

代码语言:javascript复制
[root@VM-32-5-centos cmake-3.20.0]# yum -y install git

接着走上面的Git clone

代码语言:javascript复制
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

让动态链接库为系统所共享

这里需要注意

静态编译不需要走文档的protobuf安装静态编译不需要走文档的protobuf安装

就是不需要

静态编译不需要走这个地方静态编译不需要走这个地方

如果一定编译,可能遇见报错 autoreconf: command not found

代码语言:javascript复制
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 这一部分不重复演示了。

代码语言:javascript复制
./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

0 人点赞