Solr 日志系统7.4.0部署和迁移到本地,Core Admin 添加新的core报错

文章目录

Solr部署

Docker部署

bash 复制代码
docker run -d -p 8983:8983 --name solr solr:latest
docker run -d -p 8983:8983 -v /opt/solr:/var/solr/data --name solr solr:latest

docker run -d -p 8983:8983 --name solr solr:9.5.0

# 部署并挂载数据到本地
docker run -d -p 8983:8983 -v /opt/solr:/var/solr/data --name solr solr:9.5.0

二进制部署

下载Solr

官网下载地址

历史版本下载地址

解压后文件目录

bash 复制代码
tar xvf solr-8.11.3.tgz
cd solr-8.11.3

关闭错误信息显示(可以不关闭)

vim ./bin/solr.in.sh

bash 复制代码
SOLR_ULIMIT_CHECKS=false

启动Solr

bash 复制代码
./bin/solr start -force  # 使用root用户必须使用-force

访问测试 http://localhost:8983

Tips:

Solr设置账号密码

方法1:(不使用)

进入到solr的数据文件目录,默认状态在在Solr的/var/solr/data下,创建security.json文件

json 复制代码
{
    "authentication": {
        "blockUnknown": true,
        "class": "solr.BasicAuthPlugin",
        "credentials": {
            "solr": "IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="
        }
    },
    "authorization": {
        "class": "solr.RuleBasedAuthorizationPlugin",
        "permissions": [
            {
                "name": "security-edit",
                "role": "admin"
            }
        ],
        "user-role": {
            "solr": "admin"
        }
    }
}

官方默认密码是SolrRocks

上面设置后的密码是123456

自定义密需要手动去生成sha256(password+salt) hash密码

Java生成密码的代码

pom.xml

xml 复制代码
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.directory.studio/org.apache.commons.codec -->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.15</version>
        </dependency>
    </dependencies>

GenerateAuthorizationAuthentication.java

java 复制代码
package eace.solr;

import org.apache.commons.codec.binary.Base64;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Random;


public class GenerateAuthorizationAuthentication {
    public static void main(String[] args) {
        //密码
        String password = "123456";

        MessageDigest digest; //提供了消息摘要算法(如SHA-1或SHA-256)的功能
        try {
            digest = MessageDigest.getInstance("SHA-256"); //使用SHA-256
            final SecureRandom secureRandom = new SecureRandom(); //构造一个实现默认随机数算法的安全随机数生成器
            byte[] salt = new byte[32]; //创建一个字节类型
            secureRandom.nextBytes(salt);  //生成生成指定数量的随机字节到salt中
            digest.reset(); //将摘要重置以供进一步使用。
            digest.update(salt); //使用指定的字节数组更新摘要。
            byte[] btPass = digest.digest(password.getBytes(StandardCharsets.UTF_8));//使用给定的字符集将此字符串编码为字节序列,并将结果存储在新的字节数组中。

            System.out.println(Base64.encodeBase64String(btPass) + "" + Base64.encodeBase64String(salt));
        } catch (NoSuchAlgorithmException e) {
            System.err.println("Unknown algorithm:" + e.getMessage());
        }
    }
}

方法2:

vim server/etc/user.properties创建用户账号密码

properties 复制代码
#
# 这个文件定义用户名,密码和角色  
#
# 格式如下:<username>: <password>[,<rolename> ...]
#用户名:admin 密码:123!@#qwe 角色:admin 自定义与web.xml中role-name保持一致,可以有多个角色
admin:123!@#qwe,admin

vim server/contexts/solr-jetty-context.xml添加权限验证

xml 复制代码
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath"><Property name="hostContext" default="/solr"/></Set>
  <Set name="war"><Property name="jetty.base"/>/solr-webapp/webapp</Set>
  <Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/webdefault.xml</Set>
  <Set name="extractWAR">false</Set>

  <!-- 配置账号密码 -->
  <Get name="securityHandler">
    <Set name="loginService">
      <New class="org.eclipse.jetty.security.HashLoginService">
        <Set name="name">verify?name</Set>
        <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/user.properties</Set>
      </New>
    </Set>
  </Get>

</Configure>

vim server/solr-webapp/webapp/WEB-INF/web.xml修改web.xml添加权限拦截

xml 复制代码
  <!-- 以下添加权限拦截 -->
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>solr</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
         <auth-constraint>
          <!-- 配置角色 -->
           <role-name>admin</role-name>
         </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>solr admin</realm-name>
  </login-config>


</web-app>

添加在文件最后 </web-app> 之前增加即可

配置完成,重启服务,访问后提示出入账号密码!

参考资料:
solr 配置用户名密码以及代码账号密码连接

Core Admin 添加新的core报错

提示缺少配置文件:Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/opt/solr-8.11.3/server/solr/new_core'

复制/server/solr/configsets/_default/conf/下的文件到要创建的core的目录中

bash 复制代码
cp -r solr-8.11.3/server/solr/configsets/_default/conf/* solr-8.11.3/server/solr/new_core/

Solr数据迁移

2个重要文件

当前版本是7.4.0,进入到Solr的server/solr/中,备份出来Solr原配置文件信息和Solr原数据文件

可以看到真实数据不在solr-7.4.0/server/solr/procore文件中,在/mnt/solr/data/prodata/,我们把配置文件procore/mnt/solr/data/prodata/数据文件夹复制下来

在新的Solr中

bash 复制代码
cd solr-8.11.3/server/solr

创建新的core文件夹

bash 复制代码
mkdir procore

复制旧文件的procore/conf文件夹到新服务中的procore

复制模板文件到procore文件中

bash 复制代码
# cp -r /opt/solr7.4.0/server/solr/procore/conf  /opt/solr-8.11.3/server/solr/procore/
cp -r ./configsets/_default/conf ./procore/

复制旧文件的原数据文件到新的Solr中

这里可以自己指定数据位置,自己指定的时候创建时填写指定的位置即可

bash 复制代码
# 复制并重命名为data
cp -r /mnt/solr/data/prodata /opt/solr-8.11.3/server/solr/procore/data

此时在当前core下有2个文件夹,一个是conf,一个是data

进入web页面中创建新的core

  • name:当前Core的名称,可随意
  • instanceDir:当前Core的文件路径,默认创建路径实在server/solr下,这个路径是solr的家目录
  • dataDir:Core的文件位置,可以自定义位置
  • config:默认路径在当前Core的conf文件中
  • schema:默认路径在当前Core的conf文件中,不建议修改,映射的文件为conf/managed-schema
相关推荐
火龙kess1 小时前
使用FreeNAS软件部署ISCSI的SAN架构存储(IP-SAN)练习题
linux·运维·服务器·网络·windows·tcp/ip·架构
huapiaoy1 小时前
JavaSE---String(含一些源码)
java·linux·前端
云计算DevOps-韩老师1 小时前
【网络云计算】2024第52周-每日【2024/12/23】小测-理论&实操-解析
linux·运维·服务器·开发语言·网络·云计算·perl
☆凡尘清心☆2 小时前
CentOS-stream-9安装ansible
linux·centos·ansible
得物技术2 小时前
Java程序中的潜在危机: 深入探讨NullPointerException|得物技术
linux·javascript
码农君莫笑2 小时前
Blazor项目中使用EF读写 SQLite 数据库
linux·数据库·sqlite·c#·.netcore·人机交互·visual studio
无为之士3 小时前
Linux自动备份Mysql数据库
linux·数据库·mysql
岑梓铭3 小时前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
努力学习的小廉3 小时前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei3 小时前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper