Here, solr runs with tomcat, for solr6+, tomcat8+&jdk8+ is required
1. Download the required software
Solr6.1.0、jdk1.8.0_102、apache-tomcat-8.5.5
2. Configure the jdk that Tomcat runs on
Edit tomcat's startup script bin/startup.bat
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_102
3. Configure the deployment file solr.xml
Edit the file in the tomcat directory ( if not, create a new one ): conf\Catalina\localhost\solr.xml
<Context path="/solr" docBase="D:\develop\solr\webapp6.1.0" reloadable="false" crossContext="true"> <Environment name="solr/home" type="java.lang.String" value="D:\develop\solr\home" override="true"/> </Context>in:
- path: project access path, such as http://localhost/ solr /
- docBase: Solr's web project path
- Environment: The solr/home variable specifies the directory of solr
- If you don't do this, you need to modify the web.xml file of the solr project and enable the env-entry configuration in it. Obviously, this method has fewer modifications to solr and is better.
4. Configure the solr/home directory
Create the required solr/home directory according to the previous configuration, such as the D:\develop\solr\home directory above
Copy all files under solr-6.1.0\server\solr to D:\develop\solr\ home
5. Verify
At this point, the solr environment is basically completed, start tomcat, and enter the url verification:
http://localhost:8080/solr/index.html
6. Anomalies
1) Missing metrics-* related jar packages
19-Apr-2017 17:08:43.718 严重 [localhost-startStop-2] org.apache.catalina.core.StandardContext.filterStart Exception starting filter SolrRequestFilter java.lang.NoClassDefFoundError: com/codahale/metrics/MetricSet at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) at java.lang.Class.getConstructor0(Class.java:3075) at java.lang.Class.newInstance(Class.java:412) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4572) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5215) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:596) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1805) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.MetricSet at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) ... 20 moreYou can copy the relevant metrics-* packages from server/lib/ in the solr source directory to the lib directory of the web
2) The log related jar package is missing
19-Apr-2017 17:22:03.890 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter SolrRequestFilter java.lang.NoClassDefFoundError: Failed to initialize Apache Solr: Could not find necessary SLF4j logging jars. If using Jetty, the SLF4j logging jars need to go in the jetty lib/ext directory. For other containers, the corresponding directory should be used. For more information, see: http://wiki.apache.org/solr/SolrLogging at org.apache.solr.servlet.CheckLoggingConfiguration.check(CheckLoggingConfiguration.java:27) at org.apache.solr.servlet.BaseSolrFilter.<clinit>(BaseSolrFilter.java:30) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4572) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5215) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:596) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1805) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
You can copy the log related jar package from server/lib/ext in the solr source directory to the lib directory of the web
3) Access Denied 403
HTTP Status 403 - Access to the requested resource has been denied
Comment out the section of the < security-constraint > element in web.xml ( restricting access to solr resources, you can access it if you comment it out ).