0
点赞
收藏
分享

微信扫一扫

项目实训 : Solr8 在linux服务器的部署与所遇到的问题记录

西红柿上校 2022-04-14 阅读 52

title: Solr8 在linux服务器的部署与所遇到的问题记录
tags: [Sdudoc, Tomcat, Solr, Liunx, Sdudoc]
categories: 技术


Tomcat配置

  1. 在 linux 的 /usr/local 目录下新建一个 solr 目录

  2. 下载最新的Tomcat到 Linux 系统的 /usr/local/solr下,下载链接:tomcat

    [root@localhost solr]# ls
    apache-tomcat-8.5.75.tar.gz
    

    然后解压压缩包

    tar -zxvf apache-tomcat-8.5.75.tar.gz 
    

    将解压后生成的文件夹名称改为 tomcat-solr 以方便之后辨识

    mv apache-tomcat-8.5.75 tomcat-solr
    
  3. 转到 solr/tomcat-solr/conf 目录下,修改 server.xml 配置文件

    cd tomcat-solr/conf/
    vi server.xml
    

    为了防止端口冲突,我们要更改一些内容:

    • 将 Connector 的端口改为 8088

      <Connector port="8088" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />
      
      <Connector executor="tomcatThreadPool"
                     port="8088" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />
      
  4. 执行 bin 目录下的 startup.sh

    sh bin/shartup.sh
    ----
    Using CATALINA_BASE:   /usr/local/solr/tomcat-solr
    Using CATALINA_HOME:   /usr/local/solr/tomcat-solr
    Using CATALINA_TMPDIR: /usr/local/solr/tomcat-solr/temp
    Using JRE_HOME:        /usr/local/java
    Using CLASSPATH:       /usr/local/solr/tomcat-solr/bin/bootstrap.jar:/usr/local/solr/tomcat-solr/bin/tomcat-juli.jar
    Using CATALINA_OPTS:   
    Tomcat started.
    ----
    
  5. 查看一下日志输出

    tail -f logs/catalina.out
    ----
    25-Jan-2022 21:58:43.916 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/solr/tomcat-solr/webapps/host-manager]
    25-Jan-2022 21:58:43.950 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/solr/tomcat-solr/webapps/host-manager] has finished in [35] ms
    25-Jan-2022 21:58:43.951 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/solr/tomcat-solr/webapps/ROOT]
    25-Jan-2022 21:58:43.968 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/solr/tomcat-solr/webapps/ROOT] has finished in [17] ms
    25-Jan-2022 21:58:43.968 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/solr/tomcat-solr/webapps/examples]
    25-Jan-2022 21:58:44.237 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/solr/tomcat-solr/webapps/examples] has finished in [269] ms
    25-Jan-2022 21:58:44.238 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/solr/tomcat-solr/webapps/manager]
    25-Jan-2022 21:58:44.259 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/solr/tomcat-solr/webapps/manager] has finished in [22] ms
    25-Jan-2022 21:58:44.264 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8088"]
    25-Jan-2022 21:58:44.285 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [690] milliseconds
    ----
    

Solr 配置

solr下载地址:下载地址

本来想着利用tomcat来运行solr,但是我惊奇的发现solr的新版本中竟然没有了war包,查看官方文档,可以发现取消了原有的war包:

但是我们配了半天的tomcat也不能白配,于是我们可以将解压后的压缩包中的 server/solr-webapp/webapp 文佳佳复制到 /usr/local/solr/tomcat-solr/webapps/solr下

cp -r server/solr-webapp/webapp /usr/local/solr/tomcat-solr/webapps/solr

然后将一些jar包复制到 WEB-INF/lib下

[root@localhost solr-8.11.0]# cp server/lib/ext /usr/local/solr/tomcat-solr/webapps/solr/WEB-INF/lib/

server/lib/metrics* 开头的5个jar复制到 /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/下

[root@localhost lib]# cp metr* /usr/local/solr/tomcat-solr/webapps/solr/WEB-INF/lib/

将 server/resources/ 下的 log4j.properties (solr8中是log4j2-console.xml 和 log4j2.xml),添加到刚才的 solr 工程中,记得在WEB-INF下创建一个classes目录

[root@localhost resources]# mkdir /usr/local/solr/tomcat-solr/webapps/solr/WEB-INF/classes
[root@localhost resources]# cp log4j* /usr/local/solr/tomcat-solr/webapps/solr/WEB-INF/classes/

然后注释掉的标签和其内容

将server/solr 目录复制到 /use/local/solr 下,并重命名为solrhome

[root@localhost server]# cp -r solr /usr/local/solr/solrhome

然后就是关联solr和solrhome

修改Tomcat中 webapps/solr/WEB-INF下的web.xml

然后我们惊讶地发现,没有关于重定向 solrhome 的地方

我们先将下面内容注释掉:

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>
  </security-constraint>

即这段注释掉即可。

此时开启tomcat即可访问solr服务。

solr8的用户只需要加上这段即可,solr7直接修改“你的solrhome位置”部分为solrhome路径:

  <env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>“你的solrhome位置”</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
  </env-entry>

注意:Tomcat10启动时会报ClassCastException,那是由于Tomcat把Filter修改了来源包,建议用Tomcat8

不过为了保险起见,如果想用原生配置的可以查看官方文档:官方文档

附录

问题1:无法连接到linux服务器的8088端口

观察到上面的logs可以发现服务器的tomcat实际上已经启动成功了,并且占用的是8088端口,但是当我用浏览器访问该端口时,却发现io timeout。初步判断是防火墙的问题。

我们先尝试ping一下服务器:

可以发现网络连接上是没有问题的,然后我们再使用 telnet 测试8088端口:

该端口没有回应,说明可能是防火墙的问题。

这时候还可能会出现一种情况,即 tcp 的连接失败,之前遇到过类似的情况:

但是这里并不是上述情况。当我使用指令

systemctl status firewalld

发现防火墙是开启的

检查端口开放情况

firewall-cmd --list-ports

可以看出没有8088端口,于是我们添加8088端口到防火墙即可

firewall-cmd --zone=public --add-port=8088/tcp --permanent
----
success
----
firewall-cmd --reload
----
success
----

再次访问对应端口,成功。

举报

相关推荐

0 条评论