How to start Solr automatically?

后端 未结 8 547
深忆病人
深忆病人 2020-11-27 10:07

At the moment I have to go to /usr/java/apache-solr-1.4.0/example and then do:

java -jar start.jar

How do I get this to start

相关标签:
8条回答
  • 2020-11-27 10:50

    init.d/solr script that's tested on Centos 6/Amazon Linux. It wraps solr's native CLI.

    #!/bin/bash
    # description: Starts and stops Solr production
    
    
    PIDFILE=/var/run/solr.pid
    SOLR_HOME=/usr/share/solr
    START_COMMAND="$SOLR_HOME/bin/solr start -p 8984 -noprompt -m 1g"
    NAME="Solr"
    
    
    start() {
      echo  "Starting $NAME"
      if [ -f $PIDFILE ]; then
        echo -n "$PIDFILE exists. $NAME may be running."
      else
        str=`$START_COMMAND`
        pid=`echo $str | grep -o "pid=[0-9]*" | grep -o "[0-9]*"`
        if [ "$pid" == "" ];
        then
          echo "[FATAL ERROR] Failed to extract pid. Exiting!"
          exit 1
        fi
        echo $pid > $PIDFILE
      fi
      return 0
    }
    
    
    case "$1" in
      start)
        start
      ;;
      stop)
        echo "Stopping $NAME .."
        $SOLR_HOME/bin/solr stop
        rm -f $PIDFILE
      ;;
      status)
        $SOLR_HOME/bin/solr status
      ;;
      restart)
        $0 stop
        #sleep 2
        $0 start
      ;;
    
      *)
        echo "Usage: $0 (start | stop | restart | status)"
        exit 1
        ;;
    
    esac
    exit $?
    
    0 讨论(0)
  • 2020-11-27 10:51

    As you're on a shared Linux box, you'll have to ask the system administrator to do the following, probably.

    Create a startup script in /etc/init.d/solr.

    Copy this code, my Solr startup script, into that file:

    #!/bin/sh
    
    # Prerequisites:
    # 1. Solr needs to be installed at /usr/local/solr/example
    # 2. daemon needs to be installed
    # 3. Script needs to be executed by root
    
    # This script will launch Solr in a mode that will automatically respawn if it
    # crashes. Output will be sent to /var/log/solr/solr.log. A PID file will be
    # created in the standard location.
    
    start () {
        echo -n "Starting solr..."
    
        # Start daemon
        daemon --chdir='/usr/local/solr/example' --command "java -jar start.jar" --respawn --output=/var/log/solr/solr.log --name=solr --verbose
    
        RETVAL=$?
        if [ $RETVAL = 0 ]
        then
            echo "done."
        else
            echo "failed. See error code for more information."
        fi
        return $RETVAL
    }
    
    stop () {
        # Stop daemon
        echo -n "Stopping solr..."
    
        daemon --stop --name=solr  --verbose
        RETVAL=$?
    
        if [ $RETVAL = 0 ]
        then
            echo "Done."
        else
            echo "Failed. See error code for more information."
        fi
        return $RETVAL
    }
    
    
    restart () {
        daemon --restart --name=solr  --verbose
    }
    
    
    status () {
        # Report on the status of the daemon
        daemon --running --verbose --name=solr
        return $?
    }
    
    
    case "$1" in
        start)
            start
        ;;
        status)
            status
        ;;
        stop)
            stop
        ;;
        restart)
            restart
        ;;
        *)
            echo $"Usage: solr {start|status|stop|restart}"
            exit 3
        ;;
    esac
    
    exit $RETVAL
    

    Then run:

    chkconfig --add solr

    Or (on Ubuntu):

    update-rc.d solr defaults

    ... or, if your Linux distribution doesn't have chkconfig (or update-rc.d), link /etc/init.d/solr to /etc/rc3.d/S99solr and /etc/rc5.d/S99solr and /etc/rc3.d/K01solr and /etc/rc5.d/K01solr:

    % ln -s /etc/init.d/solr /etc/rc3.d/S99solr
    
    % ln -s /etc/init.d/solr /etc/rc5.d/S99solr
    
    % ln -s /etc/init.d/solr /etc/rc3.d/K01solr
    
    % ln -s /etc/init.d/solr /etc/rc5.d/K01solr
    

    Now on reboot Solr will startup in run levels 3 and 5 (console with network & full GUI).

    To start solr manually run:

    % /etc/init.d/solr start
    
    0 讨论(0)
提交回复
热议问题