LoginSignup
2
1

More than 5 years have passed since last update.

Nightmareをec2で頑張って動かした備忘録

Posted at

ブラウザ操作周りを自動化するのにNightmareでポチポチ作業してたんだけど
いざデプロイする際にec2で動かなくて詰んだ。

参考:
https://gist.github.com/dimkir/f4afde77366ff041b66d2252b45a13db

ほぼ上記のgistどおりで。ただgistもちょっと古いので動かすまでの備忘録

動かないこと確認

ともあれnightmareのインストール

npm i nightmare --save

nightmareのサンプルコードが付いてくるので実行

DEBUG=nightmare node node_modules/nightmare/example.js

以下のようなログが出て来る。electron依存の部分がやっぱり動かない。

...
you may not have electron installed correctly
...

足りないライブラリ確認

nightmareを入れた時に依存で入ったelectronディレクトリへ移動

cd node_modules/electron/dist
ldd electron | grep 'not found'

以下ログ。この辺りが足りないはず

        libgtk-x11-2.0.so.0 => not found
        libgdk-x11-2.0.so.0 => not found
        libatk-1.0.so.0 => not found
        libpangocairo-1.0.so.0 => not found
        libgdk_pixbuf-2.0.so.0 => not found
        libcairo.so.2 => not found
        libpango-1.0.so.0 => not found
        libXcursor.so.1 => not found
        libXdamage.so.1 => not found
        libXrandr.so.2 => not found
        libXfixes.so.3 => not found
        libXss.so.1 => not found
        libgconf-2.so.4 => not found
        libcups.so.2 => not found

ライブラリを追加して回る

参考のgistでツールが提供されてるので引っ張って来る

curl -o- https://gist.githubusercontent.com/dimkir/52054dfca586cadbd0ecd3ccf55f8b98/raw/2b5ebdf28f6a1aad760b5ab9cc581e8ad12a49f5/eltool.sh > ~/eltool.sh && chmod +x ~/eltool.sh 

eltool.shを使ってライブラリインストール

./eltool.sh dev-tools  # installs gcc compiler and some libs
./eltool.sh dist-deps  # we install prebuilt dependencies from Amazon Linux repos by using yum
./eltool.sh centos-deps # we install some  prebuil dependencies we can take from CentOS6 repo

# There's still a number of libraries which need to compile from source
./eltool.sh gconf-compile gconf-install 
./eltool.sh pixbuf-compile pixbuf-install
./eltool.sh gtk-compile  # this will take 3 minutes on t2.small instance
./eltool.sh gtk-install 

gistのままやるとgconf-compileでORBitのインストールうまくいかないので
ORBitだけ先に入れてやる

ORBit取得

wget ftp://195.220.108.108/linux/centos/6.9/os/x86_64/Packages/ORBit2-devel-2.14.17-6.el6_8.x86_64.rpm
wget ftp://195.220.108.108/linux/centos/6.9/os/x86_64/Packages/ORBit2-2.14.17-6.el6_8.x86_64.rpm

取って来たrpmをlocalinstall

yum localinstall ORBit2-2.14.17-6.el6_8.x86_64.rpm
yum localinstall ORBit2-devel-2.14.17-6.el6_8.x86_64.rpm

インストール確認

yum list installed | grep ORBit2
ORBit2.x86_64                        2.14.17-6.el6_8               installed
ORBit2-devel.x86_64                  2.14.17-6.el6_8               installed

再度gconfだけインストール

./eltool.sh gconf-compile gconf-install 

ライブラリをelectronのディレクトリにリンク貼る

libgconf-2.so.4とlibgtk-x11-2.0.so.0とlibgdk-x11-2.0.so.0とlibgdk_pixbuf-2.0.so.0はelectronのdistに持ってく必要があるので

ディレクトリ移動

cd node_modules/electron/dist

リンク貼りまくる

ln -PL /usr/local/lib/libgconf-2.so.4
ln -PL /usr/local/lib/libgtk-x11-2.0.so.0
ln -PL /usr/local/lib/libgdk-x11-2.0.so.0
ln -PL /usr/local/lib/libgdk_pixbuf-2.0.so.0 

確認

以下のコマンド叩いてemptyならライブラリの追加完了

ldd electron | grep 'not found'

Xvfbの追加

再度動作確認

DEBUG=nightmare node node_modules/nightmare/example.js

今度はxvfbが足りないって怒られる

...
you may need xvfb 
...

x-serverとかインストール

sudo yum -y install xorg-x11-server-Xorg xterm   # x-server
sudo yum -y install xorg-x11-drv-vesa xorg-x11-drv-evdev xorg-x11-drv-evdev-devel  # x-drivers
sudo yum -y install Xvfb

nightmareの動作確認

xvfbを起動しつつサンプルプログラムの実行

以下の形でxvfb-runにnodeのプログラム渡してあげる感じで。

xvfb-run -a --server-args="-screen 0 1366x768x24" node node_modules/nightmare/example.js

nightmareとawsでハマった人向け。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1