Selenium RC Server を Linux でデーモン化する
Java Service Wrapper で RC Server をデーモン化
最近、以下の記事に習って Hudson をデーモン化したのですが、Selenium RC Server でも同様にしたところ、うまくできたようなので手順として記録。
Java Service Wrapper を利用して、常に RC Server が起動している状態にします。インフラチームに監視対象に入れてもらえたりもするはず。
Java Service Wrapper のダウンロード
Java Service Wrapper の Community Edition で、自分の環境にあったものをダウンロード。
今回、自分は社内での環境に合わせて x86 の 64bit 版を。
http://wrapper.tanukisoftware.com/doc/english/download.jsp
selenium ユーザの追加 と Java Service Wrapper の展開
root ユーザで
$ useradd selenium -d /home/selenium $ wget http://wrapper.tanukisoftware.com/download/3.5.6/wrapper-linux-x86-64-3.5.6.tar.gz $ tar xzvf wrapper-linux-x86-64-3.5.6.tar.gz $ mv wrapper-linum-x86-64-3.5.6/* /home/selenium/. $ chown -R selenium:users /home/selenium/* $ su - selenium $ mkdir /home/selenium/tmp
Selenium RC Server の jar を配置
http://seleniumhq.org/download
から Selenium RC Server 1.0.3 の jar ファイルをダウンロードし、/home/selenium/lib/ の下に置く
wrapper.conf を設定
$ cp /home/selenium/src/conf/wrapper.conf.in /home/selenium/conf/wrapper.conf
/home/selenium/conf/wrapper.conf を設定、以下のような記述があるあたりを編集(それ以外の箇所について以下では省略)
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp // 2010/12/10 追記 wrapper.java.classpath.1=../lib/selenium-server.jar wrapper.java.classpath.2=../lib/wrapper.jar wrapper.java.additional.1=-Djava.io.tmpdir=../tmp wrapper.app.parameter.1=../lib/selenium-server.jar wrapper.app.parameter.2=-port wrapper.app.parameter.3=4444 wrapper.app.parameter.4=-firefoxProfileTemplate // <-- この2行は省略可。特定の Firefox Profile を使いたい場合は wrapper.app.parameter.5=/root/.mozilla/firefox/abcdefg.Selenium // <-- ここでその Profile が保存されているパスを指定 wrapper.console.title=Selenium RC Server wrapper.ping.timeout=300 wrapper.jvm_exit.timeout=60
デーモン化
root ユーザで
$ cp /home/selenium/src/bin/sh.script.in /etc/init.d/selenium $ chmod 755 /etc/init.d/selenium
/etc/init.d/selenium を設定
# Application APP_NAME="Selenium" APP_LONG_NAME="Selenium RC Server" # Wrapper WRAPPER_CMD="/home/selenium/bin/wrapper" WRAPPER_CONF="/home/selenium/conf/wrapper.conf" RUN_AS_USER=root
補足1
上記は、Firefox が /root/firefox にインストールされていて、 root ユーザで RC Server を起動する前提になってます。
もし selenium ユーザで起動するなら、下記の点が追加・修正必要と思われます。
補足2
上記は、 Selenium RC Server 1.0.3 で試しましたが、簡単に試したところ、 2.0 alpha 7 でも動きそうです。
- selenium-server-1.0.3.jar のかわりに、selenium-server-standalone-2.0a7 を /home/selenium/lib/ 以下に置く
- wrapper.conf で指定する jar をそちらに変更する
これだけで起動、動作しました。
ちなみに関係ないですが、 1.0.3 は open コマンドなどを通じて GET リクエストを投げるとき、 HEAD リクエストもセットで飛ばしてしまう不具合(?)があるようなのですが、2.0a7 ではそういうことはなさそうです。