はじめに
npmなど、あまり詳しくありません
環境
- MacOS High Sierra (10.13.4)
- Docker for Mac 18.06.1-ce-mac73 (26764)
Dockerの環境ですが、文字数の関係でこの質問には申し訳なりませんが省略させていただきます。
Dockerファイルなどの情報はこちらの質問に記載させて頂いておりますので、お手数ですが必要場合は御覧ください。
やりたいこと
nginx + php7(CakePHP3)の環境で、Browser Shotというライブラリを使い、
スクリーンショットを作成したいと考えています。
AWSのEC2インスタンスでは、下記手順で動作が確認できました。
bash
1curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash - 2sudo yum install -y nodejs 3 4sudo 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 -y 5sudo yum install -y php-gd 6sudo npm install --global --unsafe-perm puppeteer 7 8sudo chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium
しかし、このDocker(AmazonLinux2イメージ)で作成したコンテナで、
上記のコマンドを入れても下記のエラーになってしまいます。
Error: [Symfony\Component\Process\Exception\ProcessFailedException] The command "PATH=$PATH:/usr/local/bin NODE_PATH=`npm root -g` node '/var/www/html/vendor/spatie/browsershot/src/../bin/browser.js' '{"url":"file:///tmp/0764143001540283828/index.html","action":"screenshot","options":{"type":"png","path":"/var/www/html/tmp/15897868155bceddb4b4e09.png","args":[],"viewport":{"width":800,"height":600},"displayHeaderFooter":false,"fullPage":true}}'" failed. Exit Code: 1(General error) Working directory: /var/www/html/webroot Output: ================ Error Output: ================ ┌────────────────────────────────────────────────────────────┐ │ npm update check failed │ │ Try running with sudo or get access │ │ to the local update config store via │ │ sudo chown -R $USER:$(id -gn $USER) /var/lib/nginx/.config │ └────────────────────────────────────────────────────────────┘ Error: Failed to launch chrome! [1023/173709.483025:FATAL:zygote_host_impl_linux.cc(116)] No usable sandbox! Update your kernel or see https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the SUID sandbox. If you want to live dangerously and need an immediate workaround, you can try using --no-sandbox. #0 0x55e4c597bcac base::debug::StackTrace::StackTrace() #1 0x55e4c58f5670 logging::LogMessage::~LogMessage() #2 0x55e4c6df9050 service_manager::ZygoteHostImpl::Init() #3 0x55e4c55bed7e content::ContentMainRunnerImpl::Initialize() #4 0x55e4c55f23e8 service_manager::Main() #5 0x55e4c55bd5c1 content::ContentMain() #6 0x55e4c9a96ae8 headless::(anonymous namespace)::RunContentMain() #7 0x55e4c9a96b78 headless::HeadlessBrowserMain() #8 0x55e4c55ef9db headless::HeadlessShellMain() #9 0x55e4c38fd1ac ChromeMain #10 0x7fda8ac18f6a __libc_start_main #11 0x55e4c38fd02a _start Received signal 6 #0 0x55e4c597bcac base::debug::StackTrace::StackTrace() #1 0x55e4c597b821 base::debug::(anonymous namespace)::StackDumpSignalHandler() #2 0x7fda90dad1f0 <unknown> #3 0x7fda8ac2c6a0 __GI_raise #4 0x7fda8ac2dc81 __GI_abort #5 0x55e4c597a645 base::debug::BreakDebugger() #6 0x55e4c58f5ae8 logging::LogMessage::~LogMessage() #7 0x55e4c6df9050 service_manager::ZygoteHostImpl::Init() #8 0x55e4c55bed7e content::ContentMainRunnerImpl::Initialize() #9 0x55e4c55f23e8 service_manager::Main() #10 0x55e4c55bd5c1 content::ContentMain() #11 0x55e4c9a96ae8 headless::(anonymous namespace)::RunContentMain() #12 0x55e4c9a96b78 headless::HeadlessBrowserMain() #13 0x55e4c55ef9db headless::HeadlessShellMain() #14 0x55e4c38fd1ac ChromeMain #15 0x7fda8ac18f6a __libc_start_main #16 0x55e4c38fd02a _start r8: 0000000000000000 r9: 00007ffd09eec170 r10: 0000000000000008 r11: 0000000000000246 r12: 00007ffd09eec998 r13: 0000000000000161 r14: 00007ffd09eec9a0 r15: 00007ffd09eec9a8 di: 0000000000000002 si: 00007ffd09eec170 bp: 00007ffd09eec3c0 bx: 0000000000000006 dx: 0000000000000000 ax: 0000000000000000 cx: 00007fda8ac2c6a0 sp: 00007ffd09eec170 ip: 00007fda8ac2c6a0 efl: 0000000000000246 cgf: 002b000000000033 erf: 0000000000000000 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000 [end of stack trace] Calling _exit(1). Core file will not be generated. TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md at onClose (/usr/lib/node_modules/puppeteer/lib/Launcher.js:339:14) at Interface.helper.addEventListener (/usr/lib/node_modules/puppeteer/lib/Launcher.js:328:50) at Interface.emit (events.js:187:15) at Interface.close (readline.js:379:8) at Socket.onend (readline.js:157:10) at Socket.emit (events.js:187:15) at endReadableNT (_stream_readable.js:1094:12) at process._tickCallback (internal/process/next_tick.js:63:19)
-gでグローバルなインストールかと思い、下記に変更してもやはり駄目でした。
cd /var/www/html/ mkdir chromium cd ./chromium/ git clone https://github.com/scheib/chromium-latest-linux . ./update.sh cd ./latest/ chown root:root chrome_sandbox && chmod 4755 chrome_sandbox export CHROME_DEVEL_SANDBOX="/var/www/html/webroot/chromium/latest" cd /var/www/html export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install --save puppeteer export CHROME_DEVEL_SANDBOX="/var/www/html/webroot/chromium/latest/chrome_sandbox"
※こちらのissueを参考にしました
もしこの問題がわかる方がいらっしゃいましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー