centos7安装Puppeteer
谷歌浏览器在17年自行开发了Chrome Headless特性,并与之同时推出了Puppeteer,可以理解成我们日常使用的Chrome的无界面版本以及对其进行操控的js接口套装,官方介绍参照:https://pptr.dev/。
备注:此环境为支持工作流workflow搭建
1.传统部署
#1.配置nodejs环境
[root@master03 ~]# wget https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz
[root@master03 ~]# tar xf node-v12.18.1-linux-x64.tar.xz
[root@master03 ~]# mv node-v12.18.1-linux-x64 /usr/local/node
[root@master03 ~]# vi /etc/profile
......最后加......
export PATH=$PATH:/usr/local/node/bin
[root@master03 ~]# source /etc/profile
[root@master03 ~]# cd /usr/local/node/bin
[root@master03 bin]# ./node -v
#配置软链接
[root@master03 bin]# ln -s /usr/local/node/bin/node /usr/local/bin/
[root@master03 bin]# ln -s /usr/local/node/bin/npm /usr/local/bin/
[root@master03 bin]# cd
[root@master03 ~]# node -v
#2.安装puppeteer
[root@master03 ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@master03 ~]# cnpm i puppeteer
✔ Installed 1 packages
✔ Linked 57 latest versions
[1/1] scripts.install puppeteer@latest run "node install.js", root: "/root/node_modules/_puppeteer@11.0.0@puppeteer"
Downloading Chromium r901912 - 140.9 Mb [====================] 100% 0.0s
Chromium (901912) downloaded to /root/node_modules/_puppeteer@11.0.0@puppeteer/.local-chromium/linux-901912
[1/1] scripts.install puppeteer@latest finished in 53s
✔ Run 1 scripts
#3.安装依赖包
[root@master03 ~]# yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y
#查看依赖是否完全安装成功(注意,这里使用的是901912版本,如果你的命令执行不成功请查看上面google的版本)
[root@master03 ~]# ldd node_modules/puppeteer/.local-chromium/linux-901912/chrome-linux/chrome
# 发现未安装依赖,执行命令查看其依赖包:repoquery --nvr --whatprovides xxx.xxx.xx
# 安装此依赖: yum install yyy.xxx.zz---------------->这里依赖已经在上面安装好了
#4.编写生成PDF测试文件测试是否能够生成PDF
[root@master03 ~]# vim example.js
const puppeteer = require('puppeteer');
(async () => {
// linux环境一定不能省略下面俩个参数 noSandbox 还有disableSetuidSandbox
// 否则会运行失败!!!
const browser = await puppeteer.launch({
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
]
});
const page = await browser.newPage();
await page.goto('https://example.com');
await page.pdf({
path: 'example.pdf',
format: 'a4',
scale: 1,
printBackground: true,
omitBackground: false,
displayHeaderFooter: false,
margin: {top: '1cm', bottom: '1cm', left: '1.6cm', right: '1.6cm'}
});
await browser.close();
})();
[root@master03 ~]# node example.js
[root@master03 ~]# ls
example.pdf
#4.编写生成png测试文件测试是否能够生成png
[root@master03 ~]# vim index.js
[root@master03 ~]# cat index.js
const puppeteer = require('puppeteer');
(async () => {
// linux环境一定不能省略下面俩个参数 noSandbox 还有disableSetuidSandbox
// 否则会运行失败!!!
const browser = await puppeteer.launch({
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
]
});
const page = await browser.newPage();
await page.goto('https://www.baidu.com');
await page.screenshot({path: 'example.png'});
await browser.close();
})();
[root@master03 ~]# node example.js
[root@master03 ~]# ls
example.pdf index.js example.js example.png
容器化部署-----k8s环境---------(略--提供下思路)
1.自己构建镜像(包含java与puppeteer)
2.启动一个容器测试是否能够正常生成PDF
3.将自己的项目打包成镜像
4.因为PDF文件需要前端nginx去请求,这里使用k8s的pv,pvc存储方式做