Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to start Solr automatically?

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 automatically on boot?

I'm on a shared Linux server.

like image 421
bluedaniel Avatar asked Jan 27 '10 22:01

bluedaniel


People also ask

How do I start Solr from command prompt?

If you are running Windows, you can start Solr by running bin\solr. cmd instead. This will start Solr in the background, listening on port 8983. When you start Solr in the background, the script will wait to make sure Solr starts correctly before returning to the command line prompt.

How do I start Solr in standalone mode?

Using an External Standalone Server For the installation steps, see the Installation section in Multiple Solr Version Support. # ./bin/solr start -p 8983 Waiting up to 30 seconds to see Solr running on port 8983 [/] Started Solr server on port 8983 (pid=23092). Happy searching!


2 Answers

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 
like image 123
SuperMagic Avatar answered Sep 26 '22 08:09

SuperMagic


If you have root access to your machine, there are a number of ways to do this based on your system's initialization flow (init scripts, systemd, etc.)

But if you don't have root, cron has a clean and consistent way to execute programs upon reboot.

First, find out where java is located on your machine. The command below will tell you where it is:

$ which java 

Then, stick the following code into a shell script, replacing the java path below (/usr/bin) with the path you got from the above command.

#!/bin/bash  cd /usr/java/apache-solr-1.4.0/example /usr/bin/java -jar start.jar 

You can save this script in some location (e.g., $HOME) as start.sh. Give it world execute permission (to simplify) by running the following command:

$ chmod og+x start.sh 

Now, test the script and ensure that it works correctly from the command line.

$ ./start.sh 

If all works well, you need to add it to one of your machine's startup scripts. The simplest way to do this is to add the following line to the end of /etc/rc.local.

# ... snip contents of rc.local ... # Start Solr upon boot. /home/somedir/start.sh 

Alternatively, if you don't have permission to edit rc.local, then you can add it to your user crontab as so. First type the following on the commandline:

$ crontab -e 

This will bring up an editor. Add the following line to it:

@reboot /home/somedir/start.sh 

If your Linux system supports it (which it usually does), this will ensure that your script is run upon startup.

If I don't have any typos above, it should work out well for you. Let me know how it goes.

like image 43
0xfe Avatar answered Sep 22 '22 08:09

0xfe