centos php v8js,v8js拓展安装

## 前记

由于后端使用的是PHP,业务需要在请求API时生成一个JS加密的字符串,以前业务中有使用过PuPHPeteer,但是无头chrome启动很慢,对服务器压力很大,所以在这里无法直接使用,v8js就是最好的选择了。由于自己大部分时间是在写后端,前端虽然有过接触,但是近几年前端的发展速度已经让我有点学不动了。[v8js github](https://github.com/phpv8/v8js/blob/php7/README.Linux.md)上面其实已经讲得已经很详细了,但是由于服务器环境不同,依赖不同,特别是在墙内就变得异常复杂了,现在对这php v8js 拓展安装做个详细的记录,以供查看。

## 安装depot_tools

国内服务器一定要用vpn否则将无法安装

```

#如果没有安装git,需要先安装

yum install git

cd /tmp

# depot_tools安装

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

export PATH=`pwd`/depot_tools:"$PATH"

# 下载 v8 这一步很慢,需要耐心等待(如果你的gcc -v 版本不是7.5以上的话,请先进入底下的故障解决先升级gcc)

fetch v8

cd v8

# 选择你想编译的版本

git checkout 7.5.288.23

gclient sync

# Setup GN

tools/dev/v8gen.py -vv x64.release -- is_component_build=true use_custom_libcxx=false

# 开始编译,这里容易出错,如果报错的话,按提示,对照下面的说明

ninja -C out.gn/x64.release/

# Install to /opt/v8/

sudo mkdir -p /opt/v8/{lib,include}

sudo cp out.gn/x64.release/lib*.so out.gn/x64.release/*_blob.bin \

out.gn/x64.release/icudtl.dat /opt/v8/lib/

sudo cp -R include/* /opt/v8/include/

```

## 安装v8js

```

cd /tmp

git clone https://github.com/phpv8/v8js.git

cd v8js

phpize

./configure --with-v8js=/opt/v8 LDFLAGS="-lstdc++" --with-php-config=/www/server/php/72/bin/php-config

make

make test

sudo make install

```

## 故障解决

Windows可以使用phpenv,然后下载别人编译好的版本,放在PHP目录后在Phpstudy中启用此版本即可:[https://www.apachelounge.com/viewtopic.php?t=6359](https://www.apachelounge.com/viewtopic.php?t=6359)

编译v8引擎的过程中最容易出错,最关键是要选用最新的gcc引擎,centos默认4.85的编译器会失败,要升级到最新,我这里用的是7.5版本。

```

# 如果提示GLIBC_2.18 not found GLIBCXX\_3.4.21 not found,这里有个巨坑,系统自带的gcc是4.8版本,make gcc7.5后,需要重启一下电脑才能生效,如果是全新的机器,如果gcc版本是7.5以下,建议先安装编译器再装其他

cd /tmp

wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz

tar -xzvf glibc-2.18.tar.gz

cd glibc-2.18

mkdir build && cd build

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

make -j4 && make install

#

cd /tmp

wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz

tar -xzvf gcc-7.5.0.tar.gz

cd gcc-7.5.0

./contrib/download_prerequisites

mkdir build && cd build

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

make -j4 && make install

find / -name "libstdc++.so*"

cp /tmp/gcc-7.5.0/build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 /usr/lib64

cd /usr/lib64

rm -rf libstdc++.so.6

ln -s libstdc++.so.6.0.24 libstdc++.so.6

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

# gcc -v 查看版本是否是刚刚安装的最新的7.5,如果不是,重启下电脑

```

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值