いきなりなんですが、solrが何ぞっていうのはちょっと置いておいて、ここではsolrをjettyの上で動かすパッケージをインストールしてみます。(solrの使い方とかはまたいつか書きたい)
利用するのはDebian wheezyを利用します。squeezeまでは存在していませんでしたが、このバージョンではどうでしょうか。まともに使えるんでしょーか?
(ちょっと補足すると、jettyはサーブレットコンテナ、solrはjavaのwebアプリと考えてとりあえず良いかと思います)
solrをインストール
いきなりsolr-jettyをインストールしてもよいのでしょうが、まずはjetty単体をインストールしてみます。
# apt-get install jetty
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
apache2-utils ca-certificates ca-certificates-java dbus default-jre-headless
icedtea-6-jre-cacao icedtea-6-jre-jamvm java-common jsvc libapr1 libaprutil1
libavahi-client3 libavahi-common-data libavahi-common3 libcap2
libcommons-daemon-java libcups2 libdbus-1-3 libjetty-java libjpeg8
liblcms2-2 libnspr4 libnss3 libnss3-1d libpcsclite1 libservlet2.5-java
libslf4j-java libsystemd-login0 openjdk-6-jre-headless openjdk-6-jre-lib
openssl tzdata-java
提案パッケージ:
dbus-x11 default-jre equivs libjetty-extra-java libjetty-extra
libjetty-java-doc java-virtual-machine cups-common liblcms2-utils pcscd
libcommons-logging-java liblog4j1.2-java libnss-mdns sun-java6-fonts
ttf-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho ttf-wqy-microhei
ttf-wqy-zenhei ttf-indic-fonts
以下のパッケージが新たにインストールされます:
apache2-utils ca-certificates ca-certificates-java dbus default-jre-headless
icedtea-6-jre-cacao icedtea-6-jre-jamvm java-common jetty jsvc libapr1
libaprutil1 libavahi-client3 libavahi-common-data libavahi-common3 libcap2
libcommons-daemon-java libcups2 libdbus-1-3 libjetty-java libjpeg8
liblcms2-2 libnspr4 libnss3 libnss3-1d libpcsclite1 libservlet2.5-java
libslf4j-java libsystemd-login0 openjdk-6-jre-headless openjdk-6-jre-lib
openssl tzdata-java
アップグレード: 0 個、新規インストール: 33 個、削除: 0 個、保留: 0 個。
46.7 MB のアーカイブを取得する必要があります。
この操作後に追加で 71.5 MB のディスク容量が消費されます。
続行しますか [Y/n]?
素のwheezyなんでいろいろ入ってきてしまうわけなのですが、Debian wheezyではjetty 6.1.26というバージョンがインストールされます。これはオフィシャルドキュメントにあるようにSolr 3.5.0を利用するのに適しているバージョンという事になります。
まずはjettyの構成を見てみる事にしましょう。
$ dpkg -L jetty
/.
/etc
/etc/jetty
/etc/jetty/contexts
/etc/jetty/contexts/javadoc.xml
/etc/jetty/contexts/README.TXT
/etc/jetty/jdbcRealm.properties
/etc/jetty/jetty-ajp.xml
/etc/jetty/jetty-bio.xml
/etc/jetty/jetty-debug.xml
/etc/jetty/jetty-extra.conf
/etc/jetty/jetty-jmx.xml
/etc/jetty/jetty-jsp.xml
/etc/jetty/jetty-logging.xml
/etc/jetty/jetty-plus.xml
/etc/jetty/jetty-rewrite.xml
/etc/jetty/jetty-setuid.xml
/etc/jetty/jetty-ssl.xml
/etc/jetty/jetty-sslengine.xml
/etc/jetty/jetty-stats.xml
/etc/jetty/jetty-xinetd.xml
/etc/jetty/jetty.conf
/etc/jetty/jetty.xml
/etc/jetty/keystore
/etc/jetty/realm.properties
/etc/jetty/start.config
/etc/jetty/webdefault.xml
/etc/jetty/jetty-shared-webapps.xml
/etc/cron.daily
/etc/cron.daily/jetty
/etc/default
/etc/default/jetty
/etc/init.d
/etc/init.d/jetty
/usr
/usr/share
/usr/share/jetty
/usr/share/jetty/resources
/usr/share/jetty/resources/log4j.properties
/usr/share/doc
/usr/share/doc/jetty
/usr/share/doc/jetty/copyright
/usr/share/doc/jetty/LICENSES
/usr/share/doc/jetty/LICENSES/NOTICE.txt
/usr/share/doc/jetty/LICENSES/cla-dexter.txt.gz
/usr/share/doc/jetty/LICENSES/cla-dyu.txt.gz
/usr/share/doc/jetty/LICENSES/cla-gnodet.txt.gz
/usr/share/doc/jetty/LICENSES/cla-gregw.txt.gz
/usr/share/doc/jetty/LICENSES/cla-janb.txt.gz
/usr/share/doc/jetty/LICENSES/cla-jesse.txt.gz
/usr/share/doc/jetty/LICENSES/cla-jfarcand.txt.gz
/usr/share/doc/jetty/LICENSES/cla-jocsch.txt.gz
/usr/share/doc/jetty/LICENSES/cla-jstrachan.txt.gz
/usr/share/doc/jetty/LICENSES/cla-jules.txt.gz
/usr/share/doc/jetty/LICENSES/cla-jvz.txt.gz
/usr/share/doc/jetty/LICENSES/cla-lorban.txt.gz
/usr/share/doc/jetty/LICENSES/cla-mgorovoy.txt.gz
/usr/share/doc/jetty/LICENSES/cla-mpurland.txt.gz
/usr/share/doc/jetty/LICENSES/cla-ngonzalez.txt.gz
/usr/share/doc/jetty/LICENSES/cla-potterru.txt.gz
/usr/share/doc/jetty/LICENSES/cla-sbordet.txt.gz
/usr/share/doc/jetty/LICENSES/cla-tbecker.txt.gz
/usr/share/doc/jetty/LICENSES/cla-template.txt.gz
/usr/share/doc/jetty/LICENSES/cla-tvernum.txt.gz
/usr/share/doc/jetty/LICENSES/ccla-exist.pdf.gz
/usr/share/doc/jetty/LICENSES/ccla-sabre.pdf.gz
/usr/share/doc/jetty/LICENSES/ccla-simulalabs.txt.gz
/usr/share/doc/jetty/LICENSES/ccla-template.txt.gz
/usr/share/doc/jetty/README.Debian
/usr/share/doc/jetty/changelog.Debian.gz
/usr/share/doc/jetty/NEWS.Debian.gz
/usr/share/doc/jetty/changelog.gz
/usr/share/doc/jetty/README.txt.gz
/var
/var/lib
/var/lib/jetty
/var/lib/jetty/webapps
/var/lib/jetty/webapps/README.TXT
/var/lib/jetty/webapps/root
/var/lib/jetty/webapps/root/index.html
/var/lib/jetty/webapps/root/jetty_banner.gif
/var/log
/var/log/jetty
/var/cache
/var/cache/jetty
/usr/share/jetty/javadoc
/usr/share/jetty/contexts
/usr/share/jetty/etc
/usr/share/jetty/logs
/usr/share/jetty/webapps
ふむ。。。とりあえず起動はしていないようです。
# netstat -tlpn
稼働中のインターネット接続 (サーバのみ)
Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1896/sshd
tcp6 0 0 :::22 :::* LISTEN
起動させてみます。
# /etc/init.d/jetty start
[....] Not starting jetty - edit /etc/default/jetty and change NO_START to be 0 [FAILomment it out). ... failed!
というわけなので**/etc/default/jetty**を編集する、と
# change to 0 to allow Jetty to start
# ↓ 1を0にする
NO_START=0
で
# /etc/init.d/jetty start
[....] Starting Jetty servlet engine.: jetty[....] Jetty servlet engine started,[ ok hable on http://{$your-host}:8080/.: jetty.
みたいに起動してきます。8080を既に利用している場合はコケちゃいますから先程のファイルでポートを変更してみてください。
、が、しかし
# netstat -tlpn
稼働中のインターネット接続 (サーバのみ)
Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1896/sshd
tcp6 0 0 127.0.0.1:8080 :::* LISTEN 6922/jsvc.exec
tcp6 0 0 :::22 :::* LISTEN 1896/sshd
このようにローカルバインドになっているんで、とりあえずテストする為にどのホストからも接続できるようにしてみます。これは先程の**/etc/default/jetty**でこんな感じ定義しときます。
# Listen to connections from this network host
# Use 0.0.0.0 as host to accept all connections.
# Uncomment to restrict access to localhost
#JETTY_HOST=$(uname -n)
JETTY_HOST=0.0.0.0
で
# /etc/init.d/jetty restart
<略>
# netstat -tlpn
稼働中のインターネット接続 (サーバのみ)
Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1896/sshd
tcp6 0 0 :::8080 :::* LISTEN 7061/jsvc.exec
tcp6 0 0 :::22 :::* LISTEN 1896/sshd
こんな感じでしょう。該当ホストの8080ポートにhttp(というかブラウザーなど)でアクセスして
Welcome to Jetty 6 on Debian
とか見られれば一応okです。
solr-jettyを入れる
これもaptでいけるはずなんですが
# apt-get install solr-jetty
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
ant ant-optional curl fontconfig hicolor-icon-theme icedtea-netx
icedtea-netx-common javascript-common libapache-mime4j-java
libapache-pom-java libasound2 libasyncns0 libatk-wrapper-java
libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data libavalon-framework-java
libbcel-java libcairo2 libclass-isa-perl libcommons-beanutils-java
libcommons-codec-java libcommons-collections3-java libcommons-compress-java
libcommons-dbcp-java libcommons-digester-java libcommons-fileupload-java
libcommons-httpclient-java libcommons-io-java libcommons-lang-java
libcommons-logging-java libcommons-parent-java libcommons-pool-java libcurl3
libdatrie1 libecj-java libexcalibur-logkit-java libffi5 libflac8
libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgeronimo-jta-1.1-spec-java
libgeronimo-stax-1.2-spec-java libgif4 libglib2.0-0 libglib2.0-data
libgnuinet-java libgnujaf-java libgnumail-java libgtk2.0-0 libgtk2.0-bin
libgtk2.0-common libguava-java libhttpclient-java libhttpcore-java
libhttpmime-java libice6 libicu4j-4.4-java libjasper1 libjaxp1.3-java
libjbig0 libjetty-extra libjetty-extra-java libjs-jquery libjson0
libjsr305-java libknopflerfish-osgi-framework-java libldap-2.4-2
liblog4j1.2-java liblucene3-contrib-java liblucene3-java libmsv-java
libmx4j-java libogg0 libpango1.0-0 libpcre3 libpixman-1-0 libpng12-0
libportlet-api-2.0-spec-java libpulse0 libregexp-java
librelaxng-datatype-java librtmp0 libsasl2-2 libsasl2-modules libsm6
libsndfile1 libsolr-java libssh2-1 libstax-java libstax2-api-java
libswitch-perl libthai-data libthai0 libtiff4 libtomcat6-java libvorbis0a
libvorbisenc2 libwoodstox-java libx11-xcb1 libxcb-render0 libxcb-shm0
libxcomposite1 libxcursor1 libxdamage1 libxerces2-java libxfixes3 libxft2
libxi6 libxinerama1 libxml-commons-external-java
libxml-commons-resolver1.1-java libxml2 libxrandr2 libxrender1 libxtst6
libxz-java openjdk-6-jre perl perl-modules sgml-base shared-mime-info
solr-common ttf-dejavu-extra wwwconfig-common xml-core
提案パッケージ:
default-jdk java-compiler java-sdk ant-gcj ant-doc libbsf-java liboro-java
libxalan2-java junit jython antlr libjdepend-java libcommons-net-java
libjsch-java javacc ant-optional-gcj apache2 httpd libasound2-plugins
libavalon-framework-java-doc libbcel-java-doc libcommons-beanutils-java-doc
libcommons-collections3-java-doc libcommons-dbcp-java-doc
libcommons-digester-java-doc libcommons-httpclient-java-doc
libcommons-io-java-doc libcommons-lang-java-doc libcommons-logging-java-doc
ecj libecj-java-gcj libgeronimo-jta-java-doc libgnumail-java-doc
librsvg2-common gvfs libjasper-runtime libjaxp1.3-java-gcj
libjsr305-java-doc libknopflerfish-osgi-java-doc liblog4j1.2-java-doc
libjboss-jmx-java liblucene3-java-doc junit4 libhessian-java ttf-baekmuk
ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp ttf-arphic-gkai00mp
ttf-arphic-bkai00mp pulseaudio libsasl2-modules-otp libsasl2-modules-ldap
libsasl2-modules-sql libsasl2-modules-gssapi-mit
libsasl2-modules-gssapi-heimdal libeasymock-java libjetty-extras-java
libsolr-java-doc libstax-java-doc tomcat6 libxerces2-java-doc
libxerces2-java-gcj libxml-commons-resolver1.1-java-doc icedtea-plugin
perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl make
libpod-plainer-perl sgml-base-doc libmysql-java mysql-client
postgresql-client debhelper
以下のパッケージが新たにインストールされます:
ant ant-optional curl fontconfig hicolor-icon-theme icedtea-netx
icedtea-netx-common javascript-common libapache-mime4j-java
libapache-pom-java libasound2 libasyncns0 libatk-wrapper-java
libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data libavalon-framework-java
libbcel-java libcairo2 libclass-isa-perl libcommons-beanutils-java
libcommons-codec-java libcommons-collections3-java libcommons-compress-java
libcommons-dbcp-java libcommons-digester-java libcommons-fileupload-java
libcommons-httpclient-java libcommons-io-java libcommons-lang-java
libcommons-logging-java libcommons-parent-java libcommons-pool-java libcurl3
libdatrie1 libecj-java libexcalibur-logkit-java libffi5 libflac8
libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgeronimo-jta-1.1-spec-java
libgeronimo-stax-1.2-spec-java libgif4 libglib2.0-0 libglib2.0-data
libgnuinet-java libgnujaf-java libgnumail-java libgtk2.0-0 libgtk2.0-bin
libgtk2.0-common libguava-java libhttpclient-java libhttpcore-java
libhttpmime-java libice6 libicu4j-4.4-java libjasper1 libjaxp1.3-java
libjbig0 libjetty-extra libjetty-extra-java libjs-jquery libjson0
libjsr305-java libknopflerfish-osgi-framework-java libldap-2.4-2
liblog4j1.2-java liblucene3-contrib-java liblucene3-java libmsv-java
libmx4j-java libogg0 libpango1.0-0 libpcre3 libpixman-1-0 libpng12-0
libportlet-api-2.0-spec-java libpulse0 libregexp-java
librelaxng-datatype-java librtmp0 libsasl2-2 libsasl2-modules libsm6
libsndfile1 libsolr-java libssh2-1 libstax-java libstax2-api-java
libswitch-perl libthai-data libthai0 libtiff4 libtomcat6-java libvorbis0a
libvorbisenc2 libwoodstox-java libx11-xcb1 libxcb-render0 libxcb-shm0
libxcomposite1 libxcursor1 libxdamage1 libxerces2-java libxfixes3 libxft2
libxi6 libxinerama1 libxml-commons-external-java
libxml-commons-resolver1.1-java libxml2 libxrandr2 libxrender1 libxtst6
libxz-java openjdk-6-jre perl perl-modules sgml-base shared-mime-info
solr-common solr-jetty ttf-dejavu-extra wwwconfig-common xml-core
アップグレード: 0 個、新規インストール: 127 個、削除: 0 個、保留: 0 個。
69.7 MB のアーカイブを取得する必要があります。
この操作後に追加で 163 MB のディスク容量が消費されます。
続行しますか [Y/n]?
どん引きみたいな依存状態ですが、こんなものといえばこんなものか。まあ、いっときますか。
インストールの間
solr-jetty (3.6.0+dfsg-1+deb7u1) を設定しています ...
[....] Stopping Jetty servlet engine (was reachable on http://{$your-host}:8080[ ok jetty . .[....] Jetty servlet engine stopped.: jetty.
[....] Starting Jetty servlet engine.: jetty Rotate logs[....] Jetty servlet eng[ ok tarted, reachable on http://{$your-host}:8080/.: jetty.
とまあこんな感じ再起動がかかるわけですが、どうしたらいいかわからんというわけなので、入ったものを確認します。
とりあえずsolr-jettyをdpkg -L してみますと
# dpkg -L solr-jetty
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/solr-jetty
/usr/share/doc/solr-jetty/changelog.Debian.gz
/usr/share/doc/solr-jetty/copyright
/usr/share/solr
/usr/share/solr/web
/usr/share/solr/web/WEB-INF
/usr/share/solr/web/WEB-INF/jetty-web.xml
/var
/var/lib
/var/lib/jetty
/var/lib/jetty/webapps
/var/lib/jetty/webapps/solr
なるほど、webappsの下にsolrが配置されております。
、
、
が
# ls -l /var/lib/jetty/webapps/
合計 8
-rw-r--r-- 1 jetty adm 697 10月 30 2006 README.TXT
drwxr-xr-x 2 jetty adm 4096 11月 8 01:38 root
lrwxrwxrwx 1 root root 22 6月 17 02:51 solr -> /usr/share/solr/webapp
/var/lib/jetty/webapps/を見るとsolrがシンボリックリンクになっており、リンク先の/usr/share/solrを見てみると...
# ls -l /usr/share/solr/
合計 8
drwxr-xr-x 2 root root 4096 11月 8 02:11 bin
lrwxrwxrwx 1 root root 14 6月 17 02:51 conf -> /etc/solr/conf
lrwxrwxrwx 1 root root 18 6月 17 02:51 data -> /var/lib/solr/data
lrwxrwxrwx 1 root root 13 6月 17 02:51 logs -> /var/log/solr
lrwxrwxrwx 1 root root 3 6月 17 02:51 scripts -> bin
lrwxrwxrwx 1 root root 18 6月 17 02:51 solr.xml -> /etc/solr/solr.xml
drwxr-xr-x 4 root root 4096 11月 8 02:11 web
/usr/share/solr/webappが見つからんというオチが発生します。。このヘンはダメですね。直します。
# rm /var/lib/jetty/webapps/solr
# ln -s /usr/share/solr/web /var/lib/jetty/webapps/solr
# /etc/init.d/jetty restart
さて、これでhttp://your-host:8080/solrとかにアクセスしみると...
HTTP ERROR 500
Problem accessing /solr/. Reason:
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-6-openjdk-amd64/jre"
Caused by:
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-6-openjdk-amd64/jre"
お、おう。javacが無いんだって。
# tyep javac
-su: tyep: コマンドが見つかりません
徐に、openjdk-6-jdkを、インストールしまうす。default-jdkでもいいのかもしれぬ... java関連はよくわからん所も多いです。とりあえずjavacできるようにする事が必要なのでしょう。この辺もおそらく依存落ちか?
ともあれ、確認後、一度再起動しときますか
# type javac
javac は /usr/bin/javac です
# /etc/init.d/jetty restart
これで殺風景な管理画面へのリンクが見えます。管理画面はノーパスで入れるので、これは最終的には何とかする必要があるでしょう。
ともあれ、おつかれ様でした。