在Debian wheezy上使用solr-jetty

不好意思突然這樣問,先不說solr是什麼,我們先來安裝一個在jetty上運行solr的套件吧。(關於如何使用solr的方法,我以後再寫)
我們將使用Debian wheezy版本。在squeeze版本中並不存在,但在這個版本中如何呢?能夠正常使用嗎?

稍微補充一下,jetty是一個Servlet容器,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]?

由于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

如果能够看到这样的事情,也还可以。

安装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/目录下存在一个符号链接指向/usr/share/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"

噢,原来是没有Java编译器啊。

# tyep javac
-su: tyep: コマンドが見つかりません

我可能会安装OpenJDK-6-JDK。也许使用default-jdk也可以… 我对Java相关的东西并不太了解。总之,我需要确保能够使用javac。这可能也是依赖关系吧?

无论如何,在确认之后,您要重新启动一次吗?

# type javac
javac は /usr/bin/javac です
# /etc/init.d/jetty restart

通过这个链接可以看到非常平淡无奇的管理界面。由于可以无密码进入管理界面,因此最终我们需要想办法解决这个问题。

001.png

不管怎样,辛苦了。