PHP7.4添加-skywalking

一、依赖安装

  1. gcc 要求4.9以上版本,需要升级>=v4.9:
    1. 安装依赖 yum install glibc-headers gcc-c++ gcc gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libtool libsysfs zlib-devel glibc-devel automake autoconf  libuuid-devel
    2. cd /usr/local
    3. wget -c http://mirror.koddos.net/gcc/releases/gcc-4.9.0/gcc-4.9.0.tar.bz2

    4. tar jxvf gcc-4.9.0.tar.bz2

    5. cd gcc-4.9.0

    6. 预下载依赖源码包:./contrib/download_prerequisites

    7. ./configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++

    8. make
    9. sudo make install
    10. ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc

    11. ln -s /usr/local/gcc/bin/g++ /usr/bin/g++

    12. 添加环境变量:  vi /etc/profile 添加以下内容:
      1. LD_LIBRARY_PATH=/usr/local/gcc/lib
      2. export LD_LIBRARY_PATH
      3. export PATH=/usr/local/gcc/bin:$PATH
    13. source /etc/profile

    14. cp /usr/local/gcc/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6.0.20

    15. mv  /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6_bak

    16. ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6

    17. gcc 5.2.1 安装:devtoolset安装gcc的坑_iuhiyuh的博客-CSDN博客
    18. echo "source /opt/rh/devtoolset-4/enable" >> /etc/profile

    19. source /etc/profile
  2. install cmake(3.19.1):
    1. curl -L -o cmake-3.19.1.tar.gz  https://github.com/Kitware/CMake/releases/download/v3.19.1/cmake-3.19.1.tar.gz
    2. tar zxf cmake-3.19.1.tar.gz
    3. cd cmake-3.19.1 && ./bootstrap && make -j4 && make install
    4. 如没有cmake 环境变量 需要手动添加;
  3. install grpc(v1.37.x)子模块依赖(需要翻墙) 如无法下载 也可找张铁龙 要现成的压缩包。
    1. git clone --depth 1 -b v1.37.x  https://github.com/grpc/grpc /usr/local/grpc

    2. cd /usr/local/grpc
    3. git submodule init

    4. git submodule update --init --recursive
  4. install protobuf:
    1. cd /usr/local/grpc/third_party/protobuf
    2.   ./autogen.sh && ./configure && make -j4
    3. make check
      
    4. sudo make install
    5. sudo ldconfig
    6. make clean
  5. install grpc:
    1. cd  /usr/local/grpc
    2. mkdir -p cmake/build && cd cmake/build && cmake ../.. -DBUILD_SHARED_LIBS=ON -DgRPC_INSTALL=ON
    3. make -j4 
    4. sudo make install 
    5. sudo ldconfig

    6. make clean

