みなさん仕事でPhantomJS使っていますか?僕は使っていません。でもそろそろ使ってみたいので、仕事でよく使うCentOSにPhantomJSをインストールする方法を調べてみました。
今回はVirtualBoxes – Free VirtualBox® Imagesで公開されているCentOS-6.2のイメージを利用します。
PhantomJSをインストールする前に、あらかじめ次のコマンドでライブラリを更新と開発ツールのインストールを行います。依存関係などが面倒なので、開発ツールは全部インストールします。
sudo yum upgrade
sudo yum groupinstall 'Development tools' 'Additional Development'
最近のPhantomJSのインストール方法はCentOS/RHELの項が追加されていす。
公式サイトのすすめに従い、phantomjs-rpmsを使ってインストールしたいと思います。
cd /var/tmp
git clone git://github.com/jbraeuer/phantomjs-rpms.git
cd phantomjs-rpms
fetch-qt-rpmsコマンドで必要なrpmをダウンロードしてインストールします。
./fetch-qt-rpms # Qt-4.7をダウンロード
sudo yum remove qt-x11 qt phonon perl-XML-SAX-Base # CentOS6.2用のQt(4.6.2)を削除
sudo yum install RPMS/el/6/i386/* # Qt-4.7をインストール
まず、ソースコードを取得します。今回はfetch-phantomjs-branchコマンドを使わずに取得します。
(現在のバージョンのphantomjs-rpmsではドキュメントの説明通り’./fetch-phantomjs-branch 1.4.1’を実行すると1.4.1ではなく1.5.0(development)のアーカイブを取得してしまうため)
# 本来ならこんな努力必要無いはず、、、
wget https://github.com/ariya/phantomjs/tarball/1.4.1 -O ariya-phantomjs-b60f101.tar.gz --no-check-certificate
tar zxf ariya-phantomjs-b60f101.tar.gz
mv ariya-phantomjs-b60f101 phantomjs-1.4.1
tar cf phantomjs-1.4.1-source.tar.gz phantomjs-1.4.1
mv phantomjs-1.4.1-source.tar.gz SOURCES/
rm -rf phantomjs-1.4.1
rm -rf ariya-phantomjs-b60f101.tar.gz
苦労の末アーカイブを取得しました。PhantomJSをビルドしてインストールします。
./rpm SPECS/phantomjs-1.4.1.spec
sudo yum install RPMS/i686/phantomjs*
Headless WebkitなPhantomJSですが、現在のバージョンでは動作にXサーバが必須のようです。FAQではxvfbを利用する方法が紹介されています。
phantomjs-rpmsにはxvfbの為の二つのスクリプトが含まれています。
xvfb-run.shはxvfbを起動した上でコマンドを実行するスクリプトです。xvfb-run.shを利用すると次の様にPhantomJSを起動する事が出来ます。
./xvfb-run.sh phantomjs --version
xvfb.initはxvfbをサービスとして起動するためのスクリプトです。start-stop-daemonというdebian由来のツールに依存しています。次のエントリを参考にしてインストールしましょう。
xvfb.initをインストールます。
sudo cp SOURCES/xvfb.init /etc/init.d/xvfb
sudo chmod 755 /etc/init.d/xvfb
sudo chkconfig --add xvfb
sudo chkconfig xvfb on
xvfbをサービスとして起動します。
sudo /etc/init.d/xvfb start
この場合、次のコマンドでPhantomJSを実行する事が出来ます。
DISPLAY=:99 phantomjs --version
CentOSにRPMを使ってPhantomJSをインストールしました。これでPhantomJSを採用する場合の障壁が一つ減りましたね。いつPhantomJSでWeb魚拓を作成する案件が来ても大丈夫そうです。