zoukankan      html  css  js  c++  java
  • 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存储方式做

    技术是没有终点的,也是学不完的,最重要的是活着、不秃。 学习看书还是看视频,都不重要,重要的是学会,欢迎关注,我们的目标---不秃。 ---更多运维开发交流及软件包免费获取请加V: Linuxlaowang
  • 相关阅读:
    谈谈django里的Contex和RequestContext---向模板里添加全局变量
    Django如何重设Admin密码
    javascript的闭包
    javascript的this用法
    阮一峰---javascript系列
    Javascript继承机制总结 [转]
    chrome浏览器开发者工具使用教程[转]
    WAMP设置默认访问目录
    js 去掉空格.回车.换行
    网站服务器上载目录
  • 原文地址:https://www.cnblogs.com/wangyongqiang/p/15602670.html
Copyright © 2011-2022 走看看