本文是《win上安装solr》的续篇,win上solr安装#点我#
这次在linux上安装solr,是 jdk8+tomcat8+solr-7.1.0 的组合。这里必须首先声明一下各个主要组件的版本,因为版本不一致可能会导致很多莫名其妙的问题,比如一些类会找不到。
jdk和tomcat的安装不是我们这次的重点,这里不再赘述。
1、下载solr
linux上下载solr还是很方便的,到达目标目录,命令行下载、解压即可:
//下载
sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.1.0/solr-7.1.0.tgz
//解压
sudo tar -xvf solr-7.1.0.tgz
2、安装solr到tomcat
为避免路径说明混乱,先声明solr解压后和tomcat所在的目录都是{HOME_PATH}。
solr解压后的目录结构 HOME_PATH/solr-7.1.0/:
drwxr-xr-x 3 root root 4096 Jan 18 22:43 bin
-rw-r--r-- 1 root root 738474 Oct 13 23:07 CHANGES.txt
drwxr-xr-x 11 root root 4096 Oct 14 00:16 contrib
drwxr-xr-x 4 root root 4096 Jan 18 21:13 dist
drwxr-xr-x 3 root root 4096 Jan 18 21:13 docs
drwxr-xr-x 7 root root 4096 Jan 18 21:13 example
drwxr-xr-x 2 root root 32768 Jan 18 21:13 licenses
-rw-r--r-- 1 root root 12646 Oct 13 22:59 LICENSE.txt
-rw-r--r-- 1 root root 661809 Oct 13 23:07 LUCENE_CHANGES.txt
-rw-r--r-- 1 root root 24914 Oct 13 22:59 NOTICE.txt
-rw-r--r-- 1 root root 7277 Oct 13 22:59 README.txt
drwxr-xr-x 11 root root 4096 Jan 18 21:20 server
我的tomcat是实行单实例单应用、多实例并行运行结构。tomcat实例结构${HOME_PATH}/solr_test/如下:
drwxr-xr-x 2 tomcat tomcat 4096 Jan 18 22:08 cache
drwxr-xr-x 3 tomcat tomcat 4096 Jan 19 16:57 conf
drwxr-xr-x 2 tomcat tomcat 4096 Jan 19 15:55 logs
-rw-r--r-- 1 root root 196 Jan 19 17:40 README.txt
drwxr-xr-x 4 tomcat tomcat 4096 Jan 19 16:18 solrhome
-rwxr-xr-x 1 tomcat tomcat 560 Jan 19 12:19 startenv.sh
drwxr-xr-x 2 tomcat tomcat 4096 Jan 18 22:08 temp
drwxr-xr-x 2 tomcat tomcat 4096 Jan 19 16:30 users
drwxr-xr-x 3 root root 4096 Jan 18 22:08 webapps
drwxr-xr-x 3 tomcat tomcat 4096 Jan 18 22:43 work
如果你是tomcat默认的安装结构也无所谓,本次安装只涉及conf/webspps 这两个目录,和默认的tomcat目录结构是一样的。
具体怎么拷贝文件,这里有一遍blog写的挺好的,我就不重复写了#点我#
需要拷贝主要内容
1)拷贝 ${HOME_PATH}/solr-7.1.0/server/solr-webapp/ 下的webapp文件夹到 ${ HOME_PATH}/solr_test/webaps/ 下。并将webapp重命名,我这里重命名为ROOT。
2)将 ${HOME_PATH}/solr-7.1.0/server/lib/ext/下所有jar包;${HOME_PATH}/solr-7.1.0/server/lib/ 下的gmetric4j-1.0.7.jar、以metrics开头的jar包拷贝到 ${ HOME_PATH}/solr_test/webaps/ROOT/WEB-INF/lib下
3)将 ${HOME_PATH}/solr-7.1.0/server/solr/拷贝到${ HOME_PATH}/solr_test/下,并重命名为solrhome。
4)将 ${HOME_PATH}/solr-7.1.0/server/resources/log4j.properties 拷贝到 ${ HOME_PATH}/solr_test/webapps/ROOT/WEB-INF/classes下,如果没有classes目录则新建一个。
特别注意,tomcat实例的各目录的拥有者和所在的组,需要保证是tomcat,特别是solrhome目录。否则后面在admin页面新建core时需要新建的文件,会因为没有权限写不进去,而导致失败。
还有一些具体文件的权限,起码是755。如果访问时有权限限制时需要注意一下。
附上修改所有者和所在组、文件权限、拷贝文件的命令
//修改所有者
sudo chown -R tomcat:tomcat {xxx目录}
//修改权限
sudo chmod -R 755 {xxx文件或目录}
//拷贝文件夹(带文件夹名)
sudo cp -rf {源目录} {目标目录}
//拷贝文件夹(仅文件夹下所有文件)
sudo cp -rf {源目录}/* {目标目录}
各种xml配置
1)配置solrhome路径
编辑 ${HOME_PATH}/solr_test/webapps/ROOT/WEB-INF/web.xml。找到以下代码,默认是被注释掉的。将 /put/your/solr/home/here 改为刚才新建的solrhome绝对路径。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/home/q/www/solr_test/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
2)配置日志路径
编辑 ${ HOME_PATH}/solr_test/webapps/ROOT/WEB-INF/classes/log4j.properties 文件,修改solr.log=/home/q/www/solr_test/logs。可能你需要新建logs目录。
3、启动tomcat进入管理页面
启动tomcat。访问时注意后面加上index.html
4、配置tomcat用户
有的同学可能会问,上面访问管理员页面直接就进入了,既然是管理页面,都没有账号和密码,真心说不过去。下面我们给tomcat指定url配置上账号和密码。我就以我的目录结构为例:
1)新建角色和用户
在 ${ HOME_PATH}/solr_test/ 下新建users目录,在users目录下新建tomcat-users.xml,内容:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="solr-admin"/>
<user username="{insert your username}" password="{insert your password}" roles="solr-admin"/>
</tomcat-users>
2)引用角色账号配置文件
编辑 ${ HOME_PATH}/solr_test/conf/server.xml。新增GlobalNamingResources节点和Realm节点,具体如下:
<?xml version='1.0' encoding='utf-8'?>
<Server port="18005" shutdown="SHUTDOWN">
//一堆Listener
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="users/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
....
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
....
</Engine>
</Service>
</Server>
3)配置账号适用路径
编辑 ${ HOME_PATH}/solr_test/webapps/ROOT/WEB-INF/web.xml 文件,具体如下:
<web-app>
......
<welcome-file-list>
<welcome-file>admin.html</welcome-file>
</welcome-file-list>
<!-- Get rid of error message -->
//将下面这一块注释掉
<!--<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> -->
//添加如下
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Lockdown</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>solr-admin</role-name>
</auth-constraint>
<security-role>
<role-name>solr-admin</role-name>
</security-role>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr</realm-name>
</login-config>
</web-app>
然后重启tomcat,访问管理页面,这个时候就需要输入账号密码才能进入。
写在最后
新建core、修改schema、post document这些和win的差不多,可以参见文章开头给的链接。