centos7部署puppeteer

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存储方式做

posted @ 2021-11-25 14:49  老王教你学Linux  阅读(525)  评论(0编辑  收藏  举报