skip to content
Logo
Yurikago Blog
Table of Contents

ウェブアプリの品質を計測してくれるLighthouseをCentOS7環境のCLIで実行する方法をまとめました。

同時に、Chromiumのオプション --no-sandbox を指定せずにPuppeteerを実行する方法を検証しました。

検証環境

  • Docker Toolbox 18.09.3
  • VirtualBox 5.2.20
    • CentOS 7
    • Node.js 12.7.0
    • Puppeteer 1.19.0
    • Chromium 674921
    • Lighthouse 5.2.0

検証リポジトリ: https://github.com/cuavv/sandbox-lighthouse

Node.jsをインストール

Terminal window
% curl -sL https://rpm.nodesource.com/setup_12.x | bash -
% yum install -y nodejs

Node.js公式のバイナリディストリビューションがNodeSourceによって提供されています。

参考: https://nodejs.org/ja/download/package-manager/

Yarnをインストール

Terminal window
% curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo
% yum install -y yarn

参考: https://yarnpkg.com/en/docs/install#centos-stable

Puppeteerをインストール

Terminal window
% yarn global add puppeteer
Terminal window
% cat /usr/local/share/.config/yarn/global/node_modules/puppeteer/package.json | grep -e version -e chromium
"version": "1.19.0",
"chromium_revision": "674921"
:

不足しているモジュールをインストール

Terminal window
% yum install -y 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
% yum update nss -y

参考: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#chrome-headless-doesnt-launch-on-unix

Sandboxを設定

Terminal window
% cd /usr/local/share/.config/yarn/global/node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/
% chown root:root chrome_sandbox
% chmod 4755 chrome_sandbox
% cp -p chrome_sandbox /usr/local/sbin/chrome-devel-sandbox

[alternative] Setup setuid sandbox

参考: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#setting-up-chrome-linux-sandbox

Lighthouseをインストール

Terminal window
% yarn global add lighthouse
Terminal window
% yarn global list | grep lighthouse
info "lighthouse@5.2.0" has binaries:
- lighthouse

参考: https://github.com/GoogleChrome/lighthouse

Lighthouseを実行

Terminal window
# rootで実行するとエラーになるためユーザーを作成
% useradd test
% su - test
Terminal window
# 必要な環境変数を設定
% export CHROME_PATH=/usr/local/share/.config/yarn/global/node_modules/puppeteer/.local-chromium/linux-674921/chrome-linux/chrome
% export CROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox
Terminal window
# ChromeをHeadlessモードで実行
% lighthouse --output html --output-path ./report.html --throttling-method=provided --chrome-flags="--headless" https://www.google.com

補足

このコマンドを実行するとスマホ表示のスコアを計測します。PC表示のスコアを計測する場合はオプション --emulated-form-factor=none を追加してください。