title: Apache solr startup script
body: <p>i have a little issue to take Solr to production. I use Solr 5.3</p>
  
  <p>I have a bash script to start the Solr server. Solr Server should be running as non root user solr. 
  My bash script to run solr server with my config and data folder. </p>
  
  <pre><code>#!/usr/bin/env bash
  
  export SOLR_LOGS_DIR=/home/hybris/solr/log
  export LOG4J_PROPS=/home/hybris/solr/solr/conf/log4j.properties
  export SOLR_PID_DIR=/home/hybris/solr/data
  
  /home/hybris/solr/solr/bin/solr start -d /home/hybris/solr/solr/server -s /home/hybris/solr/solr/conf -p 8983 -m 7g -Dsolr.log.dir=/home/hybris/solr/log -DconfigSetBaseDir=/home/hybris/solr/solr/conf/configsets -DcoreRootDirectory=/home/hybris/solr/data/cores
  </code></pre>
  
  <p>I want to use the solr starup script to do this. 
  On the solr.in.sh i can not found set this variable</p>
  
  <pre><code>DconfigSetBaseDir=/home/hybris/solr/solr/conf/configsets
  DcoreRootDirectory=/home/hybris/solr/data/cores
  </code></pre>
  
  <p>Solr Server is starting as non root user solr, without config and wrong data folder. 
  Can Everyone explain how to use this two variables in solr.in.sh.</p>
  
  <blockquote>
    <p><a href="https://cwiki.apache.org/confluence/display/solr/Taking+Solr+to+Production" rel="nofollow">https://cwiki.apache.org/confluence/display/solr/Taking+Solr+to+Production</a>
    Environment overrides include file</p>
  </blockquote>
  
  <p>now my content from  /etc/default/solr.in.sh</p>
  
  <pre><code># Licensed to the Apache Software Foundation (ASF) under one or more
  # contributor license agreements.  See the NOTICE file distributed with
  # this work for additional information regarding copyright ownership.
  # The ASF licenses this file to You under the Apache License, Version 2.0
  # (the "License"); you may not use this file except in compliance with
  # the License.  You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  # By default the script will use JAVA_HOME to determine which java
  # to use, but you can set a specific path for Solr to use without
  # affecting other Java applications on your server/workstation.
  #SOLR_JAVA_HOME=""
  
  # Increase Java Heap as needed to support your indexing / query needs
  SOLR_HEAP="7g"
  
  # Expert: If you want finer control over memory options, specify them directly
  # Comment out SOLR_HEAP if you are using this though, that takes precedence
  #SOLR_JAVA_MEM="-Xms512m -Xmx512m"
  
  # Enable verbose GC logging
  GC_LOG_OPTS="-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails \
  -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime"
  
  # These GC settings have shown to work well for a number of common Solr workloads
  GC_TUNE="-XX:NewRatio=3 \
  -XX:SurvivorRatio=4 \
  -XX:TargetSurvivorRatio=90 \
  -XX:MaxTenuringThreshold=8 \
  -XX:+UseConcMarkSweepGC \
  -XX:+UseParNewGC \
  -XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 \
  -XX:+CMSScavengeBeforeRemark \
  -XX:PretenureSizeThreshold=64m \
  -XX:+UseCMSInitiatingOccupancyOnly \
  -XX:CMSInitiatingOccupancyFraction=50 \
  -XX:CMSMaxAbortablePrecleanTime=6000 \
  -XX:+CMSParallelRemarkEnabled \
  -XX:+ParallelRefProcEnabled"
  
  # Set the ZooKeeper connection string if using an external ZooKeeper ensemble
  # e.g. host1:2181,host2:2181/chroot
  # Leave empty if not using SolrCloud
  #ZK_HOST=""
  
  # Set the ZooKeeper client timeout (for SolrCloud mode)
  #ZK_CLIENT_TIMEOUT="15000"
  
  # By default the start script uses "localhost"; override the hostname here
  # for production SolrCloud environments to control the hostname exposed to cluster state
  #SOLR_HOST="192.168.1.1"
  
  # By default the start script uses UTC; override the timezone if needed
  #SOLR_TIMEZONE="UTC"
  
  # Set to true to activate the JMX RMI connector to allow remote JMX client applications
  # to monitor the JVM hosting Solr; set to "false" to disable that behavior
  # (false is recommended in production environments)
  ENABLE_REMOTE_JMX_OPTS="false"
  
  # The script will use SOLR_PORT+10000 for the RMI_PORT or you can set it here
  # RMI_PORT=18983
  
  # Anything you add to the SOLR_OPTS variable will be included in the java
  # start command line as-is, in ADDITION to other options. If you specify the
  # -a option on start script, those options will be appended as well. Examples:
  #SOLR_OPTS="$SOLR_OPTS -Dsolr.autoSoftCommit.maxTime=3000"
  #SOLR_OPTS="$SOLR_OPTS -Dsolr.autoCommit.maxTime=60000"
  #SOLR_OPTS="$SOLR_OPTS -Dsolr.clustering.enabled=true"
  SOLR_OPTS="$SOLR_OPTS -DconfigSetBaseDir=/home/hybris/solr/solr/conf/configsets
  SOLR_OPTS="$SOLR_OPTS -DcoreRootDirectory=/home/hybris/solr/data/cores
  
  # Location where the bin/solr script will save PID files for running instances
  # If not set, the script will create PID files in $SOLR_TIP/bin
  SOLR_PID_DIR=/home/hybris/solr/data
  
  # Path to a directory for Solr to store cores and their data. By default, Solr will use server/solr
  # If solr.xml is not stored in ZooKeeper, this directory needs to contain solr.xml
  #SOLR_HOME=/home/hybris/solr/solr/conf
  
  # Solr provides a default Log4J configuration properties file in server/resources
  # however, you may want to customize the log settings and file appender location
  # so you can point the script to use a different log4j.properties file
  LOG4J_PROPS=/home/hybris/solr/solr/conf/log4j.properties
  
  # Location where Solr should write logs to; should agree with the file appender
  # settings in server/resources/log4j.properties
  SOLR_LOGS_DIR=/home/hybris/solr/log
  
  # Sets the port Solr binds to, default is 8983
  #SOLR_PORT=8983
  
  
  
  
  
  # Uncomment to set SSL-related system properties
  # Be sure to update the paths to the correct keystore for your environment
  #SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
  #SOLR_SSL_KEY_STORE_PASSWORD=secret
  #SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks
  #SOLR_SSL_TRUST_STORE_PASSWORD=secret
  #SOLR_SSL_NEED_CLIENT_AUTH=false
  #SOLR_SSL_WANT_CLIENT_AUTH=false
  
  # Uncomment if you want to override previously defined SSL values for HTTP client
  # otherwise keep them commented and the above values will automatically be set for HTTP clients
  #SOLR_SSL_CLIENT_KEY_STORE=
  #SOLR_SSL_CLIENT_KEY_STORE_PASSWORD=
  #SOLR_SSL_CLIENT_TRUST_STORE=
  #SOLR_SSL_CLIENT_TRUST_STORE_PASSWORD=
  
  # Settings for authentication
  #SOLR_AUTHENTICATION_CLIENT_CONFIGURER=
  #SOLR_AUTHENTICATION_OPTS=
  </code></pre>