EC2 で Selenium WebDriver を動かしたときのメモ

Ruby + Selenium WebDriver を使ったプログラムを EC2 でを動かせるようにしたときのメモです。

Amazon Linux AMI では firefox や X 関係がいろいろと面倒だったので、 今回は Debian のオフィシャル AMI を使いました。 他のディストリビューションの方がパッケージが充実してて良いかもしれません。 AMI もオフィシャルのものがそれぞれリリースされているようです。

Debian オフィシャル AMI

下記に AMI の ID が記載されているので、EC2のインスタンス作成のときに指定します。

Cloud/AmazonEC2Image - Debian Wiki

ユーザー名は "admin" です。

初期設定

タイムゾーンの設定と tmux のインストール

$ sudo apt-get update
$ sudo dpkg-reconfigure tzdata
$ sudo apt-get install tmux

VNC サーバーのインストール

VNC サーバーとウィンドウマネージャをインストールします。

$ sudo apt-get install tightvncserver openbox

VNC で接続するときのパスワードの設定が事前に必要です。

$ tightvncpasswd

~/.profile に下記の設定を追加します。

export DISPLAY=":0"

Xorg とかをインストールしなくても、VNCサーバーがXサーバーの役割を果たしてくれるようです。

firefox のインストール

firefox-esr の本体と、日本語フォント(IPAフォント)を入れます

$ sudo apt-get install firefox-esr-l10n-ja fonts-ipafont

いつのまにか Debian にも firefox が。

ローカルマシンから VNC で接続

VNC サーバーを起動します。(openbox も勝手に起動します)

$ tightvncserver ":0"

ローカルマシンから ssh のポートフォワーディング(ローカルの 5900 からリモートの 5900 へ)を開始します。

$ ssh -L 5900:localhost:5900 admin@XXXXXX cat

この状態で、 Mac であれば Finder > 移動 > サーバーへ接続 を選択したあと、 サーバーアドレスに

vnc://localhost:5900

を入れてやれば VNC による接続ができます。

Ruby と gem

ruby と必要な gem をインストールします。 gem のネイティブ部分のコンパイルで怒られるのでいくつか追加でライブラリ類をインストールしています。

$ sudo apt-get install ruby ruby-dev zlib1g-dev
$ sudo gem install selenium-webdriver nokogiri pry

参考にさせていただいたページ

いろんなOSのAMIについてまとめられています

OSごとのオフィシャルなAMIをまとめてみた | mooapp

タイムゾーンの設定

Debianでタイムゾーンを変更する方法 -- ぺけみさお