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
相关推荐
饮啦冰美式20 分钟前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu
wowocpp20 分钟前
ubuntu 22.04 server 安装 和 初始化 LTS
linux·运维·ubuntu
Huaqiwill22 分钟前
Ubuntun搭建并行计算环境
linux·云计算
wclass-zhengge24 分钟前
Netty篇(入门编程)
java·linux·服务器
Lign1731426 分钟前
ubuntu unrar解压 中文文件名异常问题解决
linux·运维·ubuntu
vip4511 小时前
Linux 经典面试八股文
linux
大霞上仙1 小时前
Ubuntu系统电脑没有WiFi适配器
linux·运维·电脑
孤客网络科技工作室2 小时前
VMware 虚拟机使用教程及 Kali Linux 安装指南
linux·虚拟机·kali linux
颇有几分姿色3 小时前
深入理解 Linux 内存管理:free 命令详解
linux·运维·服务器
AndyFrank4 小时前
mac crontab 不能使用问题简记
linux·运维·macos