2013-07-23 63 views
0

我正在使用apache-tomcat。我的solr在我的localhost上工作正常。現在我想把它放在網上。在apache-tomcat中,在我的bin文件夾中,我放了我的solr目錄。但是在線,我沒有任何bin文件夾。所以任何人都可以告訴我如何配置solr在我的網站主機dir.thanks提前如何在我的網上配置solr?

回答

2

首先你要保護你的整個tomcat網絡管理員gui要求認證。首先,在/etc/tomcat6/tomcat-users.xml

<tomcat-users> 
    <role rolename="admin"/> 
    <role rolename="manager"/> 
    <role rolename="proxyUsers"/> 
    <user username="jorno" password="XXXXX" roles="admin,manager,proxyUsers"/> 
    <user username="proxyUser" password="XXXXXX" roles="proxyUsers"/> 
</tomcat-users> 

新用戶在文件中添加安全約束/etc/tomcat6/web.xml

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name> 
     Solr authenticated application 
     </web-resource-name> 

     <url-pattern>/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>solrUsers</role-name> 
    </auth-constraint> 
    </security-constraint> 
    <login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>Basic Authentication</realm-name> 
    </login-config> 
    <security-role> 
    <description>solr users</description> 
    </security-role> 

記住要重新啓動Tomcat

/etc/init.d/tomcat6 restart 

訪問您的tomcat solr應用程序web gui並檢查驗證是否有效。

現在我們在apache中創建實際的代理。首先,創建一個簡單的網站。 PHP是必需的。下面的例子虛擬主機將做的伎倆。注意重寫。

q.example.com - Solr的搜索引擎代理

<VirtualHost *> 
     ServerAdmin [email protected] 
     DocumentRoot /var/www/q.example.com 
     ServerName q.example.com 
     ServerAlias solr.example.com 

     AddDefaultCharset UTF-8 

     ErrorLog /var/log/apache2/error.log 

     # Possible values include: debug, info, notice, warn, error, crit, 
     # alert, emerg. 
     LogLevel warn 

     CustomLog /var/log/apache2/access.log combined 
     ServerSignature On 

     # REWRITES 
     RewriteEngine on 
     # Debug: 
     # RewriteLog /tmp/rwlog 
     # RewriteLogLevel 9 

     RewriteRule ^/([^/]+)/?     /index.php     [NC,L] 

</VirtualHost> 

記住重裝阿帕奇

/etc/init.d/apache2 reload 

現在創建的站點的根目錄的index.php文件。根據您更新索引的頻率,您可能希望讓用戶緩存代理的內容。我在這裏設置了5分鐘。

<?php 

// Avvoid too long client cache 
// calc an offset of 5 minutes 
$offset = 60 * 5; 
// calc the string in GMT not localtime and add the offset 
$expire = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT"; 
//output the HTTP header 
Header($expire); 

// Write the result from solr 
Echo file_get_contents('http://proxyUser:[password]@127.0.0.1:8080/solr/select?'.$_SERVER["QUERY_STRING"]); 

?> 

就是這樣。您現在可以測試像這樣

代理

http://q.example.com/select?q=%3A &縮進=上