在与tomcat

时间:2016-04-07 19:06:35

标签: tomcat solr lucene port

我们的Web应用程序托管在端口8080(UNIX服务器)上的tomcat服务器上。

https://example.com/myApp

我们希望在我们的项目中实施SOLR搜索。 SOLR建议我们不应再将SOLR部署为Web应用程序。请参考以下链接。 https://wiki.apache.org/solr/WhyNoWar

默认的SOLR安装(我认为使用jetty?)将它部署在我们指定的任何端口上。

我们不希望在我们的服务器上打开8080以外的任何端口,因为我们定位的大多数用户都阻止了除默认端口之外的所有端口。

有没有办法托管SOLR而不在tomcat中部署它并仍然托管它? https://example.com/solr

2 个答案:

答案 0 :(得分:2)

最好的办法是使用代理,例如nginx。以下是nginx配置的http块如何查找此案例的示例:

http {  
    upstream tomcat {
      server localhost:8081;
    }

    upstream solr {
      server localhost:8082;
    }

    server {
        listen       *:8080;
        server_name  my.server.com;
        location / {
            proxy_pass http://tomcat;
        }

        location /solr/ {
            proxy_pass http://solr;
        }
    }
}

答案 1 :(得分:1)

Solr仍然是一个网络应用。他们建议不要在另一个servlet容器中使用它,因为它们没有被推荐和测试。

他们正在提供经过全面测试的系统,并且不希望其他人(开发人员)花时间用其他容器进行测试。

我使用了solr 3.4版本并将其部署在端口8080上的tomcat服务器中。 我的应用程序部署在8080端口的另一个tomcat,并且在另一台机器上。

所以没有关于端口的歧义,因为两个tomcats都在不同的服务器上。

我已经创建了solr war并在tomcat中部署了它。并且该服务器的只有8080端口是打开的,只能由我们的应用程序访问。

我不确定solr版本5 ...即。是否可以在jetty以外的其他容器中部署...但我认为它可以部署在tomcat ...你需要尝试相同...

其他的事情是,不要在同一个容器或单个容器中进行应用程序战争和solr战争。原因是如果其中一个应用程序发生故障,一切都将失效。

如果solr发生故障,那么应用程序可能会关闭,这对应用程序来说并不好。