Linux-arm离线Tomcat安装solr及国产数据库配置
一、环境信息确认
系统架构:aarch64 (ARM64)
操作系统:Linux
操作用户:test (有sudo权限)
服务IP:192.168.172.131
JDK路径:/home/test/jdk1.8.0_202
Solr安装路径:/home/test/Tomcat_solr8
Solr访问端口:8081
数据库:KingbaseES V8
数据库IP:192.168.172.133:54321
数据库名:bdtestdb
数据库账号:kingbase_test
数据库密码:ReRMcMQHG
二、准备工作
1. 下载所需文件(需要提前在有网络的机器下载)
需要下载以下文件(aarch64版本):
- `solr-8.11.3.tgz`
- `apache-tomcat-9.0.xx.tar.gz`
- `ik-analyzer-8.5.0.jar`
- `mysql-connector-java-8.0.xx.jar`(Kingbase兼容MySQL驱动)
- Kingbase JDBC驱动(联系金仓获取aarch64版本)
2. 创建目录结构
切换到test用户
su - test
创建安装目录
mkdir -p /home/test/Tomcat_solr8
mkdir -p /home/test/solr_packages
三、安装配置Tomcat
1. 解压Tomcat
cd /home/test/solr_packages
解压Tomcat(将实际包名替换)
tar -xzf apache-tomcat-9.0.117.tar.gz
mv apache-tomcat-9.0.117 .. /home/test/Tomcat_solr8/
2. 配置Tomcat环境变量
创建setenv.sh
cat > /home/test/Tomcat_solr8/bin/setenv.sh << 'EOF'
export JAVA_HOME=/home/test/jdk1.8.0_202
export JRE_HOME=/home/test/jdk1.8.0_202/jre
export CATALINA_HOME=/home/test/Tomcat_solr8
export CATALINA_OPTS="-Xms1024m -Xmx2048m -Dsolr.solr.home=/home/test/Tomcat_solr8/solr_home"
EOF
chmod +x /home/test/Tomcat_solr8/bin/setenv.sh
3. 修改Tomcat端口为8081
备份server.xml
cp /home/test/Tomcat_solr8/conf/server.xml /home/test/Tomcat_solr8/conf/server.xml.bak
修改端口
sed -i 's/port="8080"/port="8081"/g' /home/test/Tomcat_solr8/conf/server.xml
四、安装配置Solr
1. 解压Solr
cd /home/test/solr_packages
tar -xzf solr-8.11.3.tgz
2. 创建Solr Home目录
创建solr home目录
mkdir -p /home/test/Tomcat_solr8/solr_home
复制solr配置文件
cp -r /home/test/solr_packages/solr-8.11.3/server/solr/* /home/test/Tomcat_solr8/solr_home/
3. 配置Solr Web应用
创建solr webapp目录
mkdir -p /home/test/Tomcat_solr8/webapps/solr
mkdir -p /home/test/Tomcat_solr8/webapps/solr/WEB-INF/classes/
复制solr webapp文件
cp -r /home/test/solr_packages/solr-8.11.3/server/solr-webapp/webapp/* /home/test/Tomcat_solr8/webapps/solr/
复制相关jar包
cp /home/test/solr_packages/solr-8.11.3/server/lib/ext/*.jar /home/test/Tomcat_solr8/webapps/solr/WEB-INF/lib/
cp /home/test/solr_packages/solr-8.11.3/server/lib/*.jar /home/test/Tomcat_solr8/webapps/solr/WEB-INF/lib/
复制log4j配置
cp /home/test/solr_packages/solr-8.11.3/server/resources/log4j2.xml /home/test/Tomcat_solr8/webapps/solr/WEB-INF/classes/
4. 创建Solr web.xml
cat > /home/test/Tomcat_solr8/webapps/solr/WEB-INF/web.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/home/test/Tomcat_solr8/solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<filter>
<filter-name>SolrRequestFilter</filter-name>
<filter-class>org.apache.solr.servlet.SolrDispatchFilter</filter-class>
<init-param>
<param-name>excludePatterns</param-name>
<param-value>/css/.+,/js/.+,/img/.+,/tpl/.+,/admin/></param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SolrRequestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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 Console</realm-name>
</login-config>
</web-app>
EOF
五、配置Solr安全认证
1. 配置Tomcat用户认证
备份原文件
cp /home/test/Tomcat_solr8/conf/tomcat-users.xml /home/test/Tomcat_solr8/conf/tomcat-users.xml_20260811_zkm
配置认证用户
cat > /home/test/Tomcat_solr8/conf/tomcat-users.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!-- 新增Solr安全配置需要的admin角色 -->
<role rolename="admin" />
<role rolename="admin" />
<!-- 用户同时拥有tomcat容器角色admin + solr安全插件角色admin -->
<user username="admin" password="Admin2024" roles="admin,admin" />
</tomcat-users>
EOF
server.xml
<!-- zkm 2026-05-11 注释
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/> -->
<!-- zkm 2026-05-11 新增relaxedPathChars、relaxedQueryChars-->
<Connector port="8081"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
relaxedPathChars="[]|{}"
relaxedQueryChars="[]|{}"
URIEncoding="UTF-8"/>
2. 配置Solr安全认证
创建security.json
cat > /home/test/Tomcat_solr8/solr_home/security.json << 'EOF'
{
"authentication":{
"blockUnknown": true,
"class":"solr.BasicAuthPlugin",
"credentials":{
"admin":"8/iefrx9E4252//u4/84gDdWqxGGgsdI/ArxjrKCLm0= eemqSK/CkUN4tt+0uXMF5bJi59tUgQ7gEFtoyVY1nzk="
}
},
"authorization":{
"class":"solr.RuleBasedAuthorizationPlugin",
"permissions":[
{
"name":"security-edit",
"role":"admin"
}
],
"user-role":{
"admin":"admin"
}
}
}
EOF
生成密码的脚本:
如需生成新密码,可以使用以下命令
用 Python 一行算(Linux aarch64 自带 python3):
python3 - <<'PY'
import os,hashlib,base64
pw="Admin2024".encode()
salt=os.urandom(32)
h=hashlib.sha256(salt+pw).digest()
h=hashlib.sha256(h).digest()
print(base64.b64encode(h).decode()+" "+base64.b64encode(salt).decode())
PY
六、配置IK分词器
复制IK分词器jar包
cp /home/test/solr_packages/ik-analyzer-8.5.0.jar /home/test/Tomcat_solr8/webapps/solr/WEB-INF/lib/
创建IK分词器配置目录
mkdir -p /home/test/Tomcat_solr8/webapps/solr/WEB-INF/classes
创建IK分词器配置文件:
cat > /home/test/Tomcat_solr8/webapps/solr/WEB-INF/classes/IKAnalyzer.cfg.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<entry key="ext_dict">ext.dic;</entry>
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>
EOF
七、配置Kingbase数据库连接
1. 准备数据库驱动
将Kingbase JDBC驱动复制到solr lib目录
cp /home/test/solr_packages/kingbase8-*.jar /home/test/Tomcat_solr8/webapps/solr/WEB-INF/lib/
# 复制dataimporthandler核心jar
cp /home/test/solr_packages/solr-8.11.3/dist/solr-dataimporthandler*.jar /home/test/Tomcat_solr8/webapps/solr/WEB-INF/lib/
2. 创建数据导入配置
创建核心配置目录(以创建core为例)
mkdir -p /home/test/Tomcat_solr8/solr_home/kingbase_core/conf
创建solrconfig.xml
cat > /home/test/Tomcat_solr8/solr_home/kingbase_core/conf/solrconfig.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<luceneMatchVersion>8.11.3</luceneMatchVersion>
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/dataimporthandler/lib/" regex=".*\.jar" />
<dataDir>${solr.data.dir:}</dataDir>
<directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
<indexConfig>
<lockType>${solr.lock.type:native}</lockType>
</indexConfig>
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">_text_</str>
</lst>
</requestHandler>
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
<requestHandler name="/update" class="solr.UpdateRequestHandler"/>
<admin>
<defaultQuery>*:*</defaultQuery>
</admin>
</config>
EOF
创建数据库连接配置
cat > /home/test/Tomcat_solr8/solr_home/kingbase_core/conf/db-data-config.xml << 'EOF'
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.kingbase8.Driver"
url="jdbc:kingbase8://192.168.172.133:54321/bdtestdb"
user="kingbase_test"
password="ReRMcMQHG"/>
<document>
<entity name="demo"
query="SELECT id, name, content, update_time FROM demo_table"
deltaQuery="SELECT id FROM demo_table WHERE update_time > '${dataimporter.last_index_time}'"
deltaImportQuery="SELECT id, name, content FROM demo_table WHERE id='${dataimporter.delta.id}'">
<field column="id" name="id"/>
<field column="name" name="name"/>
<field column="content" name="content"/>
</entity>
</document>
</dataConfig>
EOF
创建schema配置
cat > /home/test/Tomcat_solr8/solr_home/kingbase_core/conf/managed-schema << 'EOF'
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="kingbase_core" version="1.6">
<field name="_version_" type="plong" indexed="true" stored="true"/>
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="name" type="text_ik" indexed="true" stored="true"/>
<field name="content" type="text_ik" indexed="true" stored="true"/>
<uniqueKey>id</uniqueKey>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true"/>
<fieldType name="plong" class="solr.LongPointField" docValues="true"/>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/>
</analyzer>
</fieldType>
</schema>
EOF
创建core.properties
cat > /home/test/Tomcat_solr8/solr_home/kingbase_core/core.properties << 'EOF'
name=kingbase_core
config=solrconfig.xml
schema=managed-schema
dataDir=data
EOF
八、设置权限和启动服务
1. 设置文件权限
设置所有文件属主
sudo chown -R test:test /home/test/Tomcat_solr8
赋予执行权限
chmod +x /home/test/Tomcat_solr8/bin/*.sh
2. 开放防火墙端口
开放8081端口(需要sudo权限)
sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent
sudo firewall-cmd --reload
或者使用iptables
sudo iptables -A INPUT -p tcp --dport 8081 -j ACCEPT
3. 创建启动脚本
cat > /home/test/start_solr.sh << 'EOF'
#!/bin/
export JAVA_HOME=/home/test/jdk1.8.0_202
export JRE_HOME=/home/test/jdk1.8.0_202/jre
export CATALINA_HOME=/home/test/Tomcat_solr8
启动Tomcat
$CATALINA_HOME/bin/startup.sh
echo "Solr服务启动中..."
sleep 5
检查进程
if ps aux | grep -v grep | grep Tomcat_solr8 > /dev/null; then
echo "Solr服务启动成功!"
echo "访问地址: http://192.168.172.131:8081/solr"
echo "用户名: admin"
echo "密码: Admin2026"
else
echo "Solr服务启动失败,请检查日志: $CATALINA_HOME/logs/catalina.out"
fi
EOF
chmod +x /home/test/start_solr.sh
4. 启动服务
以test用户执行
su - test
/home/test/start_solr.sh
5. 检查服务状态
查看日志
tail -f /home/test/Tomcat_solr8/logs/catalina.out
检查端口
netstat -anp | grep 8081
测试访问
curl -u admin:Admin2024 http://192.168.172.131:8081/solr/
九、配置系统服务(可选)
创建systemd服务文件(需要sudo权限)
sudo -c 'cat > /etc/systemd/system/solr.service << EOF
[Unit]
Description=Apache Solr Service
After=network.target
[Service]
Type=forking
User=test
Group=test
Environment="JAVA_HOME=/home/test/jdk1.8.0_202"
Environment="JRE_HOME=/home/test/jdk1.8.0_202/jre"
Environment="CATALINA_HOME=/home/test/Tomcat_solr8"
ExecStart=/home/test/Tomcat_solr8/bin/startup.sh
ExecStop=/home/test/Tomcat_solr8/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF'
重载systemd
sudo systemctl daemon-reload
启用并启动服务
sudo systemctl enable solr.service
sudo systemctl start solr.service
十、安全加固建议
1. **修改默认密码**:首次登录后立即修改admin密码
2. **配置HTTPS**:建议配置SSL证书实现HTTPS访问
3. **IP限制**:在防火墙层面限制可访问的IP范围
4. **定期备份**:定期备份solr_home目录
5. **日志监控**:配置日志轮转和监控
十一、验证测试
访问 http://192.168.172.131:8081/solr 输入认证信息:
- 用户名:admin
- 密码:Admin2024
成功登录后可看到Solr管理界面,并可管理core和进行数据导入操作。

浙公网安备 33010602011771号