一、依赖安装
- gcc 要求4.9以上版本,需要升级>=v4.9:
安装依赖: 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-develcd /usr/local-
wget -c http://mirror.koddos.net/gcc/releases/gcc-4.9.0/gcc-4.9.0.tar.bz2 -
tar jxvf gcc-4.9.0.tar.bz2 -
cd gcc-4.9.0 -
预下载依赖源码包:./contrib/download_prerequisites -
./configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ makesudo make install-
ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc -
ln -s /usr/local/gcc/bin/g++ /usr/bin/g++ 添加环境变量: vi /etc/profile 添加以下内容:LD_LIBRARY_PATH=/usr/local/gcc/libexport LD_LIBRARY_PATHexport PATH=/usr/local/gcc/bin:$PATH
-
source /etc/profile -
cp /usr/local/gcc/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6.0.20 -
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6_bak -
ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6 - gcc 5.2.1 安装:devtoolset安装gcc的坑_iuhiyuh的博客-CSDN博客
-
echo "source /opt/rh/devtoolset-4/enable" >> /etc/profile
- source /etc/profile
- install cmake(3.19.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
- tar zxf cmake-3.19.1.tar.gz
- cd cmake-3.19.1 && ./bootstrap && make -j4 && make install
- 如没有cmake 环境变量 需要手动添加;
- install grpc(v1.37.x)子模块依赖(需要翻墙) 如无法下载 也可找张铁龙 要现成的压缩包。
-
git clone --depth 1 -b v1.37.x https://github.com/grpc/grpc /usr/local/grpc
- cd /usr/local/grpc
-
git submodule init
- git submodule update --init --recursive
-
- install protobuf:
- cd /usr/local/grpc/third_party/protobuf
- ./autogen.sh && ./configure && make -j4
-
make check
- sudo make install
- sudo ldconfig
- make clean
- install grpc:
- cd /usr/local/grpc
- mkdir -p cmake/build && cd cmake/build && cmake ../.. -DBUILD_SHARED_LIBS=ON -DgRPC_INSTALL=ON
- make -j4
- sudo make install
-
sudo ldconfig
- make clean
二、扩展安装:
- SkyWaling php编译找到grpc, protobuf:
-
cp /usr/local/grpc/third_party/protobuf/protobuf.pc /usr/lib64/pkgconfig/
-
cp /usr/local/grpc/cmake/build/libs/opt/pkgconfig/grpc++.pc /usr/lib64/pkgconfig/
-
cp /usr/local/grpc/cmake/build/libs/opt/pkgconfig/gpr.pc /usr/lib64/pkgconfig/
-
cp /usr/local/grpc/cmake/build/libs/opt/pkgconfig/grpc.pc /usr/lib64/pkgconfig/
-
- install PHP skywalking Extension:
-
curl -Lo v4.1.1.tar.gz https://github.com/SkyAPM/SkyAPM-php-sdk/archive/v4.1.1.tar.gz -
tar zxvf v4.1.1.tar.gz -
cd SkyAPM-php-sdk-4.1.1 - cd /usr/local
- wget https://github.com/SkyAPM/SkyAPM-php-sdk/archive/refs/heads/master.zip
-
unzip master.zip
-
cd SkyAPM-php-sdk-master
-
vi src/sky_module.cc 替换文件内容:
boost::interprocess::create_only替换为:boost::interprocess::open_or_create
-
/usr/local/php74/bin/phpize
-
./configure --with-php-config=/usr/local/php74/bin/php-config
-
make
(如果报错:fatal error: absl/synchronization/mutex.h: 没有那个文件或目录执行:cp -r /usr/local/grpc/third_party/abseil-cpp/absl /usr/local/include/)
-
sudo make install
- 问题:如安装失败:提示 message_queue.hpp file not found,则需要安装:
解压后运行 ./bootstrap.sh --with-libraries=all --with-toolset=gcc && ./b2 install
-
- php.ini文件修改:
-
vi /usr/local/php74/etc/php.ini 添加配置:
-
[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)
-
-
php-fpm前台运行
-
vi /usr/local/php74/etc/php-fpm.conf 设置 daemonize = no
- kill 掉现有php74的php-fpm进程;(注意是php74的)ps -ef|grep "/usr/local/php74/etc/php-fpm.conf" |grep -v "grep" |awk -F ' ' '{print $2}'|xargs kill
- 从新启动php7.4的php-fpm: nohup /usr/local/php74/sbin/php-fpm>/var/log/php-fpm-output.log 2>&1 &
-
- php7-fpm 开机启动文件:
-
/etc/init.d/php7-fpm 该文件内容调整为:
-
#! /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
- service php7-fpm stop
- service php7-fpm start
- service php7-fpm status
- service php7-fpm reload
-
-