■ なぜApache?
ManifoldCFの環境をEC2上に作っていて、クロールしたデータをローカルのSolrに入れようとした場合に、
外から見たそれぞれの管理画面は、
– ManifoldCFが8345ポート
– Solrが8393ポート
ってことで、それなら手前にApache置いてURL的にもキレイな感じにしたいよね、と。
■ なぜmod_proxy?
ManifoldCFもSolrもデフォルトのexampleなアレだとJettyを使ってるわけなのですが、
ちょっとググっていくと、http://wiki.eclipse.org/Jetty/Tutorial/Apacheってとこで、mod_proxy推しですね、と。
The mod_proxy modules are superior in features,
maintained with apache httpd, support HTTP and AJP and has a rich load balancer.
We highly recommend using mod_proxy when using Jetty with apache.
んま、といいつつも、AJPとかバランサーとかの設定は今回は端折って、チャチャっとやります。
■ EC2(Ubuntu)にApacheとmod_proxyをインストール
Apacheは sudo apt-get install apache2 で入れておいたとして、
– ロードするモジュールが書いてある設定ファイルをシンボリックリンクで。
$ cd /etc/apache2/mods-enabled/ $ sudo ln -s ../mods-available/proxy.load proxy.load $ sudo ln -s ../mods-available/proxy_http.load proxy_http.load
– proxy.confで設定できるように。
$ sudo a2enmod proxy Enabling config file proxy.conf. To activate the new configuration, you need to run: service apache2 restart
– 設定入れてAapche再起動してモジュールがロードされてることを確認
$ sudo vim /etc/apache2/mods-enabled/proxy.conf <IfModule mod_proxy.c> ProxyRequests Off <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> # searchだったらSolr ProxyPass /search/ http://localhost:8983/ ProxyPassReverse /search/ http://localhost:8983/ # crawlだったらManifoldCF ProxyPass /crawl/ http://localhost:8345/ ProxyPassReverse /crawl/ http://localhost:8345/ </IfModule> $ sudo service apache2 restart * Restarting web server apache2 [ OK ] $ apachectl -M | grep proxy proxy_module (shared) proxy_http_module (shared)
■ Solrのインストール
Java入ってなかったので入れて、
$ java -version The program 'java' can be found in the following packages: * default-jre * gcj-4.6-jre-headless * gcj-4.7-jre-headless * openjdk-7-jre-headless * openjdk-6-jre-headless Try: sudo apt-get install <selected package> $ sudo apt-get update $ sudo apt-get install openjdk-7-jre-headless $ java -version java version "1.7.0_25" OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3) OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
Solrをダウンロードしてきて展開してstart.jar叩くだけの簡単なお仕事。
$ wget http://download.nextag.com/apache/lucene/solr/4.6.0/solr-4.6.0.tgz $ tar xvf solr-4.6.0.tgz $ cd solr-4.6.0/example/ $ java -jar start.jar
■ 画面から見てみるとSolrが何か変(EC2インスタンスをstop/startしたので画像のURL叩いてもアレなので悪しからず)
なんかクルクル回ったまんま何も出てこないし、、
明らかにCSS読み込めてないし、、
apacheのログみたら↓とか言ってるし、、
File does not exist: /var/www/solr
■ 解決策
ググってたら↓このAnswerが神でした。。
http://serverfault.com/questions/547010/solr-reverse-proxy-apache2
掻い摘んで言うと、
– 絶対パスになってるから静的コンテンツ系が読み込めてない
– proxy.confに 『ProxyPass /solr http://localhost:8983/solr』 を追加しなはれ
上記の設定入れたらイイ感じになりました!(んま、なんかちょっとアレですけど。。)
Really helpful! Thx!! #Solr の管理画面の手前にApache立てたら動かなくなっちゃったんだけどパスの指定がアレだった件ヽ(´▽`)ノ / Answer:solr reverse proxy Apache2 http://t.co/Prsoaf8Vqz
— eiji shinohara (@shinodogg) December 27, 2013
ということで、これからManifoldCFでクロールしてSolrにデータを投入していこうと思います。
もちろんManifoldCFの参考図書は↓こちらです。
技術評論社
売り上げランキング: 6,873
コメント