标签归档:tomcat

ubuntu下整合tomcat和nginx

ngix的安装过程和简单配置前文已经说过了。而tomcat是可以随ubuntu直接整和的,这个也不是问题。重要的就是如何跳转请求。
分两步,第一步建立配置文件:

#!nginx (-) 
# proxy.conf 
proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
#proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

保存至/etc/nginx/conf.d/proxy.conf。各项配置的含义可以去查相关文档。

第二步设置跳转,在/etc/nginx/sites-avalable/defalut的server中加入如下的配置段。

location ~ .*.[jsp|do|action]$ { #所有jsp页面以及do/action请求均交由tomcat处理
    index index.jsp;
    proxy_pass http://localhost:8080; #转向tomcat处理
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #设定访问静态文件直接读取不经过tomcat
    expires      30d;
}
location ~ .*\.(js|css)?$ {
    expires      1h;
}

然后重启ngix,就可以访问了。
ngix会将所有jsp页面以及do/action请求均交由tomcat处理交给tomcat处理。这样可以实现二者的简单整合。

建立多个solr应用

通过观察本博客的其他文章,应该已经会做出一个简单的基于solr的搜索引擎了。但是,现实中,我们往往一个java服务器会服务于多个搜索的应用。

这个时候,我们应该怎么做呀?

也许你会说,solr的schema.xml中多配置一些字段,然后靠其中的一个type字段来区分不就可以了。这样当然是一种方法。但是,如果你是一个网站的所有者,你想你的数据的索引和其他网站的索引放到一起么?答案是否定的。这个时候我们就要思考一下了?

仔细观察就会发现,一个solr的服务主要由两个部分组成,一个对外的web入口,然后一个solr home,而这两者之间的关联,我们已经靠web.xml来实现了。并且用的是绝对路径。这也就意味着,我们的solr home可以写到服务器的任意位置。当然有个前提条件该目录下的data目录可写,因为要往里边写索引文件。再看前边的web入口,实际上他就是一个servlet应用,我们可以基于端口,或者基于application来实现将其分离开。分析完这些问题,我们应该就有解决方案了。

目前有两种基于端口,和基于应用程序。

我们可以让tomcat多监听几个端口,每个端口下放一个solr对外的入口。然后其中配置solr home到两个不同的目录。但是这样也许会有一个问题,也是作者目前遇到的问题。现实中一台服务器中运行着apache和tomcat。apache的端口已经够让人头疼了,还是不要让tomcat来掺火了。

所以我们选择第二种方案。

基于前几篇文章的配置方法。

将/var/lib/tomcat6/下的solr(前几篇文章已经提到如何实现),复制一下,比如说名字是test。

将其中目录下的conf下的solrconfig.xml中的${solr.data.dir:./solr/data},这一行换成
${solr.data.dir:./test/data}

然后将/var/lib/tomcat6/webapps/solr.war,复制一份,比如说名字是test.war。

然后,cd 到test中将其中的web.xml中的solr home 配置到/var/lib/tomcat6/test/

然后重新启动一下tomcat,访问一下http://127.0.0.1:8080/test/就出现一个一模一样的管理界面了。

tomcat限制IP访问

有的时候,你的tomcat需要只允许某个IP访问,比如以前说的solr,默认的应该是只允许特定的服务器访问的,否则整个接口都对外暴露出来就挂掉了。

其实设置方法很简单:

编辑tomcat6/conf/下的server.xml,在其中的engine中加入几行:

<Valve className=”org.apache.catalina.valves.RemoteAddrValve” deny=”192.168.1.*”/>

还有一种对域名的限制:

<Valve className=”org.apache.catalina.valves.RemoteHostValve” allow=”*.mycompany.com,*.a.com”/>