二、扩展安装:

  1. SkyWaling php编译找到grpc, protobuf:
    1. cp /usr/local/grpc/third_party/protobuf/protobuf.pc /usr/lib64/pkgconfig/

    2. cp /usr/local/grpc/cmake/build/libs/opt/pkgconfig/grpc++.pc    /usr/lib64/pkgconfig/

    3. cp /usr/local/grpc/cmake/build/libs/opt/pkgconfig/gpr.pc           /usr/lib64/pkgconfig/

    4. cp /usr/local/grpc/cmake/build/libs/opt/pkgconfig/grpc.pc         /usr/lib64/pkgconfig/

  2. install PHP skywalking Extension:
    1. curl -Lo v4.1.1.tar.gz https://github.com/SkyAPM/SkyAPM-php-sdk/archive/v4.1.1.tar.gz

    2. tar zxvf v4.1.1.tar.gz

    3. cd SkyAPM-php-sdk-4.1.1

    4. cd /usr/local
    5. wget https://github.com/SkyAPM/SkyAPM-php-sdk/archive/refs/heads/master.zip
    6. unzip master.zip

    7. cd  SkyAPM-php-sdk-master

    8. vi src/sky_module.cc 替换文件内容:

      boost::interprocess::create_only替换为:boost::interprocess::open_or_create

    9. /usr/local/php74/bin/phpize

    10. ./configure  --with-php-config=/usr/local/php74/bin/php-config

    11. make

      (如果报错:fatal error: absl/synchronization/mutex.h: 没有那个文件或目录执行:cp -r /usr/local/grpc/third_party/abseil-cpp/absl  /usr/local/include/)

    12. sudo make install

    13. 问题:如安装失败:提示 message_queue.hpp file not found,则需要安装: 

      Version 1.64.0

      解压后运行 ./bootstrap.sh --with-libraries=all --with-toolset=gcc  && ./b2 install

  3. php.ini文件修改:
    1. vi /usr/local/php74/etc/php.ini 添加配置:

    2. [skywalking]

      extension=skywalking.so

      skywalking.enable = 1

      skywalking.version = 8

      skywalking.mq_max_message_length=102400

      skywalking.app_code = xxx-prod ; 

      skywalking.grpc=xxxx:80

      skywalking.log_enable =1  ;(开启日志功能,方便排查问题,验证成功后该配置要删除&&从启php-fpm)

      skywalking.log_path = /tmp/skywalking-php.log  ;(开启日志功能,方便排查问题,验证成功后该配置要删除&&从启php-fpm)

  4. php-fpm前台运行

    1. vi /usr/local/php74/etc/php-fpm.conf 设置 daemonize = no

    2. kill 掉现有php74的php-fpm进程;(注意是php74的)ps -ef|grep "/usr/local/php74/etc/php-fpm.conf" |grep -v "grep" |awk -F ' ' '{print $2}'|xargs kill
    3. 从新启动php7.4的php-fpm:  nohup /usr/local/php74/sbin/php-fpm>/var/log/php-fpm-output.log 2>&1 &
  5. php7-fpm 开机启动文件:
    1. /etc/init.d/php7-fpm 该文件内容调整为:

      1. #! /bin/sh

        ### BEGIN INIT INFO

        # Provides:          php-fpm

        # Required-Start:    $remote_fs $network

        # Required-Stop:     $remote_fs $network

        # Default-Start:     2 3 4 5

        # Default-Stop:      0 1 6

        # Short-Description: starts php-fpm

        # Description:       starts the PHP FastCGI Process Manager daemon

        ### END INIT INFO

        prefix=/usr/local/php74

        exec_prefix=${prefix}

        php_fpm_BIN=${exec_prefix}/sbin/php-fpm

        php_fpm_CONF=${prefix}/etc/php-fpm.conf

        php_fpm_PID=/var/log/php74/php74-fpm.pid

        php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"

        wait_for_pid () {

            try=0

            while test $try -lt 35 do

                case "$1" in

                    'created')

                    if [ -f "$2" ] ; then

                        try=''

                        break

                    fi

                    ;;

                    'removed')

                    if [ ! -f "$2" ] ; then

                        try=''

                        break

                    fi

                    ;;

                esac

                echo -n .

                try=`expr $try 1`

                sleep 1

            done

        }

        case "$1" in

            start)

                echo -n "Starting php-fpm "

                        echo "nohup ${php_fpm_BIN} ${php_opts} >/var/log/php-fpm-output.log 2>&1 &"|sh

                if "$?" != 0 ] ; then

                    echo " failed"

                    exit 1

                fi

                wait_for_pid created $php_fpm_PID

                if [ -n "$try" ] ; then

                    echo " failed"

                    exit 1

                else

                    echo " done"

                fi

            ;;

            stop)

                echo -n "Gracefully shutting down php-fpm "

                if [ ! -r $php_fpm_PID ] ; then

                    echo "warning, no pid file found - php-fpm is not running ?"

                    exit 1

                fi

                kill -QUIT `cat $php_fpm_PID`

                wait_for_pid removed $php_fpm_PID

                if [ -n "$try" ] ; then

                    echo " failed. Use force-quit"

                    exit 1

                else

                    echo " done"

                fi

            ;;

            status)

                if [ ! -r $php_fpm_PID ] ; then

                    echo "php-fpm is stopped"

                    exit 0

                fi

                PID=`cat $php_fpm_PID`

                if ps -p $PID | grep -q $PID; then

                    echo "php-fpm (pid $PID) is running..."

                else

                    echo "php-fpm dead but pid file exists"

                fi

            ;;

            force-quit)

                echo -n "Terminating php-fpm "

                if [ ! -r $php_fpm_PID ] ; then

                    echo "warning, no pid file found - php-fpm is not running ?"

                    exit 1

                fi

                kill -TERM `cat $php_fpm_PID`

                wait_for_pid removed $php_fpm_PID

                if [ -n "$try" ] ; then

                    echo " failed"

                    exit 1

                else

                    echo " done"

                fi

            ;;

            restart)

                $0 stop

                $0 start

            ;;

            reload)

                echo -n "Reload service php-fpm "

                if [ ! -r $php_fpm_PID ] ; then

                    echo "warning, no pid file found - php-fpm is not running ?"

                    exit 1

                fi

                kill -USR2 `cat $php_fpm_PID`

                echo " done"

            ;;

            configtest)

                $php_fpm_BIN -t

            ;;

            *)

                echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}"

                exit 1

            ;;

        esac

        验证命令:service php7-fpm restart

      2. service php7-fpm stop
      3. service php7-fpm start
      4. service php7-fpm status
      5. service php7-fpm reload

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值